jsf - JSF:检查=“id”/> <h:message是否存在的更好方法

标签 jsf jsf-2

我有一个表单,其中需要在输入元素下方显示验证错误消息。需要通过在错误消息和输入文本周围显示错误气泡来突出显示该错误。

为此,我需要检查单个元素的h:messages是否存在。
我可以检查是否存在全局错误消息,如下所示

<h:panelGroup rendered="#{not empty facesContext.messages}"> 
</h:panelGroup>

如何检查特定的客户端ID(例如名字)是否相同。所以像
faceContent.messages("creditCardNo")

我目前有一个解决方案,就是创建一个自定义解析器,但想知道是否有更好的解决方案。

最佳答案

The error needs to be highlighted by showing an error bubble around the error message ...



只需将<h:message>与样式类一起使用即可定义所需的样式。
<h:inputText id="foo" />
<h:message for="foo" styleClass="error" />


.error {
    border: 1px solid red;
    background: pink;
}

...and the input text.



只需检查 UIInput#isValid() 是否为true即可。从JSF 2.0开始,当前组件可通过隐式EL变量#{component}获得。
<h:inputText styleClass="#{!component.valid ? 'error' : 'none'}" />

关于检查是否有特定客户端ID的消息的实际问题,那么您可能会发现this answer很有趣。但是我认为这不适用于您的特定情况。

更新:根据注释,您似乎想对包含组件而不是单个组件进行样式设置。在这种情况下,请执行以下操作:
<h:panelGroup styleClass="#{!foo.valid ? 'error' : 'none'}">
    <h:inputText id="foo" binding="#{foo}" />
    <h:message for="foo" />
</h:panelGroup>

关于jsf - JSF:检查=“id”/> <h:message是否存在的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4522609/

相关文章:

jsf - 在 Primefaces 中的不同布局单元之间拖放

jsf-2 - 捕获异常后重定向的问题

jsf-2 - 这是集成 ViewScoped 和 RequestScoped bean 的正确方法吗?

javascript - h :selectBooleanCheckbox to be rendered to HTML 的值属性的先决条件是什么

java - <f :setPropertyActionListener . ../> 不起作用

JSF 有条件包含,因为组件 ID 已在 View 中找到

java - JSF 两个必需的 h :inputText (exclusive or)

java - 用于操作状态的 Spring Webflow 异常处理程序

java - Servlet 输出流响应出现问题

javascript - 波尔图模板 :Google map doesn't show up