在primefaces 2.2RC版本里面,我所接触比较多的是文件的上传,即使用p:fileUpload来上传文件,由于是开始的东西,2.X的版本有各种BUG,其中我遇到的就是在upload文件时候,页面报出"Http Error"这个错误不是HTTP传输的错误,而是在primefaces里面调用一个验证的时候Validate的错误,同时在导出excel和图片方面,2.x的版本也不能很好的支持poi-3.7.jar,若是使用poi-3.2-final.jar又会有实现方面的问题出现。 最终我不得不把2.x的版本升级到现在的3.1的版本。升级时遇到了不少的问题,打算一一列在这篇blog里面。
1.web.xml配置的改变,在2.x版本里面使用的配置,在3.1里面已经不再需要了,在stackoverflow可以找到答案。
http://stackoverflow.com/questions/7581691/primefaces-3-0-m3?s=a2a0b68f-e6a3-4969-8113-26c531b5102c#new-answer
<servlet> <servlet-name>Resource Servlet</servlet-name> <servlet-class>org.primefaces.resource.ResourceServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Resource Servlet</servlet-name> <url-pattern>/primefaces_resource/*</url-pattern> </servlet-mapping>
2.页面的导入由以前的
xmlns:p="http://primefaces.prime.com.tr/ui"
换成了
xmlns:p="http://primefaces.org/ui"
3.JSF的标签风格和HTML的冲突问题
替换前的html的界面代码
<table id="counterValues" width="100%"> ................ </table> <p:poll update="counterValues" widgetVar="poll1" interval="10" listener="#{alarmUpdateBean.getValues}" />
然后一直报错误
javax.faces.FacesException: Cannot find component with identifier "counterValues" in view.
原因是jsf不能调到html里面的id,解决的办法是在table外面加一个p:p:outputPanel即可