2015-05-24 59 views
0

我有一個dataTable,其中一列包含selectOneMenu(a.k.a dropDownList)。基本上每行都有一個selectOneMenu,它有一個值列表。只要選擇了selectOneMenu值,是否可以傳遞行數據或鍵?這樣我可以依次通過我的對象列表,分配行的特定對象,並更改值 這不是我的代碼,但一個簡單的例子: 通過p獲取p:dataTable行數據selectOneMenu

<p:column headerText="Year"> 
     <h:outputText value="#{car.year}" /> 
    </p:column> 

    <p:column headerText="Brand"> 
     <h:outputText value="#{car.brand}" /> 
    </p:column> 

    <p:column headerText="SelectOne"> 
     <p:selectOneMenu value="#{dtBasicView.selectedValue}"> 
      <f:selectItem itemLabel="#{dtBasicView.listOfValues}" /> 
      <f:selectItems value="#{dtBasicView.listOfValues}"/> 
     </p:selectOneMenu></p:column> 
</p:dataTable> 
+1

你有沒有看到任何的primefaces網站或手冊上的例子,在這同一主題的? – kolossus

回答

2

這樣我可以遍歷我的對象列表,分配該行的特定對象並更改值

這種努力是不必要的。只需將輸入組件的值直接綁定到所需的屬性即可。

<p:selectOneMenu value="#{car.selectedValue}"> 

這樣JSF就會透明地爲您做所有這些工作。

如果您打算在值更改事件上監聽,以便您可以執行任何其他操作,請在輸入組件中嵌套<p:ajax listener="#{bean.listener}">。您甚至可以將當前行對象傳遞給偵聽器方法。

<p:selectOneMenu ...> 
    ... 
    <p:ajax listener="#{bean.changeSelectedValue(car)}" /> 
</p:selectOneMenu> 

public void changeSelectedValue(Car car) { 
    // ... 
} 
+0

我認爲你誤解了我的問題:我將嘗試再次解釋它: 學生對象具有以下值:名稱,姓氏和出勤 在數據表中有三列:名稱(僅顯示studet的名稱),姓氏(顯示姓氏)和出勤(具有兩個項目的selectOneMenu:存在或不存在)。我實現了你的建議: ' '但是當狀態改變時,該值,但沒有得到該行。我需要這一行。 – FancyPants

+0

編輯:''當您選擇行時有效。我只需要更改該行的一個值 – FancyPants

+0

查看更新的答案。 – BalusC