1

<h:message>複数のエラー/警告をoderで表示する方法があるかどうか疑問に思っていました<h:messages>

たとえば、さまざまな入力を持つPanelGroupを考えてみましょう。

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

<h:message for="in1" style="color:red"/>これで、入力領域にエラーを表示するために使用できます。しかし、パネルグループに関するすべてのメッセージを表示する方法はありますか?このようなもの:<h:messages for="pG" style="color:red"/>

4

1 に答える 1

2

子コンポーネントのすべての検証メッセージのリストを取得するメソッドを追加できます。

<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;
    }
于 2013-03-13T18:09:20.407 に答える