JSF2用于msg显示有2个控件:message和messages,message用于显示单条信息,messages用于显示多条信息。在jsf2 tutorial validation chaper中,有关于message的详细使用,请参考:http://courses.coreservlets.com/Course-Materials/pdf/jsf/jsf2/JSF2-Validation.pdf。
本篇讨论的是关于错误消息统一显示问题,如:
1)有一个表单Form,里面有很多input域,当点击提交按钮时会进行jsf validator的验证,验证出错时要求在错误的域边上显示错误信息,并且在form上面统一显示错误信息,该如和处理,如下图所示:
现在上面红色部分放置的是h:messages,上面已经讲到h:messages可显示多条msg信息,只要facescontext add进去的message都会在h:messages中显示。
2)要求只要表单有任何验证错误,form上面都统一显示一条错误信息,此时该如何处理?
首先,我们选择h:message;
其次,使用一个inputhidden域,我们通过一定的技术手段让该inputhidden域验证出错或者给其添加error message。当然h:message 通过for属性设置应该指向该inputhidden域。
最后,如何给inputhidden域添加error msg信息,我们可以在send bid按钮响应action或者action listener时,或者validator中,或者phaselistener中,在满足一定的条件下,添加下述一行代码即可:
FacesContext.getCurrentInstance().addMessage(inputhidden域id,
new FacesMessage(message内容));
建议通过使用phase listener统一去实现。