JSF手记(二)

1.关键字:h:messages不显示,java.lang.IllegalStateException: FacesContext already released。

 

  a. 这次忙了近两天,就是为了让h:messages显示。其实它的显示是非常用简单的,但不了解它的显示机制,还是会出些意想不到的问题。最后查到我的问题是因为我会通过URL的/search.jsf?clear=true来跳转页面,所以我在页面里加了jstl标签:<c:if test="${param.clear == 'true'}">进行判断,如果h:messages在些段里,那么它只会在跳转之后才显示(这是我这里的特殊情况)。而在网上查到h:messages只显示一次,所以我猜想它可能在跳转之前已显示,从而造成跳转之后没有显示了。最后,我把jstl的判断:<c:if> 之类的全去掉了,不进行页面跳转,    问题解决。但具体细节还是没明白,以后再研究。

 

  b. 但是在上面的a问题发生时,我为了查找addMessage是否成功添加信息,特意做了件笨事,我把FacesContext  objContext定为全局变量,在构造函数里objContext= FacesContext.getCurrentInstance();然后在其它方法里用objContext.addMessage添加信息。所以在运行出现了java.lang.IllegalStateException: FacesContext already released,在网上找了些蛛丝马迹,最终放弃这种方式,去掉全局变量的做法,直接在每个方法里写成:FacesContext  objContext= FacesContext.getCurrentInstance();
     objContext.addMessage(null,     new   FacesMessage(FacesMessage.SEVERITY_INFO,  
    "TEST",     "detail"));         问题解决。但具体细节还是没明白,以后再研究。

 

c. h:messages不显示解决方法之一: 把此标签放入<h:panelGrid>里,且在局部更新时reRender此panelGrid.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值