我使用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字段的setter,所以我真的不知道问题出在哪里。我正在使用PrimeFaces v 3.01
感谢您的帮助
答案 0 :(得分:0)
我找到了一个解决方案,问题是Glassfish由于某种原因没有部署apache库,所以我从classpath中删除它们,再次添加它们并且神奇地工作: - )
所以也许它会帮助某人:)