我有一个表单,其中需要在输入元素下方显示验证错误消息.需要通过在错误消息和输入文本周围显示错误气泡来突出显示错误.
为此,我需要检查单个元素的h:消息是否存在.我能够检查是否存在全局错误消息,如下所示
<h:panelGroup rendered="#{not empty facesContext.messages}">
</h:panelGroup>
Run Code Online (Sandbox Code Playgroud)
我如何检查相同的特定客户端ID(比如名字).所以像
faceContent.messages("creditCardNo")
Run Code Online (Sandbox Code Playgroud)
我目前的解决方案是创建一个自定义解析器,但想知道是否有更好的解决方案.
Bal*_*usC 21
需要通过在错误消息周围显示错误气泡来突出显示错误...
只需使用<h:message>
一个样式,你可以定义所需的样式.
<h:inputText id="foo" />
<h:message for="foo" styleClass="error" />
Run Code Online (Sandbox Code Playgroud)
同
.error {
border: 1px solid red;
background: pink;
}
Run Code Online (Sandbox Code Playgroud)
...和输入文本.
只是检查是否UIInput#isValid()
是true
.从JSF 2.0开始,当前组件可通过隐式EL变量获得#{component}
.
<h:inputText styleClass="#{!component.valid ? 'error' : 'none'}" />
Run Code Online (Sandbox Code Playgroud)
至于关于检查某个客户端ID是否有消息的实际问题,那么您可能会发现这个答案很有趣.但我不认为这适用于您的特定情况.
更新:根据评论,您似乎想要设置包含组件的样式而不是invididual组件.在这种情况下,请执行以下操作:
<h:panelGroup styleClass="#{!foo.valid ? 'error' : 'none'}">
<h:inputText id="foo" binding="#{foo}" />
<h:message for="foo" />
</h:panelGroup>
Run Code Online (Sandbox Code Playgroud)