jsf - 将新行添加到 p :datatable then submit content

标签 jsf jsf-2 primefaces

我正在尝试在 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?

    最佳答案

    唯一的问题是您在 inputText 中使用了不可变对象(immutable对象)。要了解这一点,请查看 BaluC's Answer

    根据它“作为一个不可变的对象,String没有setter方法。永远无法设置输入的值。”

    尝试从 commandButton 中删除 immediate 属性,您会发现在插入每一行时数据将被清除。

    关于jsf - 将新行添加到 p :datatable then submit content,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16274638/

    相关文章:

    jsf-2 - 在 JSF 中执行 preRenderView 事件后,如何显示模式对话框?

    JSF 1.2 与 Primefaces 3.1

    java - 使用 JSF、PrimeFaces 和 JPA : Create Basic WebApp without using Generated CRUD Classes, 表单等

    jsf - JSF 组件的 "ValueExpression Map"

    java - 什么是更好的 Java Web 应用程序框架(请提出建议)?

    jsf - 无法让 MenuItem 调用其 ActionListeners

    java - 在 JSF 中显示数据库数据时出现问题

    jsf - PrimeFaces CSS 皮肤未显示在登录页面中,还有 JavaScript 未定义错误

    javascript - js 编码新手 - 遇到变量和 for 循环的问题

    jsf - "IllegalArgumentException: Can not set [EJB interface] field [managed bean field] to com.sun.proxy.$Proxy[some number]"与 OmniFaces 的@Eager