我有一个复合组件:
<composite:interface componentType="myCC">
<composite:attribute name="tempId" required="false"/>
<composite:attribute name="action" targets="??????" required="false"/>
</composite:interface>
<composite:implementation>
<p:commandButton id="#{cc.attrs.tempId}button"
action="#{cc.attrs.action}"/>
</composite:implementation>
另外 - 我有两个使用它的组件 -
<span id="firstSpan">
<sm:myCC id="fooid1" tempId="inFirstSpan"
action="#{firstController.method('String')}"/>
</span>
<span id="secondSpan">
<sm:myCC id="blaid1" tempId="inSecondSpan"
action="#{secondController.method('String')}"/>
</span>
问题是,我试图在targets
中使用id,但它失败了。
在这种情况下我该如何实现?
答案 0 :(得分:0)
默认情况下,当前的方法不起作用,因为当JSF输出复合组合的子组件的HTML时,它首先包括复合组件id,然后是分隔符,然后是子组件id,如下所示:
假设复合组件ID为“ccId”且子组件为“ccChildId”,输出的ID将如下所示:
ccId:ccChildId
因此,如果您想以动态方式引用子组件ID,则必须合成您的呼叫,包括父ID,以镜像生成的输出HTML。
在你的情况下,你的目标应该是这样的:
targets="fooid1:inFirstSpanbutton"