我正在使用jsf2创建一个简单的复合组件,并且由于一个愚蠢的问题我被困住了。
我不知道如何将结果作为参数发送给复合,该参数将用作commandLink上的操作。
例如:
<!-- Usage -->
<my:comp myAction="myOutcome" />
<!-- Component -->
<composite:interface>
<composite:attribute name="myAction" required="true" />
</composite:interface>
<composite:implementation>
<h:form>
<h:commandLink action="#{cc.attrs.myAction}" value="Go" />
</h:form>
</composite:implementation>
<!-- Expected result -->
<h:form><h:commandLink action="myOutcome" value="Go" /></h:form>
我已阅读此topic,但未成功。
我发现的唯一解决方案是使用托管bean作为重定向器:
<h:commandLink action="#{redirectorBean.go(cc.attrs.myMaction)}" value="Go" />.
有人可以通过更好(更简单)的解决方案来帮助我实现这一目标吗?
谢谢
答案 0 :(得分:1)
属性名称必须为action
,您需要指定复合属性的targets
属性,该属性引用相对的commandlink客户端ID。
用法:
<my:comp action="myOutcome" />
复合组件:
<composite:interface>
<composite:attribute name="action" targets="form:go" required="true" />
</composite:interface>
<composite:implementation>
<h:form id="form">
<h:commandLink id="go" value="Go" />
</h:form>
</composite:implementation>