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

Get p:dataTable row data via p:selectOneMenu

我有一个数据表,其中一列包含一个 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>

This way I can loop through my list of objects, allocate that specific object of the row and change the value

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

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