2016-07-15 3 views
0

В настоящее время я переношу на richfaces 4.5, JSF2.2, а также добавляю firstfaces-6.0 (для другой функции, которая не поддерживается богатыми интерфейсами) Я использую Tomcat 8 для сервера.rich: fileUpload stackoverflow error at AjaxOutputTracker.getAjaxOutputs

В файле Xhtml, я просто положил простой код ниже просто чтобы проверить это:

<rich:fileUpload id="upload" 
    fileUploadListener="#{cc.attrs.beanPage.uploadListener}" 
    maxFilesQuantity="1" 
    acceptedTypes=".ppt, .pptx, .doc, .docx, .txt, .xls, .xlsx, .zip, .pdf" /> 

и на uploadListener я только положить некоторые вещи только для отладки

public void uploadListener(FileUploadEvent event) { 
    this.item = event.getUploadedFile(); 
    String projectFileName = this.item.getName(); 
} 

Когда я отлаживать I см. его до слушателя и конец без ошибок. Но я получаю эту ошибку ниже после того, как слушатель закончил:

java.lang.StackOverflowError 
    at javax.faces.component.UIComponentBase.findComponent(UIComponentBase.java:679) 
    at javax.faces.component.UIComponentBase.findComponent(UIComponentBase.java:643) 
    at org.richfaces.context.AjaxOutputTracker.getAjaxOutputs(AjaxOutputTracker.java:86) 
    at org.richfaces.context.AjaxOutputTracker.getAjaxOutputs(AjaxOutputTracker.java:91) 
    at org.richfaces.context.AjaxOutputTracker.getAjaxOutputs(AjaxOutputTracker.java:91).. keep repeating 
Jul 15, 2016 4:09:36 PM org.primefaces.application.exceptionhandler.PrimeExceptionHandler logException 
SEVERE: null 
java.lang.StackOverflowError 
    at javax.faces.component.UIComponentBase.findComponent(UIComponentBase.java:679) 
    at javax.faces.component.UIComponentBase.findComponent(UIComponentBase.java:643) 
    at org.richfaces.context.AjaxOutputTracker.getAjaxOutputs(AjaxOutputTracker.java:86) 
    at org.richfaces.context.AjaxOutputTracker.getAjaxOutputs(AjaxOutputTracker.java:91) 
    at org.richfaces.context.AjaxOutputTracker.getAjaxOutputs(AjaxOutputTracker.java:91)... keep repeating 

Jul 15, 2016 4:09:38 PM org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/PORTAL].[Faces Servlet] invoke 
SEVERE: Servlet.service() for servlet [Faces Servlet] in context with path [/PORTAL] threw exception [Servlet execution threw an exception] with root cause 
java.lang.StackOverflowError 
    at javax.faces.component.UIComponentBase.findComponent(UIComponentBase.java:679) 
    at javax.faces.component.UIComponentBase.findComponent(UIComponentBase.java:643) 
    at org.richfaces.context.AjaxOutputTracker.getAjaxOutputs(AjaxOutputTracker.java:86) 
    at org.richfaces.context.AjaxOutputTracker.getAjaxOutputs(AjaxOutputTracker.java:91) 
    at org.richfaces.context.AjaxOutputTracker.getAjaxOutputs(AjaxOutputTracker.java:91)..... and so on keep repeating 

Ранее его работы в старой версии .. Любая идея о том, что я делаю не так? Я подозреваю, что есть такая конфигурация, которую я пропустил.

+0

А что такое «старая версия»? Без PF или со старыми RF и JSF? –

+0

Без PF и со старыми RF и JSF. – leafy

+0

И вы решили конфликт версий jQuery (потому что всегда есть такой конфликт)? КСТАТИ. Это выглядит подозрительно, SOE в findComponent. –

ответ

0

После некоторых испытаний здесь и там я действительно могу это исправить. Исправить просто положить limitRender = "true", и это исправить эту проблему.

Это может быть очень простая проблема, но я действительно не понимаю, почему это необходимо, поскольку я не помещаю рендеринг в этот файл. Я мог бы пропустить что-то в форме. Редактирование: после некоторой проверки я обнаружил, что на странице есть ajaxRendered = true, но я не знаю, почему это дает рекурсивную проблему переполнения, поскольку она не отображает друг друга. Возможно, я что-то пропустил.

Смежные вопросы