如何dynamic添加JSF组件
我可以dynamic添加JSF组件吗? 我需要有一个button,应该添加一个<h:inputText>到窗体的forms。 这可能吗? 
 我知道这应该是可能的JavaScript在某种程度上。 有谁知道如何在JSF中做到这一点? 我认为主要的问题是如何通过#{value}获取或设置新input的#{value} 。 
 使用像<h:dataTable>或<ui:repeat>这样的迭代组件显示dynamic大小的实体List 。 使bean @ViewScoped确保列表在同一个视图的回传中被记住,而不是一遍又一遍的重新创build。 
 用<h:dataTable>开启的例子: 
 <h:form> <h:dataTable value="#{bean.items}" var="item"> <h:column><h:inputText value="#{item.value}" /></h:column> <h:column><h:commandButton value="remove" action="#{bean.remove(item)}" /></h:column> </h:dataTable> <h:commandButton value="add" action="#{bean.add}" /> <h:commandButton value="save" action="#{bean.save}" /> </h:form> 
托pipebean:
 @ManagedBean @ViewScoped public class Bean { private List<Item> items; @PostConstruct public void init() { items = new ArrayList<Item>(); } public void add() { items.add(new Item()); } public void remove(Item item) { items.remove(item); } public void save() { System.out.println("items: " + items); } public List<Item> getItems() { return items; } } 
模型:
 public class Item { private String value; public String getValue() { return value; } public void setValue(String value) { this.value = value; } public String toString() { return String.format("Item[value=%s]", value); } } 
也可以看看:
- 推荐的JSF 2.0 CRUD框架
- 如何创builddynamic的JSF表单域
- 如何使用JSF 2.0复合组件实现dynamic列表?
- 如何select合适的bean范围?
这应该是这样的
绑定一个表单标签到bean属性
 <form binding="#{myBean.myform}">...</form> 
 @ManagedBean("myBean") public class Bean{ property HtmlForm myform; } 
在事件上,创buildinput组件的新实例
 HtmlInputText input=new HtmlInputText(); 
并附上您的表格
 myform.getChildren().add(input); 
 使用h:dataTabledynamic添加元素…有一个你想为dataTable提供值的任何types的列表… 
 在h:dataTable ,您可以包含要在<h:column>内部创build的元素标记 
它将用于生成要dynamic创build的元素。