primefaces3.0数据表选择和值属性

时间:2012-01-11 10:37:45

标签: jsf-2 primefaces

我已将项目从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它是否与该值有关该值也是一个数组,选择也是一个数组。

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>