将转换器传递给复合组件

时间:2016-10-24 12:00:16

标签: jsf jsf-2.2 composite-component

经过一些实验和阅读后,我找到了与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插入转换器但没有工作。

1 个答案:

答案 0 :(得分:0)

target需要以空格分隔而不是以逗号分隔

  

如果存在,则必须是空格(而非制表符)分隔的客户端列表   内部组件的ID(相对于顶级组件)    部分。空格用作分隔符   与XML中的IDREFS和NMTOKENS数据类型的兼容性   架构。

JSF2.2 docs