通过p:selectOneMenu获取p:dataTable行数据

时间:2015-05-24 12:01:53

标签: jsf-2 primefaces datatable row selectonemenu

我有一个dataTable,其中一列包含selectOneMenu(a.k.a dropDownList)。基本上每行都有一个selectOneMenu,它有一个值列表。每当选择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 个答案:

答案 0 :(得分:3)

  

这样我就可以遍历我的对象列表,分配该行的特定对象并更改值

这种努力是不必要的。只需将输入组件的值直接绑定到所需的属性即可。

<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) {
     // ...
 }