我有一个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>
答案 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) {
// ...
}