Jsf 为UI组件创建自定义标记库

Jsf 为UI组件创建自定义标记库,jsf,taglib,Jsf,Taglib,我正在创建自定义标记库,其中将嵌入核心JSF UI组件,这些组件将基本上呈现UI组件,并向提供的组件中添加行为。例如,我有这样一个tablib ST.xhtml文件 <ui:composition> <h:inputText id="#{id}" value="#{value.ST.value}" rendered="#{readonly!='true'}" style="#{style}" required="#{required}" requiredMessage=

我正在创建自定义标记库,其中将嵌入核心JSF UI组件,这些组件将基本上呈现UI组件,并向提供的组件中添加行为。例如,我有这样一个tablib ST.xhtml文件

<ui:composition>
    <h:inputText id="#{id}" value="#{value.ST.value}" rendered="#{readonly!='true'}" style="#{style}" required="#{required}" requiredMessage="#{requiredMessage}" /><br/>
    <h:panelGroup id="#{id}Error" style="display:none;color:#EE0000;font-style:italic;" >
        x
    </h:panelGroup>
    <h:outputText value="#{value.ST.value}" rendered="#{readonly=='true'}" />
</ui:composition>
<trim:ST value="#{myBean.property}" style="color:red"/>
这用于在页面上创建HTML输入文本字段。使用此组件的代码如下所示

<ui:composition>
    <h:inputText id="#{id}" value="#{value.ST.value}" rendered="#{readonly!='true'}" style="#{style}" required="#{required}" requiredMessage="#{requiredMessage}" /><br/>
    <h:panelGroup id="#{id}Error" style="display:none;color:#EE0000;font-style:italic;" >
        x
    </h:panelGroup>
    <h:outputText value="#{value.ST.value}" rendered="#{readonly=='true'}" />
</ui:composition>
<trim:ST value="#{myBean.property}" style="color:red"/>
如您所见,如果我想从JSF页面为底层UI组件设置新属性,那么这种方法就不能很好地工作。例如,如果我想将onclick事件处理程序添加到h:inputText,我必须更改taglib定义以设置调用者的属性。我不喜欢这种方法,因为我必须在taglib中定义每个属性,才能从JSF页面使用它。有人能找到解决办法吗