日期:2014-05-16  浏览次数:20385 次

JSF Primeface 常见问题解决办法
1 javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: 

解决办法以及原因 JPA 若实体类采用了ID主健生成策略,但是又给实体对象分配了一个主健,保存会出县该异常

Exception in thread "ContainerBackgroundProcessor[StandardEngine[Catalina]]" java.lang.OutOfMemoryError: PermGen space

2 该异常信息是说,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出,解决方法也一定是加大内存,本身也是2003年SUN JVM的一个Bug,JVM一开始就是设置了大小


3 org.jboss.weld.exceptions.DefinitionException: WELD-000075 Normal scoped managed bean implementation class has a public field

原因是Bean里面有声明为public的字段


4 收购协议管理点击查看按钮查看详细信息之后点击关闭按钮发出Update语句更新协议,造成的原因:是点击跳转到另一个页面然后有对数据库进行查询的操作会发出相关的Update语句



5 异常信息:org.jboss.weld.servlet.WeldListener: java.lang.IllegalStateException: Context is not active
解决方法:参照项目捕获异常处理

6 Primeface LayDataModel 分页总数不刷新,数据库记录做了删除之后总页数也是最开始存在的记录。解决办法 http://code.google.com/p/primefaces/issues/detail?id=1774 需要改类库


7 Confirm消息信息确认框去掉抖动效果 showEffect="bounce",去掉LaydataModel分页工具条上边工具栏  paginatorPosition="bottom"

8 Primeface 报ListDataTable 无法转换成LazyDataModel原因可能是 第一步先排除页面造成 若页面确实没有什么那么肯定是后台返回数据的方法有问题(比如查询的SQL等)


9  Primeface LazyDataModel分页是报除数为0 若是在通过点击查询按钮进行查询的话,而查询按钮update了Table对象会造成该错误,解决办法是采用更新一个输出面板该输出面板包裹Table.
   若不是上诉情况则可能是没有设置pageSize属性

10 Servlet.service() for servlet Faces Servlet threw exception: javax.el.PropertyNotFoundException: /login.xhtml @65,102 value="#{loginBean.user.name}": Target Unreachable, 'user' returned null
   解决方法:是因为采用了观察Session创建类,就是模拟登录造成了设置User 为null

11 p:commandButton 按钮使用 若是使用Ajax提交 则后台方法不需设置返回值,若以Submit提交方式,后台方法一定要有返回一个页面不然会出现其它意向不到的结果

12 当你用jsf的<h:selectOneMenu />之类的控件选择实体时,小心你的实体的equals方法,否则你可能就会遇到”value is not valid”的验证错误
   解决方法 http://sulong.me/archives/104


13 JSF 中在XHTML页面不能直接使用枚举
14 JSF 进行日期查询 org.apache.commons.beanutils.ConversionException: Error converting 'String' to 'Date' using  patterns 'yyyy-MM-dd, yyyy-MM-dd HH:mm:ss'

15 java.lang.IllegalStateException: Conte.xt is not active异常:
   解决办法:参照项目,通过捕获该异常之后再重新激活,异常的捕获参照项目类
   


16 getOutputStream() has already been called for this response
   原因:这里是在释放在jsp中使用的对象,会调用response.getWriter(),因为这个方法是和
           response.getOutputStream()相冲突的!所以会出现以上这个异常
   解决办法:FacesContext.getCurrentInstance().responseComplete();

17 如何去掉分页工具条中的分页数选择
   
   解决办法:paginatorTemplate (自定义分页工具按钮显示位置) 和rowsPerPageTemplate

18 Jboss7  允许远程访问
   解决办法:
           在Jboss安装目录下的\standalone\configuration\standalone.xml
           加上
        <interfaces>
        <interface name="management">
            <inet-address value="127.0.0.1"/>
        </interface>
        <interface name="public">
            <inet-address value="127.0.0.1"/>
        </interface>
        <interface name="any">
            <any-ipv4-address/>
        </interface>
    </interfaces>
   修改 <socket-binding-group name="standard-sockets " default-interface=""> default-interfac 为any

19 系统无法获取资源菜单
   解决办法:首先排除数据库是否有数据,若有数据则数据的初始化是在服务器启动之前则系统是无法得到资源,重启服务器

20 LayDataModel 修改记录信息以弹出Diglog的形式,修改了其中的值,但是并没有保存,请注意是否是用了update了表格的
   ID,最好是用P:OutputPanel将LayDataModel 包裹起来,去更新P:OutputPanel的ID

21 关于p:commandButton action执行的后台方法不被调用问题
   看是否使用了ConversationScoped,若使用了看是否开始了Conversation,没有开启可能造成后台方法不执行
   此现象造成是Ajax请求验证失败,可以在FirBug看Ajax请求返回信息()<callbackParam>{"validationFailed":false}</callbackParam></callbackParams>
   解决办法 看p:commandButton 是不是错误提交Form或者多个Form嵌套,Input,List,Edit等最后分别在一个Form


22 重写Primeface上传错误验证信息? 
   http://forum.primefaces.org/viewtopic.php?f=3&t=4147

23 org.hibernate.LazyInitializationException: could not initialize proxy - no Session
   原因:使用HibernateTemplate.load() 方法时Hibernate会返回一个代理对象,即要求这个对象在hibernate的缓存中存在,
   如果缓存中不存在会报这样错误。

24 org.hibernate.AssertionFailure: collection [com.wcs.ncp.model.PurchaseEntity.purchaseLocEntities] was not processed by flush()
   级联对象没有flush异常;
   
   解决办法:

25 p:commandButton Action方法不被调用
   原因:Action方法不被调用基本上能确定的是不是Primeface的Bug,导致原因多是可能是要提交的Form