通过 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) {
// ...
}
我有一个数据表,其中一列包含一个 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) {
// ...
}