我有一个数据表,其中行是动态的,每行包含selectOneMenu
。如果我在每一行都有一个按钮,并且我想在selectOneMenu
上获取所选项目,那么最好的方法是什么?
答案 0 :(得分:4)
将数据集value
中的数据集包裹在DataModel<E>
。
private List<Item> items;
private DataModel<Item> model; // +getter
@PostConstruct
public void init() {
this.items = loadItSomehow();
this.model = new ListDataModel<Item>(items);
}
(此示例中的Item
只是代表每一行的javabean类,例如Person
,Product
等)
将其绑定到数据表的value
。
<h:dataTable value="#{bean.model}" var="item">
如果下拉列表绑定到Item
的属性,并且该按钮绑定到同一个bean的方法...
<h:column>
<h:selectOneMenu value="#{item.value}">
<f:selectItems value="#{bean.values}" />
</h:selectOneMenu>
</h:column>
<h:column>
<h:commandButton value="submit" action="#{bean.submit}" />
</h:column>
...然后您可以按DataModel#getRowData()
获取当前项目,并且相应地在操作方法中获取所选值,如下所示:
public void submit() {
Item item = model.getRowData();
String value = item.getValue();
// ...
}