我能够呈现动态,但不知道如何在后端获取这些动态创建的值。
test.xhtml
<h:form>
Insert Your Desire Number : <h:inputText value="#{bean.number}">
<f:ajax listener="#{bean.submitAjax}" execute="@form" render="@form" event="keyup" />
</h:inputText>
<br></br>
<h:outputText value="#{bean.text}" />
<h:dataTable value="#{bean.items}" var="item">
<h:column>
<h:inputText value="#{item.value}" />
</h:column>
</h:dataTable>
<h:commandButton value="Submit" action="#{item.submit}" />
</h:form>
如果我渲染3个输入框,当我提交按钮时我只得到最后一个值,有人可以指导我我该怎么办
Bean.java
@ManagedBean(name="bean")
@SessionScoped
public class Bean {
private int number;
private List<Item> items;
private Item item;
//getter and setter are omitted
public void submitAjax(AjaxBehaviorEvent event)
{
items = new ArrayList<Item>();
for (int i = 0; i < number; i++) {
items.add(new Item());
}
}
}
Item.java
private String value;
//getter and setter are omitted
public void submit() {
System.out.println("Form Value : "+value);
}
答案 0 :(得分:1)
您的submit()
方法位置错误。您应该将它放在托管bean上,而不是放在实体上。
如此,
<h:commandButton value="Submit" action="#{bean.submit}" />
与
public void submit() {
for (Item item : items) {
System.out.println(item.getValue());
}
}
或更正式,
@EJB
private ItemService service;
public void submit() {
service.save(items);
}