我已将项目从Primefaces 2.2升级到3.0 我在Datatable面临问题。我有一个数据表,其值通过列表填充,选定的行保存在数组
<p:dataTable id="datavalues" value="#{bean.list}"
var="o" paginator="true" rows="10"
selection="#{bean.selected1}"
rowKey="#{o.property1}" >
现在我希望所选行在另一个Datatable中使用,并且在该Datatable上我使用了值“#{bean.selected1}”并选择为#{bean.selected2},因为我还需要从中选择的值表
<p:dataTable id="table4" var="o" value="#{bean.selected1}"
rows="10"
selection="#{bean.selected2}"
rowKey="#{o.property2}"
>
我得到的例外是:
[Lcom.packagedirectory.beans.beanHelper; cannot be cast to java.util.Collection
list,selected1,selected2是beanHelper Class的所有属性。 这段代码完美地工作在2.2它是否与该值有关该值也是一个数组,选择也是一个数组。
答案 0 :(得分:0)
在Primefaces 2.2中,选择会自动更新其bean值,但是这可能不适用于所有情况,因此在3.0中他们更改了它以便在发生ajax回发时需要放置<p:ajax>
在dataTable中标记rowSelect
个事件。
<p:dataTable id="table1" ... >
<p:ajax event="rowSelect" update="formid:table1 formid:table2" oncomplete="dlg.show()" />
...
</p:dataTable>
<p:dataTable id="table2" ... >
...
</p:dataTable>
第一个dataTable的选择应该触发第二个dataTable的服务器回发和部分页面更新。
答案 1 :(得分:0)
我认为您应该尝试在第一个selectionMode="multiple"
和<p:dataTable>
中添加selectionMode="single"
。{/ p>