[Ajax4JSF] jsf message 不显示的问题

seven0_0 2011-01-24

我现在有一个Backbean中的一个方法,这方法中如果读取数据有错的话,我会用FacesContext.getCurrentInstance().addMessage(null,message)这个信息把错误放进去,然后返回到原来的页面,也就是不跳转,可是h:messages 却不显示错误信息,求解

backbean:

public String test(){
...
if(result == null){
   FacesMessage message = new FacesMessage(
					FacesMessage.SEVERITY_ERROR, "","error");
FacesContext.getCurrentInstance().addMessage(null,message);
        }
return "test";
}

 test.jsp:

<f:view>
<h:form id="test">
....
<h:messages infoClass="infomsg" errorClass="errormsg"  style="text-align:center;"/>

......
</h:form>
</f:view>

 faces-config:

.....
<navigation-rule>
		<from-view-id>*</from-view-id>
		<navigation-case>
			<from-outcome>test</from-outcome>
			<to-view-id>/test.jsp</to-view-id>
		</navigation-case>
</navigation-rule>

.....

 

如果backbean中返回null的话。。能显示

返回到另外的页面,页面源代码能找到这个组件,就是一个空值,不显示任信息

知道的说下,为什么会发生这情况!我的Jsf是1.2的,在tomcat下

kidneyball 2011-01-25
错误消息是与FacesContext绑定,而不是与某个Message组件绑定的。因此页面跳转时需要清空错误消息,否则如果跳转到另一个页面,页面上也有一个Message组件,岂不是把前一个页面的错误消息显示出来了。既然不跳转,就返回null吧,不要导航到原来的页面。
seven0_0 2011-01-25
谢谢呀!错误消息是与FacesContext绑定,正中我意,
看起来要好好去看看jsf了
Global site tag (gtag.js) - Google Analytics