2013-08-02 117 views
0

我使用primefaces 3.5,我想幫上了以下問題:Primefaces的DataTable Rowkey

我有選擇模式的DataTable單和所選擇的項目是綁定在對象上,而不是一個具體的對象屬性。下面的示例代碼:

<p:dataTable id="name" value="#{bean.items}" var="item" selectionMode="single" selection="#{bean.selected}" rowKey="#{item}"> 
<p:ajax event="rowSelect" /> 
<p:ajax event="rowUnselect" /> 
... 
</p:dataTable> 

在項目的創作,我不馬上堅持的項目數據庫,而不是我維護項目清單和行動保存處理過程中我堅持整個列表。

問題是,對於每個新創建的項目,我都沒有生成對象標識(在持久化時自動完成數據庫),並且在表格的行選擇過程中,所選項目始終是錯誤的。我可以在沒有唯一對象屬性的情況下管理正確的行選擇嗎?

回答

1

那是問題邏輯,如果使用自動生成的關鍵變化的方法等於/哈希碼到其他領域,因爲當你使用一個自動生成的,你必須有候選鍵

+0

因此,如果沒有任何唯一的關鍵對象是不可能的。我正在考慮使用對象哈希碼,但我必須改變我所有的實體。我將嘗試使用隨機生成器值,在保留階段之前,我會將其設置爲空以便數據庫處理它。這個解決方案是否是最佳實踐?你建議什麼? – user2644660

+0

閱讀好習慣等於和哈希碼https://community.jboss.org/wiki/EqualsAndHashCode –