【问题标题】:<h:messages> on multiple IDs or parent id<h:messages> 在多个 ID 或父 ID 上
【发布时间】:2013-03-01 14:35:42
【问题描述】:

我只是想知道是否有办法使用&lt;h:message&gt;&lt;h:messages&gt; 显示多个错误/警告。

例如,采用具有各种输入的 PanelGroup:

<h:panelGroup id="pG">
    <p:input id="in1">[...]</p:input>
    <p:input id="in2">[...]</p:input>
</h:panelGroup>

现在我可以使用&lt;h:message for="in1" style="color:red"/&gt; 在输入区域显示错误。但是,有没有办法显示有关面板组的所有消息?像这样:&lt;h:messages for="pG" style="color:red"/&gt;

【问题讨论】:

    标签: jsf jakarta-ee jsf-2


    【解决方案1】:

    您可以添加一个方法来获取其子组件的所有验证消息列表,

    <ui:repeat var="message" value="#{applicationScopedBeanUtil.getMessages(mybean.pG)}">
        <h:outputText value="#{message.summary}" />   
    </ui:repeat>
    
    <h:panelGroup id="pG" binding="#{mybean.pG}">  
        <p:input id="in1">[...]</p:input>
        <p:input id="in2">[...]</p:input>
    </h:panelGroup>
    

    您可以将此方法添加到您的实用程序类中,

     private List<FacesMessage> getMessages(UIComponent component) {
            List<FacesMessage> messages =  new ArrayList<FacesMessage>();
            Iterator<UIComponent> children = component.getFacetsAndChildren();
    
            if (children != null) {
                while (children.hasNext()) {
                   messages.addAll(FacesContext.getMessages(children.next().getClientId()));
                }
            }
          return messages;
        }
    

    【讨论】:

    • 嗯,我从没想过在 Bean 中这样做。谢谢,好主意!
    猜你喜欢
    • 1970-01-01
    • 2021-08-06
    • 2015-09-24
    • 2016-01-26
    • 1970-01-01
    • 1970-01-01
    • 2015-12-04
    • 2012-12-14
    • 1970-01-01
    相关资源
    最近更新 更多