【发布时间】:2013-04-22 21:11:02
【问题描述】:
我正在尝试在 Primefaces 数据表中添加新行,然后我想提交该表的内容并执行一些业务逻辑。数据表模型是在 ViewScoped 托管 bean 中维护的集合。
我正在使用 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
}
实际发生了什么:
- 用户单击“添加行”按钮,添加了一个新行(我需要立即为真,因此不进行验证,这些字段是更大表单的一部分)。
- 用户点击“do stuff”,集合大小合适(包含新行),但未考虑用户的输入(既未修改预先退出的行,也未在新添加的行中添加新值)。
我还能做些什么来提交新值?我才刚刚开始 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?
【问题讨论】:
标签: jsf jsf-2 primefaces