0

私は JSF 2 を使用しています。その中のメッセージのスタイル クラスを変更するカスタム タグを記述する必要があります。したがって、そのようなコードがある場合:

<my:errorGrid errorClass="#{richBean.erClass}" >
   <my:inputField id="pid1" value="#{richBean.pid}" fsType="pid">
   </my:inputField>

  <h:message for="pid1" ajaxRendered="true"/>

</my:errorGrid>

追加の styleClass でエラー メッセージが出力されるはずです。この styleClass の名前は、カスタム タグmy:errorGridの属性errorClassから取得されます。

私が理解しているように、テンプレートで vcp :bodyタグを使用し、 encodeChildren()メソッドで子を処理する必要があります。どうか、それを実現するためのヒントを教えてください。多分いくつかのアドバイスやリンク。

4

1 に答える 1

0

複合コンポーネントを使用しないのはなぜですか?

errorGrid.xhtml

<composite:interface>
    <composite:attribute name="errorClass"/>
</composite:interface>

<composite:implementation>
    <my:inputField id="pid1" value="#{richBean.pid}" fsType="pid">
    </my:inputField>

    <h:message for="pid1" ajaxRendered="true" errorClass="#{cc.attrs.errorClass}"/>
</composite:implementation>

ただし、従来のコンポーネントがある場合は、HtmlMessage.setErrorClass()レンダリングする前にエラー クラスを呼び出すだけです。例えば:

for (UIComponent child : getChildren()){
    if(child instanceof HtmlMessage) {
        HtmlMessage msgComp = (HtmlMessage) child;
        msgComp.setErrorClass(getErrorClass());
    }
}
于 2012-08-15T18:15:42.837 に答える