0

我在使用 PrimeFaces 上传文件时遇到问题。我在 StackOverflow 上浏览了旧帖子,没有发现任何有用的东西。奇怪的是我昨天让它工作了,但我现在启动了我的服务器并且它不再工作了。当我尝试访问上传的文件时,它给了我 NPE。

所以我下载了commons-fileupload-1.2.2.jar和commons-io-1.4,把它们放在我的类路径中,web.xml像这样配置我

 <filter>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <servlet-name>Faces Servlet</servlet-name>
</filter-mapping>

我在 xhtml 页面中的表单包含一个带有描述的字段、一个组合框和一个字段上传元素

 <h:form enctype="multipart/form-data">
            <p:panel header="#{submitProjectPage['header']}">
                <h:panelGrid columns="2">
                    #{submitProjectPage['chooseProject']}
                    <p:selectOneMenu value="#{submitProjectBean.project}" converter="projectConverter">
                        <f:selectItems value="#{submitProjectBean.studentsProjects}" />
                    </p:selectOneMenu>

最后我的bean是RequestScoped并且有这个方法

private UploadedFile projectFile;

public void submitProject(ActionEvent event) {//also tried without parameter
    project.setFile(projectFile.getContents());
    project.setStatus(StatusEnum.DELIVERED);
    daoBean.update(project);
}
                    #{submitProjectPage['submitInformation']}
                    <p:inputTextarea rows="10" value="#{submitProjectBean.s}"/>
                    #{submitProjectPage['file']}
                    <p:fileUpload value="#{submitProjectBean.projectFile}" mode="simple" />

                    <p:commandButton ajax="false" value="#{submitProjectPage['submit']}" 
                                    actionListener="#{submitProjectBean.submitProject}" />
                </h:panelGrid>
            </p:panel>

我确定我的导入正确,projectFile 字段还有一个设置器,所以我真的不知道问题出在哪里。我正在使用 PrimeFaces v 3.01

感谢帮助

4

1 回答 1

0

我找到了一个解决方案,问题是 Glassfish 出于某种原因没有部署 apache 库,所以我将它们从类路径中删除,再次添加它们并且它神奇地工作:-)

所以也许它会帮助某人:)

于 2012-04-28T08:57:59.317 回答