I've the below form:
<h:form>
<h:dataTable value="#{bean.items}" var="item">
<h:column>
<h:selectBooleanCheckbox value="#{item.enabled}" valueChangeListener="#{bean.onchangeEnabled}">
<f:ajax event="change" />
</h:selectBooleanCheckbox>
</h:column>
<h:column>#{item.name}</h:column>
</h:dataTable>
</h:form>
I would like to get #{item} or at least #{item.name} in the value change listener method:
public void onchangeEnabled(ValueChangeEvent e) {
// I would like to get #{item.name} here too.
}
How can I achieve this?
First of all, the
valueChangeListeneris the wrong tool for the job. Use<f:ajax listener>. Second,event="change"is the wrong choice in case of checkboxes/radiobuttons because their physical value actually never changes. You should useevent="click", but this is the default already, so you can just omit it.All in all, the proper initial code should look like this:
with
Once fixed it like that, then you can easily make use of EL 2.2 capability to pass method arguments:
with
See also: