Richfaces fileuploader nullpointer firefox - PullRequest
       18

Richfaces fileuploader nullpointer firefox

0 голосов
/ 10 октября 2018

С появлением Firefox 62 мой существующий загрузчик файлов RichFaces внезапно выбрасывает нулевые указатели при попытке декодировать загруженный файл.Это использует Richfaces 3.3.3 в среде JBoss 5.1.Я пытался загрузить разные типы изображений безрезультатно.Также следует отметить, что эта проблема возникает только в Firefox 62 и более поздних версиях. Все другие браузеры работают нормально.

Stacktrace:

Caused by: java.lang.NullPointerException
at org.richfaces.renderkit.FileUploadRendererBase.doDecode(FileUploadRendererBase.java:139)
at org.ajax4jsf.renderkit.RendererBase.decode(RendererBase.java:75)
at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:789)
at javax.faces.component.UIInput.decode(UIInput.java:725)
at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1031)
at javax.faces.component.UIInput.processDecodes(UIInput.java:639)
at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1026)
at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1026)
at javax.faces.component.UIForm.processDecodes(UIForm.java:209)
at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1026)
at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1026)
at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1026)
at javax.faces.component.UIInput.processDecodes(UIInput.java:639)
at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1026)
at org.ajax4jsf.component.AjaxViewRoot$1.invokeContextCallback(AjaxViewRoot.java:400)
at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:240)
at org.ajax4jsf.component.AjaxViewRoot.processDecodes(AjaxViewRoot.java:417)
at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)

Fileuploader xhtml:

<rich:fileUpload fileUploadListener="#{manageAttachmentContentItemAction.listener}"
maxFilesQuantity="1" 
id="upload" immediateUpload="true"
uploadControlLabel="#{messagesAction.getMessage('manage.content.item.action.upload.add_label')}" addControlLabel="#{messagesAction.getMessage('manage.content.item.action.upload.add_label')}"
progressLabel="#{messagesAction.getMessage('manage.content.item.action.upload.progress_label')}" 
disabled="#{manageAttachmentContentItemAction.previewItem != null}" 
listHeight="60px" listWidth="350px"
allowFlash="false" required="true" noDuplicate="true">
<a4j:support  event="onuploadcomplete" reRender="image_preview,uploadFunction" />
<a4j:support  event="onerror" action="#{manageAttachmentContentItemAction.onErrorOccurred}" reRender="uploadFunction" />
<a4j:support  event="ontyperejected" action="#{manageAttachmentContentItemAction.onTypeRejected}" reRender="uploadFunction" />
<a4j:support  event="onsizerejected" action="#{manageAttachmentContentItemAction.onFileSizeRejected}" reRender="uploadFunction"  />

Любые советы будут с благодарностью

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Вы можете работать с NPE примерно так.

1) Переопределить FileUploadRenderer

public class CustomFileUploadRenderer extends FileUploadRenderer {

@Override
protected void doDecode(FacesContext context, UIComponent component) {
    try {
        super.doDecode(context, component);
    } catch (NullPointerException e) {
        LOGGER.info("double decode error ignored", e);
    }
}

2) добавить пользовательский класс в face-config.xml

    <render-kit>
     <renderer>
          <component-family>org.richfaces.component.FileUpload</component-family>
          <renderer-type>org.richfaces.renderkit.html.FileUploadRenderer</renderer-type>
          <renderer-class>com.nnn.web.jsf.component.CustomFileUploadRenderer</renderer-class>
     </renderer>
</render-kit>

Это работает для меня.

P / s Я не уверен, но эта проблема идет от вопроса https://bugzilla.mozilla.org/show_bug.cgi?id=583351

0 голосов
/ 07 декабря 2018

Существует способ обойти эту проблему, мы можем окружить код, генерирующий это исключение, с помощью try / catch, и все будет работать нормально.Я уже пробовал это, и он работает нормально.

...