Jsf h:在循环中选择一个菜单
我想记住c:forEach循环中多个h:selectOneMenu组件的值。现在只有h:selectOneMenu中的最后一个值被记住。我不知道会出现多少个h:selectOneMenuJsf h:在循环中选择一个菜单,jsf,Jsf,我想记住c:forEach循环中多个h:selectOneMenu组件的值。现在只有h:selectOneMenu中的最后一个值被记住。我不知道会出现多少个h:selectOneMenu <h:panelGrid id="wynik" columns="2" border="0" cellpadding="2"
<h:panelGrid
id="wynik"
columns="2"
border="0"
cellpadding="2"
cellspacing="0"
rowClasses="jsfcrud_odd_row,jsfcrud_even_row"
rules="all"
style="border:solid 1px">
<h:outputText id="ns" value="Numer stanowiska"/>
<h:outputText id="kontr" value="Kontroler"/>
<c:forEach
var="stanowisko"
begin="1"
end="#{stojakiController.selected.iloscstanowisk}"
step="1">
<h:column>
<h:outputText value="#{stanowisko}"/>
</h:column>
<h:column>
<h:selectOneMenu
id="kontroler_#{stanowisko}"
value="#{wyposazenieStojakaController.selected.kontroler}"
title="#{bundle.CreateWyposazenieStojakaTitle_kontroler}"
required="true"
requiredMessage="#{bundle.CreateWyposazenieStojakaRequiredMessage_kontroler}">
<f:selectItems value="#{kontroleryController.itemsAvailableSelectOne}"/>
</h:selectOneMenu>
</h:column>
</c:forEach>
</h:panelGrid>
这不是基于动态大小集合呈现表的正确方法。您正在将每一行的值绑定到一个相同的支持bean属性。每当每行需要设置值时,此属性都会被覆盖。这就是为什么最后只得到最后一行的值 您应该使用
,而不是带有
的
。您应该准备一组具体的模型对象,而不仅仅是对象的大小。比如说,
public class Item {
private String value;
// ...
}
然后,在支持bean的(post)构造函数中,您应该准备尽可能多的内容
public class Bean {
private List<Item> items;
@PostConstruct
public void init() {
items = new ArrayList<Item>();
for (int i = 0; i < yourDesiredAmountOfItems; i++) {
items.add(new Item());
}
}
// ...
}
公共类Bean{
私人清单项目;
@施工后
公共void init(){
items=newarraylist();
对于(int i=0;i
下面是一个基本的开始示例,您应该如何使用它:
<h:dataTable value="#{bean.items}" var="item">
<h:column>
<h:selectOneMenu value="#{item.value}">
<f:selectItems value="#{bean.availableValues}" />
</h:selectOneMenu>
</h:column>
</h:dataTable>
提交表单时,JSF将在与该行关联的每个单独的item对象中正确设置每一行的值。这不是基于动态大小集合呈现表的正确方法。您正在将每一行的值绑定到一个相同的支持bean属性。每当每行需要设置值时,此属性都会被覆盖。这就是为什么最后只得到最后一行的值 您应该使用
,而不是带有
的
。您应该准备一组具体的模型对象,而不仅仅是对象的大小。比如说,
public class Item {
private String value;
// ...
}
然后,在支持bean的(post)构造函数中,您应该准备尽可能多的内容
public class Bean {
private List<Item> items;
@PostConstruct
public void init() {
items = new ArrayList<Item>();
for (int i = 0; i < yourDesiredAmountOfItems; i++) {
items.add(new Item());
}
}
// ...
}
公共类Bean{
私人清单项目;
@施工后
公共void init(){
items=newarraylist();
对于(int i=0;i
下面是一个基本的开始示例,您应该如何使用它:
<h:dataTable value="#{bean.items}" var="item">
<h:column>
<h:selectOneMenu value="#{item.value}">
<f:selectItems value="#{bean.availableValues}" />
</h:selectOneMenu>
</h:column>
</h:dataTable>
当您提交表单时,JSF将在与该行关联的每个单独的item对象中正确设置每一行的值。您可以共享源代码吗?您可以共享源代码吗?