В настоящее время я создаю композитный компонент JSF с сигнатурой метода, которая может принимать параметры.
Вот выдержка:
<composite:interface>
....
<composite:attribute name="activateHeroMethod" method-signature="java.util.List action(id.co.sofcograha.core.Dto, id.co.sofcograha.core.Dto)" />
</composite:interface>
<composite:implementation>
....
<p:commandLink value="#{hero.map['heroName']}"
process="@this"
update="#{cc.attrs.update}"
oncomplete="infoRaceDialog.hide()"
image="ui-icon ui-icon-search">
<f:setPropertyActionListener value="#{hero}"
target="#{cc.attrs.activateHeroMethod(infoRaceBean.race, hero)}" />
</p:commandLink>
....
</composite:implementation>
target = "# {cc.attrs.activateHeroMethod (infoRaceBean.race, hero)}" "1007 * ужасно завершается со следующим сообщением об ошибке:
javax.faces.view.facelets.TagAttributeException: /resources/sofco/infoRace.xhtml @57,76 target="#{cc.attrs.activateHeroMethod(infoRaceBean.race, hero)}" /resources/sofco/infoRace.xhtml @57,76 target="#{cc.attrs.activateHeroMethod(infoRaceBean.race, hero)}" Illegal attempt to pass arguments to a composite component lookup expression (i.e. cc.attrs.[identifier]).
at com.sun.faces.facelets.tag.TagAttributeImpl.getValueExpression(TagAttributeImpl.java:401)
at com.sun.faces.facelets.tag.TagAttributeImpl.getValueExpression(TagAttributeImpl.java:351)
at com.sun.faces.facelets.tag.jsf.core.SetPropertyActionListenerHandler.applyAttachedObject(SetPropertyActionListenerHandler.java:128)
at com.sun.faces.facelets.tag.jsf.core.SetPropertyActionListenerHandler.apply(SetPropertyActionListenerHandler.java:101)
Можно ли вызвать параметризованный метод из атрибута составного компонента?
Я думаю, что могу работать с множеством как обходной путь работы с несколькими параметрами в одном методе, но мне не нравится подход, так как он будет увеличиваться в размере вместе с параметрами.
Я мог бы обернуть каждый параметр в 1 объект-обертку, но мне все еще любопытно, есть ли способ решить проблему вызова метода с несколькими параметрами.
Пожалуйста, поделитесь своими мыслями!
Спасибо.