我有h:消息显示错误消息,并且有一个组件,我希望在发生验证错误时更改其样式(如果任何组件有验证错误或呈现任何验证消息,则更改此样式特定组成部分)。
如果组件有验证错误,我知道更改样式的方法: JSF : Better way to check for existence of <h:message for="id"/>
但我想要一种更通用的方法,如果表单中的任何组件无效,或者换句话说任何验证消息都会被渲染,则更改样式。
请告知如何实现这一目标。
答案 0 :(得分:21)
您可以使用FacesContext#isValidationFailed()
检查验证一般是否失败。
<h:outputText ... styleClass="#{facesContext.validationFailed ? 'fail' : 'success'}" />
或者,您可以使用FacesContext#getMessageList()
检查是否有任何面孔消息。这并不一定表示一般验证失败,也可能是行动方法中添加的全局/成功消息。
<h:outputText ... styleClass="#{not empty facesContext.messageList ? 'hasmessage' : 'nomessage'}" />