将 f:atrribute 传递给嵌套组合组件
Passing f:atrribute to a nested composition component
我有两个嵌套的复合组件,例如:
<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>
我们将不胜感激。
我意识到这是不可能的。 cc:insertChildren 不呈现 f:attribute。如果要将 f:attribute 从一个组件传递到另一个组件,则必须在 cc:interface 中定义 cc:attribute .
组件A
...
<cc:implentation>
<my:componentB>
<f:attribute name="myAttr" value="The attribute value"/>
</my:componentB>
</cc:implementation>
组件 B
<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>
我有两个嵌套的复合组件,例如:
<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>
我们将不胜感激。
我意识到这是不可能的。 cc:insertChildren 不呈现 f:attribute。如果要将 f:attribute 从一个组件传递到另一个组件,则必须在 cc:interface 中定义 cc:attribute .
组件A
...
<cc:implentation>
<my:componentB>
<f:attribute name="myAttr" value="The attribute value"/>
</my:componentB>
</cc:implementation>
组件 B
<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>