【发布时间】:2012-01-13 00:46:01
【问题描述】:
我在数据表内的<h:selectBooleanCheckbox> 上调用valueChangeListener。并且该数据表再次位于另一个(外部)数据表中。在valueChangeListener 方法中,我想要外部数据表的实例对象。有没有办法获取外部dataTable实例的对象?
前:
<h:panelGroup id="panelId">
<p:dataTable id="outerDatatable"
var="supplier"
value="bean.supplierList">
<p:column>
<f:facet name="header">
<h:outputText value="Suppliers" />
</f:facet>
<h:outputText value="#{supplier.name}" />
</p:column>
<p:column>
<p:dataTable id="innerDataTable"
var="supplierAccount"
value="supplier.supplierAccountList">
<p:column>
<h:selectBooleanCheckbox id="booleanBoxId"
value="#{supplierAccount.supported}"
valueChangeListener="#bean.checkBoxListener}"
immediate="true"
onchange="this.form.submit();"/>
</p:column>
</p:dataTable>
</p:column>
</p:dataTable>
</h:panelGroup>
我找到了以下解决方案:我使用<p:ajax> 侦听器而不是valueChangeListener,并且可以将“供应商”对象以及supplierAccount 对象传递给此侦听器方法。我们可以将任意数量的自定义对象传递给<p:ajax> 监听器。
<p:column>
<h:selectBooleanCheckbox id="booleanBoxId"
value="#{supplierAccount.supported}"
immediate="true">
</h:selectBooleanCheckbox>
<p:ajax listener="#{bean.myListenerMethod(supplier,supplierAccount)}"
update=":formName:panelId"/>
</p:column>
【问题讨论】:
标签: jsf jsf-2 primefaces parameter-passing valuechangelistener