您的位置:首页 > Web前端 > JavaScript

JSF的消息处理的一点补充说明

2014-09-17 08:49 260 查看
首先上后端消息处理的一段代码:
FacesContext.getCurrentInstance().addMessage("form", new FacesMessage(FacesMessage.SEVERITY_ERROR, "这里是消息","这里是消息明细"));
这里有三个参数,第一个引号的地方应该填message标签for属性的内容,记住不要填ID,我没看过源码,但是我猜测这个消息应该是发给一个UI组件,然后由组件来派发消息的, FacesMessage 里面后面两个参数一个是消息内容,一个是消息明细说明(这个显示与否是由showDetail="true"来决定的 ),好了,说完这个再上一段代码
<h:body>  <p:messages/>
<h:form id="form">
<p:message for="form"/>
<p:messages/>
<h:outputLabel for="test" value="测试" />
<p:inputText id="test" label="测试"></p:inputText>
<p:message for="test"/>
<p:commandButton type="submit" action="#{test.test}" update="form"/>
</h:form>
</h:body>
看看这段代码,比较有意思,首先说说<p:messages/>,这里面有两个,一个实在form外面,一个是在form里面,当submit的时候后端如果有消息发出来,比如
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "这里是消息",null));
将会是什么情况呢?试试看,结果是form外的message没有反应,而form内的倒是打印出了消息.还有一点要说明的就是<p:messages/>这个是会打印出form里面所有的消息,也就是说<p:message for="test"/>和<p:message for="form"/>打印出来的消息都会在<p:messages/>里面也打印出一份,有点冒泡的味道,也许实际实现就是冒泡的(没看源码,只是猜测,错了别拍我).接下来是说说<p:message for="form"/>这个,这个for属性很有用,在讲addMessage方法的时候就说过第一个参数,和这个参数是对应的,这样消息就可以打印到你需要地方了.最后就是消息的级别,这个请参考google,我不便转发,嘿嘿
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐