2012-01-11 76 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