<f: setPropertyActionListener> Родитель не относится к типу ActionSource, тип: com.sun.faces.component.PassthroughElement
Я использую элементы Passthrough в своем проекте JSF, и мне нужно сделать что-то похожее на это:
<h:commandLink action="#{myBean.acao()}" value="click me">
<f:setPropertyActionListener target="#{myBean.object}" value="#{localObject}"/>
</h:commandLink>
но используя элементы Passthrough для большего контроля над моим интерфейсом, как, например, попытка ниже:
<a href="#" jsf:action="#{myBean.acao()}">click me
<f:setPropertyActionListener target="#{myBean.object}" value="#{localObject}"/>
</a>
но, видимо, это не работает, я получаю следующее сообщение об ошибке:
<f:setPropertyActionListener> Parent is not of type ActionSource, type is: com.sun.faces.component.PassthroughElement
Кто-нибудь знает, как я мог решить это?
1 ответ
Похоже, просто ошибка в вашей версии Mojarra. Это работает для меня с текущей последней версией 2.2.12.
Вы можете обойти это, используя функцию EL 2.2 передачи аргументов метода. См. Также Вызов прямых методов или методов с аргументами / переменными / параметрами в EL. Это, безусловно, доступно в вашей среде, как #{myBean.acao()}
по-видимому, не выдает исключение EL (этот синтаксис не поддерживается до EL 2.2).
<a href="#" jsf:action="#{myBean.acao(localObject)}">click me</a>
Если вам абсолютно необходимо вызвать установщик во время события слушателя действия, например, потому что вы хотите контролировать вызов action
бросая AbortProcessingException
если заданное значение недопустимо, см. также Различия между action и actionListener, затем объявите jsf:actionListener
,
<a href="#" jsf:actionListener="#{myBean.setObject(localObject)}" jsf:action="#{myBean.acao}">click me</a>