经过一些实验和阅读后,我找到了与How to reference component inside a composite component when using a converter
相同的解决方案问题是我有两个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插入转换器但没有工作。
答案 0 :(得分:0)
target
需要以空格分隔而不是以逗号分隔
如果存在,则必须是空格(而非制表符)分隔的客户端列表 内部组件的ID(相对于顶级组件) 部分。空格用作分隔符 与XML中的IDREFS和NMTOKENS数据类型的兼容性 架构。