目前我有这个代码,通过html请求动态添加组件。正如我所预料的那样。但是我想通过使用ajax请求而不是html来添加组件。
test.xhtml
<h:dataTable value="#{testController.items}" var="item">
<h:column><h:inputText value="#{item.name}" /></h:column>
<h:column><h:commandButton value="remove" action="#{testController.remove(item)}" /></h:column>
</h:dataTable>
<h:commandButton value="add" action="#{testController.add}" />
支持bean @ManagedBean
@ViewScoped
public class TestController implements Serializable {
private List<Language> items = new ArrayList<Language>();
public void add() {
items.add(new Language());
}
public void remove(Language item) {
items.remove(item);
}
public List<Language> getItems() {
return items;
}
}
现在我需要使用ajax请求来做到这一点。我该怎么做呢?
这段代码为我工作
<h:dataTable id="testTable" value="#{testController.items}" var="item">
<h:column><h:inputText value="#{item.name}" /></h:column>
<h:column><h:commandButton value="remove" action="#{testController.remove(item)}" /></h:column>
</h:dataTable>
<h:commandButton value="add" action="#{testController.add}">
<f:ajax execute="@this" render="testTable" />
</h:commandButton>