FileUpload is broken in 6.2

UI Components for JSF
Post Reply
szurilo
Posts: 5
Joined: 27 Sep 2016, 16:08

23 Apr 2018, 14:56

Hi,
After upgrading from 6.1 to 6.2 our fileuploads stopped working and an exception is raised when we try to upload a file.
PF version: 6.2.0
JSF/Mojarra version: 2.2.12
Server: JBoss EAP 7

Relevant xhtml:

Code: Select all

<h:form id="uploadNewVersionForm" enctype="multipart/form-data">
            <p:dialog header="#{i18n['policyAdmin.uploadNewVersionDialog.title']}"
                      widgetVar="uploadNewVersionDialog" modal="true"
                      showEffect="fade" resizable="false"
                      styleClass="wfs-dialog-responsive"
                      responsive="true" onShow="PF('uploadNewVersionDialog').initPosition();">
                <p:ajax event="close" update="@(.policiesStyle)" listener="#{policyAdminBean.onUploadNewVersionDialogClose}" />
                <p:fileUpload
                    label="#{i18n['policyAdmin.uploadNewVersionDialog.newFileSelector']}"
                    allowTypes="/(\.|\/)(xml)$/"
                    fileUploadListener="#{policyAdminBean.saveNewVersion}"
                    sizeLimit="5242880"
                    uploadLabel="#{i18n['document.upload']}"
                    cancelLabel="#{i18n['button.cancel']}"
                    invalidFileMessage="#{i18n['document.error.msg.invalid.filetype']}"
                    update="@(.policiesStyle)"
                    oncomplete="PF('uploadNewVersionDialog').hide();PF('policiesWv').filter()"
                    mode="advanced"/>
                <f:facet name="footer">
                    <p:toolbar>
                        <f:facet name="right">
                            <p:commandButton type="button" value="#{i18n['button.cancel']}" styleClass="ui-confirmdialog-no" icon="ui-icon-close" onclick="PF('uploadNewVersionDialog').hide();PF('policiesWv').filter()"/>
                        </f:facet>
                    </p:toolbar>
                </f:facet>
            </p:dialog>
        </h:form>

Relevant backing bean method:

Code: Select all

public void saveNewVersion(FileUploadEvent event) throws BusinessException
    {
        LOGGER.debug("saveNewVersionDialog.OK clicked - start to create new version of "
                + model.getSelectedPolicy().getId() + " Policy");
        final UploadedFile uploadedDocument = event.getFile();
        final UploadedDocument document = uploadedDocumentMapper.apply(uploadedDocument);
        final WfsPolicyNode selectedPolicy = model.getSelectedPolicy();
        final WfsFormPolicy formPolicy = ServiceProxy.getLiferayInstance().getPolicyService()
                .getFormPolicyById(selectedPolicy.getId());
        final WfsProcessDefinition newDefinition = new WfsProcessDefinition();
        newDefinition.setDeploymentId(null);
        try (InputStream is = new ByteArrayInputStream(document.getBytes()))
        {
            formPolicy.getAsFormPolicyTypeTransformer().saveTransformedContent(is);
            final WfsPolicyNode policyNode = formPolicyMapper.toNode(formPolicy);
            service.savePolicy(policyNode);
            MessagesUtil.info("policyAdmin.upload.success");
        } catch (final IOException e)
        {
            LOGGER.error("Unable to save the uploaded policy file", e);
            throw BusinessExceptionFactory.createGeneralIO(e);
        }
        model.setPolicies(null);
    }

Here is the exception:
2018/04/23 12:36:27 ERROR [default task-52][FileUploadRendererPrimeFacesImpl:131] org.primefaces.model.DefaultUploadedFile.<init>(org.apache.commons.fileupload.FileItem)
java.lang.NoSuchMethodException: org.primefaces.model.DefaultUploadedFile.<init>(org.apache.commons.fileupload.FileItem)
at java.lang.Class.getConstructor0(Class.java:3082)
at java.lang.Class.getDeclaredConstructor(Class.java:2178)
at com.liferay.faces.bridge.renderkit.primefaces.internal.FileUploadRendererPrimeFacesImpl.decode(FileUploadRendererPrimeFacesImpl.java:99)
at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:832)
at javax.faces.component.UIInput.decode(UIInput.java:771)
at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1227)
at javax.faces.component.UIInput.processDecodes(UIInput.java:676)
at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(PartialViewContextImpl.java:573)
at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(PartialVisitContext.java:183)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1689)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
at javax.faces.component.UIForm.visitTree(UIForm.java:371)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
at com.sun.faces.context.PartialViewContextImpl.processComponents(PartialViewContextImpl.java:403)
at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:266)
at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:219)
at org.primefaces.context.PrimePartialViewContext.processPartial(PrimePartialViewContext.java:57)

tandraschko
PrimeFaces Core Developer
Posts: 3979
Joined: 03 Dec 2010, 14:11
Location: Bavaria, DE
Contact:

23 Apr 2018, 14:58

Ask the Liferay guys, seems like they wrap our upload logic.
I assume it will work fine in a servlet container.
Thomas Andraschko

PrimeFaces | PrimeFaces Extensions

Apache Member | OpenWebBeans, DeltaSpike, MyFaces, BVal, TomEE

Sponsor me: https://github.com/sponsors/tandraschko
Blog: http://tandraschko.blogspot.de/
Twitter: https://twitter.com/TAndraschko

szurilo
Posts: 5
Joined: 27 Sep 2016, 16:08

24 Apr 2018, 16:53

Solved. Solution is here: https://web.liferay.com/community/forum ... /107133108
Thank you!

Post Reply

Return to “PrimeFaces”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 56 guests