Я делаю свой собственный составной компонент, и мне нужно передать действие в качестве параметра. Я нашел несколько решений этой проблемы (даже здесь, из-за переполнения стека), но моя проблема немного отличается.
Я не могу использовать атрибут целевого тега атрибута cc: потому что я выводю список (может быть (и будет) много целей ...). Есть ли способ, как нацелить все ссылки на команды?
Спасибо.
<!-- 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
Атрибут Target работает, только если у меня есть только одна ссылка вне цикла ...
EDIT:
Так я называю компонент
<mondis:itemList list="#{objectBean.object.subObjects}" action="object"/>
Объект является результатом (вид на который должен быть перенаправлен экран)