是否有办法在复合组件中为editableValueHolder定义一个动态的"name"属性?
例如:
<composite:interface>
<composite:attribute name="name" required="false" default="text"/>
<composite:attribute name="value" required="false"/>
<composite:editableValueHolder name="#{cc.attrs.name}" targets="textId"/>
</composite:interface>
<composite:implementation>
<h:inputText id="textId" value="#{cc.attrs.value}" validatorMessage="Error"/>
</composite:implementation>
然后让页面作者使用我的标签,比如:
<my:inputText value="whatever" name="testText">
<f:validateLength for="testText" minimum="20"/>
</my:inputText>
您应该从bean中获取文本并用它初始化您的组件。
<my:inputText value="whatever" name="#{yourBean.getDynamicText()}" />
通过移动"editableValueHolder"标签作为"implementation"标签的子标签解决。EL似乎不会计算"interface"标签中的表达式。
谢谢大家的帮助。