f: аргумент метода слушателя ajax
TODO: Получить выбранную строку в h:datatable.
Фрагмент кода с использованием привязки HtmlDataTable:
<h:dataTable value="#{bean.licenses}" var="license" rendered="#{!empty bean.licenses}" binding="#{bean.dataTable}">
<h:column>
<h:selectOneRadio onclick="uncheckOthers(this);" >
<f:selectItem itemValue="null" />
<f:ajax listener="#{bean.updateSelected}" render="licenseGenerator:submitButtons">
<f:param name="license" value="#{license}" />
</f:ajax>
</h:selectOneRadio>
</h:column>
</h:dataTable>
Таким образом, вышеупомянутое является одним из способов сделать это, однако, так как я уже использую EL 2.2, я пытался сделать что-то вроде принятого ответа. и обновите f:ajax до
<f:ajax listener="#{bean.updateSelected(license)}" render="licenseGenerator:submitButtons">
Когда я обновляю код с помощью приведенного выше кода, слушатель не вызывается, поэтому я проверил документацию, которая гласит:
javax.el.MethodExpression (подпись должна соответствовать общедоступному void processAjaxBehavior(событие javax.faces.event.AjaxBehaviorEvent) генерирует javax.faces.event.AbortProcessingException)
Итак, в основном с вышеуказанной подписью я не могу использовать что-то вроде
public void listener(License license){
//...
}
Однако, так как это был принятый ответ, я уверен, что что-то здесь упускаю. Спасибо за помощь!
Версия JSF: Внедрение JSF Mojarra 2.2.12
Сервер: Apache Tomcat 8.0.24