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 的名称取自自定义标签my:errorGrid的属性errorClass

据我了解,我需要在模板中使用vcp:body标记并在encodeChildren()方法中处理子项。拜托,谁能给我一些提示如何实现它?也许一些建议或链接。

4

1 回答 1

0

为什么不使用复合组件?

错误网格.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 回答