2017-10-12 141 views
0

雖然這個問題有所重複,但我在網上搜索仍然找不到我想要的確切結果。在我的情況下,即時通訊使用具有CRUD功能的Primefaces在JSF中開發項目。我在p:dataTable中有超過3k條記錄。如果我想更新選定的5條記錄,我只能更新整個dataTable(花費很多時間)。如何使用Primefaces更新JSF中的數據表選擇行?

場景:

1)中數據表
2)選擇記錄點擊p:commandButton以執行業務邏輯和將提供所選記錄的結果。 (在p:commandButton我用數據表更新用)

注: 我只能被迫使用Primefaces。 (我發現omniFaces有解決方案,但我不應該使用)

請幫我一把!

回答

0

PrimeFaces將允許您使用PrimeFacesSelectors(PFS)基於styleClass更新組件。

update="@(.mystyle)"

您可以使用此服務您更新的數據表中特定行的目的。
這是策略:
1.將唯一的rowKey設置爲styleClass爲每行的每列。
2.在PFS處使用rowKey作爲您的update屬性。

這裏是一個簡短的代碼片段:

<p:dataTable var="mov" value="#{repeatUIBean.mList}" ro> 
    <p:column headerText="mov Name"> 
     <h:outputText styleClass="#{mov.uniqueId}" value="#{mov.name}"/> 
    </p:column> 

    <p:column headerText="mov Release Year"> 
     <h:outputText styleClass="#{mov.uniqueId}" value="#{mov.year}"/> 
    </p:column> 

    <p:column headerText="Edit mov"> 
     <p:commandButton value="Edit" update="@(.#{mov.uniqueId})"/> 
    </p:column> 
</p:dataTable> 
+0

我有30列,所以我需要寫uniquieid所有列。你能否詳細說明一下。 –

+0

'uniqueId'不需要是您在數據表中加載的Java Bean上的單獨屬性。只要選擇一個在你的bean中接近Unique的東西[另外,嘿,它總是一個非常好的主意,在java bean上有一個獨特的字段]。如果您選擇的任何內容在另一個bean中重複,那麼它將更新這些行。例如,在我的示例中,如果選擇'#{mov.name}',如果有另一行具有相同的電影名稱,則它將更新2行。我仍然會使用它,因爲它更好地更新幾行而不是整個數據表。 –

+0

在我的情況下,我需要使用命令按鈕更新選定的行。我選擇行並單擊命令按鈕來刷新行。 –

相關問題