我有两个嵌套的复合组件,例如:
<my:inputContainer>
<my:input/>
</my:inputContainer>
我需要将 f:attribute 传递给 my:input ,以便将其恢复到验证程序中:
<my:inputContainer>
<my:input>
<f:attribute name="attr" value="any value"/>
</my:input>
</my:inputConainer>
但是当我尝试从 component.getAttributes()中检索验证器中的属性值时,它并不存在。
我的组件基本上是这样定义的:
<cc:implementation>
<my:input name="input1"/>
<my:input name="input2">
<f:attribute name="input1Value" value="#{cc.attrs.input1Value}"/>
<f:validator validatorId="myInputValidator" for="inputText"/>
</my:input>
</cc:implementation>
任何帮助将不胜感激。
答案 0 :(得分:1)
我意识到这是不可能的。 cc:insertChildren 不会呈现 f:attribute 。如果您想将 f:attribute 从一个组件传递到另一个组件,则必须在 cc:interface 中定义 cc:attribute 。
ComponentA
...
<cc:implentation>
<my:componentB>
<f:attribute name="myAttr" value="The attribute value"/>
</my:componentB>
</cc:implementation>
以componentB
<cc:interface>
...
<cc:attribute name="myAttr"/>
</cc:attribute>
<cc:implementation>
<my:input name="input1"/>
<my:input name="input2">
<f:attribute name="input1Value" value="#{cc.attrs.myAttr}"/>
<f:validator validatorId="myInputValidator" for="inputText"/>
</my:input>
</cc:implementation>