JSF 2.2 h:inputFile无法使用漂亮的面孔

bmu*_*uer 6 jsf file-upload prettyfaces jsf-2.2

我们使用的是带有JSF 2.2(Mojarra 2.2.0)和PrettyFaces 2.0的Glassfish 4.0.当尝试使用h:inputFile相应的表单上传文件时enctype="multipart/form-data",只有在页面被称为directy时才会触发表单操作,但如果调用了漂亮的URL,则不会发生任何事情.许多其他问题都有一些类似的问题(例如,如何使用PrimeFaces p:fileUpload?从不调用Listener方法或UploadedFile为null),但大多数问题似乎都使用PrimeFaces并且对过滤器的顺序有困难等等.因为我们想要保持JSF方法上传文件,我想知道是否有一些我可能错过的Mojarra过滤器的配置.

web.xml当前不包含任何过滤器规格.

jsf文件只包含此表单

<h:form enctype="multipart/form-data">
   <h:inputFile value="#{fileModel.testFile}"/>
   <h:commandButton value="Upload" action="#{fileModel.upload}"/>
</h:form>
Run Code Online (Sandbox Code Playgroud)

并且支持bean看起来像这样

@ApplicationScoped
@Named
public class FileModel {

    private Part testFile;

    public Part getTestFile() {
        return testFile;
    }

    public void setTestFile(Part testFile) {
        this.testFile = testFile;
    }

    public void upload() {
        System.out.println("File Data: " + testFile);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,取消注释这些行pretty-config.xml会产生错误,而注释它们则不会.

<url-mapping id="fileTest">
    <pattern value="/file" />
    <view-id value="/view/fileTest.xhtml" />
</url-mapping>
Run Code Online (Sandbox Code Playgroud)

我认为问题可能会 OCPSoft的这篇文章中描述,但似乎还没有解决方案.

Arm*_*yan 0

我的建议是:可通过漂亮面孔添加书签的页面不应包含任何提交表单!这种页面应该仅供查看,将文件上传表单移动到另一个没有 Prettyfaces 过滤器的常规 jsf 页面