Jsf p:未调用fileUploadListener
我在用Jsf p:未调用fileUploadListener,jsf,file-upload,jsf-2,primefaces,Jsf,File Upload,Jsf 2,Primefaces,我在用 玻璃鱼4.0 JSF2.2 莫哈拉2.2.0 Primefaces 3.5 我在XHTML页面上有这个fileUpload组件 <h:form enctype="multipart/form-data"> <p:fileUpload id="txtCatImage" value="#{testManagedBean.uploadedFile}" mode="advanced"
- 玻璃鱼4.0
- JSF2.2
- 莫哈拉2.2.0
- Primefaces 3.5
fileUpload
组件
<h:form enctype="multipart/form-data">
<p:fileUpload id="txtCatImage"
value="#{testManagedBean.uploadedFile}"
mode="advanced"
sizeLimit="100000"
multiple="false"
showButtons="true"
allowTypes="/(\.|\/)(gif|jpe?g|png)$/"
fileUploadListener="#{testManagedBean.fileUploadListener}"/>
<p:message for="txtCatImage" showSummary="false"/>
<p:commandButton id="btnSubmit"
actionListener="#{testManagedBean.insert}"
icon="ui-icon-check" value="Save"/>
</h:form>
前面提到的文件上载侦听器-fileUploadListener()
从未被调用
文件上载筛选器映射到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>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
PrimeFaces文件上载筛选器
org.primefaces.webapp.filter.FileUploadFilter
PrimeFaces文件上载筛选器
Facesservlet
Facesservlet
javax.faces.webapp.FacesServlet
1.
Facesservlet
*.jsf
我已经在类路径中添加了apachecommons文件上传
和apachecommons io
。在我之前使用Spring/JSF的项目中,同样的情况也适用
我看不出我在这里遗漏了什么。它是否与服务器版本有关?这很可能是因为Primefaces 4是唯一与Glassfish 4(Java EE 7)中最新JSF标准兼容的版本。Primefaces 3.5与Glassfish 3.1.2.2(Java EE 6)配合使用
有更多的人有这个问题。
9月16日星期一将推出Primefaces 4.0 RC1,因此如果您真的想要GF 4,您应该尝试使用它。
编辑:
参考:
用户可以自行决定RC是否适合他。我刚刚向他建议过,因为这是目前唯一的方法。如果您使用
Primefaces
上传,您必须注意以下情况
ajax
请求,这意味着您必须在
中添加ajax=“false”
属性。否则,请使用
参考资料是“Primefaces 4是唯一一个与Glassfish 4(Java EE 7)中最新JSF标准兼容的版本,”你能对这一事实发表任何引用吗9月16日星期一将发布Primefaces 4.0 RC1“这是一个候选版本,也许迁移到beta版实际上不是OP的选择。”同样,你需要一个参考。你发布的链接是关于JSF 2.2的,而用户说他使用2.0。显然,在这个链接中,我没有看到任何与JavaEE7相关的内容。为什么不能只是玻璃鱼的问题?我的答案是正确的。请在此处再次查看:。ğağatayğivici是爱国阵线的创造者和所有者。检查他的回答。因为GF 4是Java EE 7实现,所以JSF 2.2、Primefaces 3.5与GF 4不兼容。如果您仍然不理解,请查看此页面:。上面写着JavaEE7。你现在满意了吗?对不起,我不小心发布了JPA 2.0版。它是JSF2.2,Mojarra2.2.0,“达到每日投票限制”。我今天不能投票。不过,我明天会做的。谢谢。我已经在类路径中添加了ApacheCommonsFileUpload和ApacheCommonsIO。你到底是怎么做到的?有很多方法可以做到这一点,而其中许多方法对于战争来说显然是错误的。您确认过那些JAR最终出现在构建/部署的WAR文件的
/WEB-INF/lib
文件夹中吗?我刚刚签出了它们。部署应用程序后,两个jar文件都出现在$Project/projectwar/build/web/web-INF/lib
OK中。如果您删除/禁用所有与安全相关的筛选器和内容,该怎么办?(只是为了排除它们的原因)如果您尝试JSF2.1呢?(JSF2.2自带了自己的本地文件上传解析器,不知道PrimeFaces 3.5是如何操作的,我自己也从未尝试过)。我尝试过与Mojarra 2.1.6、JSF2.1和PrimeFaces 3.5上运行的GlassFish 3.1.2相同的场景。它正常工作。在GlassFish 4.0上通过禁用安全过滤器和安全约束进行了尝试,但不起作用。1。这是错误的。OP正在使用mode=“advanced”
。ajax只能在mode=“simple”
上禁用。
<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>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>