经过一些实验和阅读,我发现了与使用转换器时如何在复合组件内引用组件相同的解决方案
问题是,然而,我有两个id的值持有人,根据文档,我可以使用id1,id2作为目标,但这不起作用。
这是我的复合组件:
<cc:interface>
<cc:attribute name="id" required="true"/>
<cc:attribute name="value" required="true"/>
<cc:attribute name="editable" required="true"/>
<cc:editableValueHolder name="element" targets="input,output"/>
</cc:interface>
<cc:implementation>
<h:inputText value="#{cc.attrs.value}" id="input" rendered="#{cc.attrs.editable}"/>
<h:outputText value="#{cc.attrs.value}" id="output" rendered="#{not cc.attrs.editable}"/>
</cc:implementation>
我打算这样使用CC:
<r:inputText editable="#{registrationBean.editable}" id="dateOfBirth"
value="#{registrationBean.dateOfBirth}">
<f:convertDateTime pattern="dd-MM-yyyy" type="date" for="element" />
</r:inputText>
我最初尝试通过insertChildren和facet插入转换器,但没有工作。
target
需要空格分隔,而不是逗号分隔
如果存在,这必须是一个空格(不是制表符)分隔的客户端列表组件的id(相对于顶级组件)部分。的分隔符与来自XML的IDREFS和NMTOKENS数据类型的兼容性模式。
JSF2.2文档