我正在创建自己的复合组件,我需要将操作作为参数传递。我已经找到了几个解决这个问题的方法(即使在这里堆栈溢出),但我的问题有点不同。
我不能使用cc:attribute的目标标签属性,因为我输出的是一个列表(可能会(并且会有)很多目标......)。有什么办法,如何定位所有命令链接?
感谢。
<!-- INTERFACE -->
<cc:interface>
<cc:attribute name="list" required="true" />
<cc:attribute name="action" required="true"/>
</cc:interface>
<!-- IMPLEMENTATION -->
<cc:implementation>
<h:panelGroup layout="block" rendered="#{not empty cc.attrs.list}">
<ul>
<ui:repeat var="c" value="#{cc.attrs.list}">
<li>
<ice:form prependId="false">
<h:commandLink id="view" action="#{cc.attrs.action}" value="#{translationBean.translate(c, facesContext.externalContext.requestLocale.language)}" style="font-weight:bold;">
<f:param name="iri" value="#{c}" />
</h:commandLink>
</ice:form>
</li>
</ui:repeat>
</ul>
</h:panelGroup>
</cc:implementation>
使用此代码我得到:
java.lang.String cannot be cast to javax.el.ValueExpression
只有在循环外只有一个链接时,目标属性才有效...
编辑:
这就是我调用组件的方式
<mondis:itemList list="#{objectBean.object.subObjects}" action="object"/>
该对象是一个结果(视图应该是屏幕重定向)