我想在Primefaces数据表中添加一个新行,那么我想提交此表的内容,并做一些业务逻辑。数据表模型是在ViewScoped托管bean中维护的集合。添加一个新行到一个p:数据表,然后提交内容
我使用JSF 2.1 Primefaces 3.3。
短的例子:
<h:form id="my-form">
<p:dataTable value="#{testBean.list}" var="s" id="datatable">
<p:column>
<h:inputText value="#{s}"/>
</p:column>
<f:facet name="footer">
<p:commandButton value="Add row" action="#{testBean.addRow()}" process="@form" update="@form" immediate="true" />
<p:commandButton value="Do stuff" action="#{testBean.doSomeLogic()}" process="@form" update="@form"/>
</f:facet>
</p:dataTable>
</h:form>
托管Bean:
@ManagedBean
@ViewScoped
public class TestBean implements Serializable {
private List<String> list;
public TestBean() {
}
@PostConstruct
public void init() {
list = new ArrayList<String>();
list.add("one");
list.add("two");
}
public void addRow(){
list.add(new String());
}
public void doSomeLogic(){
for (String string : list) {
System.out.println(string);
}
}
// getters and setters
}
实际发生的: “添加行” 按钮
- 用户点击,一个新的行被添加(我需要立即成为真实的,所以没有进行验证,这些字段是更大形式的一部分)。
- 用户点击“做的东西”,收集有大小合适(新行),但用户的输入在不考虑(既不修改前退出行,也不是新加入行新值)。
我能做些什么太提交新的价值观?我只是开始JSF,我不知道我已经100%得到它。
感谢您的帮助。
可能的重复:
- Add a row to h:dataTable via AJAX with request-scoped bean without losing the row data
- How to Dynamically add a row in a table in JSF?
- JSF datatable: adding and removing rows clear rows values
编辑:问题就解决了由于Jitesh,工作示例可以在这里找到:JSF2, can I add JSF components dynamically?
感谢您指点我正确的方向,我删除了immediate属性,并使用了一个bean而不是String,并且做到了这一点。 – Virginie 2013-05-06 06:44:18
顺便说一句,你的链接是坏的,正确的一个[这里](http://stackoverflow.com/questions/12690850/adding-inputtext-elements-dynamically-to-a-bound-datatable-empties-other-inputte) – Virginie 2013-05-06 06:49:43
确定我已更新此帖子中的链接。 – Jitesh 2013-05-06 07:05:37