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

首先上后端消息处理的一段代码:

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,我不便转发,嘿嘿
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值