2012-01-11 42 views
0

我已将项目从Primefaces 2.2升级到3.0
我在Datatable中遇到问题。我有一个数据表,其值我公司通过列表填充和选择行保留在阵列primefaces3.0数据表选择和值属性

<p:dataTable id="datavalues" value="#{bean.list}" 
         var="o" paginator="true" rows="10" 
         selection="#{bean.selected1}"   
          rowKey="#{o.property1}" > 

现在我想在其他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 

列表中,选择的1,selected2是beanHelper类的所有属性。 这段代码完全适用于2.2它有什么用处该值也是一个数组,选择也是一个数组。

回答

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的部分页面更新。

+0

感谢您的回复。我的数据表在不同的.xhtml页面中。如何更新不同页面的ID – curious 2012-01-11 13:58:56

+0

我没有看到带有异常的编辑,所以这可能只是beanHelper类中的代码问题。没有看到你的代码,我无法告诉。 – 2012-01-11 14:16:40

0

我认为你应该尝试在你的第一个<p:dataTable>selectionMode="single"的第二个<p:dataTable>中加上selectionMode="multiple"

+0

我必须从第二个数据表中选择多个项目。 – curious 2012-01-16 07:13:18

+0

@curious那么'selected1'和'selected2'都必须是'List' – 2012-01-16 11:33:47