【问题标题】:JSF <h:message /> inside <h:graphicImage /> titleJSF <h:message /> 内 <h:graphicImage /> 标题
【发布时间】:2014-02-26 04:48:48
【问题描述】:

所以,我试图将验证错误消息显示为图像标题。我想这样做,因为消息很长,我不希望它们出现在我的页面上。

尝试将 UIComponent &lt;h:message /&gt; 对象绑定到控制器对象,但后来我找不到如何从 UIComponent 获取跨度值。

我该怎么办?

【问题讨论】:

    标签: validation jsf jsf-2


    【解决方案1】:

    在迭代消息时,只需在 &lt;ui:repeat&gt; 中自己控制标记。您可以通过FacesContext#getMessageList()获取EL中的消息。

    所以不是,

    <h:inputText id="foo" ... />
    <h:message for="foo" />
    

    做类似的事情

    <h:inputText binding="#{foo}" ... />
    <ui:repeat value="#{facesContext.getMessageList(foo.clientId)}" var="message">
        <h:graphicImage name="#{message.severity}.png" title="#{message.summary}" />
    </ui:repeat>
    

    其中#{message}FacesMessage 的一个实例,提供通常的getter。

    【讨论】:

    • 谢谢回答,不知道facesContext.getMessageListthx!
    【解决方案2】:

    另一种解决方案是将所有这些长消息定义并放入.properties 的文件中,作为捆绑消息。看这里:When to use message bundle and resource bundle

    【讨论】:

    • 感谢您的回复,是的,我知道我可以覆盖这些消息。不过,您是否认为唯一可能的解决方案是使这些消息更短,并且没有办法将它们作为图像的标题?
    • 也许有可能,但它会更复杂(支持 bean 中有更多代码)。
    • 其实没问题。我唯一需要的是找出如何从 UIComponent 获取&lt;span&gt;Validation message&lt;/span&gt; 验证消息。除非有人给我提示,否则我可能会暂时离开它。
    猜你喜欢
    • 2014-09-02
    • 1970-01-01
    • 2012-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-03
    相关资源
    最近更新 更多