当前位置: 首页 > 知识库问答 >
问题:

向p:dataTable添加新行,然后提交内容

郎翔
2023-03-14
    <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%地得到它了。

  • 通过带有请求范围bean的AJAX向h:dataTable添加行,而不会丢失行数据
  • 如何在JSF中动态添加表中的行?
  • JSF DataTable:添加和删除行清除行值

编辑:问题解决多亏了Jitesh,这里可以找到一个工作示例:JSF2,我可以动态添加JSF组件吗?

共有1个答案

庄新翰
2023-03-14

唯一的问题是您在InputText中使用了不可变对象。要理解这一点,请看Baluc的回答

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

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

 类似资料:
  • 问题内容: 我只需要更新,而不需要更新整个表单。我尝试使用,,,但没有人正在为我想。使用时,它正在检查不需要执行的验证。 我该如何实现? 问题答案: 首先,仅因为它根本不支持该属性,它的确不会与一起使用。也许您真的打算使用? 修复a身份后, 阅读完该答案后,您应该已经发现数据表在该特定的代码段中由标识。因此,应该采取以下所有措施: 请注意,直到PrimeFaces 3.3为止,在某些复杂的UI组合

  • 问题内容: 我正在尝试将tinyMCE编辑器添加到我的页面,将其删除,然后再次添加,但出现错误。 当我运行A部分,然后运行B部分,而不是运行A部分时,出现错误: 甲部 B部分 编辑: 上面是创建JavaScript的后端分支,下面是完整的JavaScript函数。第一次通过它打开对话框并工作,其内容在编辑器中,没有错误。当我单击关闭按钮时,对话框关闭。当我再次运行该函数时,将显示对话框,但编辑器为

  • 问题内容: 我在理解CSS属性的行为时遇到了麻烦。根据规范和此处 顾名思义,和伪元素指定元素的文档树内容之前和之后的内容位置。 这似乎并未限制哪些元素可以具有(或)属性。但是,它似乎仅适用于特定元素 … 有效,无效,无效。我可以测试更多,但重点是。请注意,这在各个浏览器中似乎非常一致。 是什么决定对象是否可以接受和属性? 问题答案: 和都是被替换的元素。 替换的元素是其外观和尺寸由外部资源定义的任

  • 问题内容: 我们有一个简单的项目,我们从套接字读取数据,并希望用即将到来的数据填充表,但是我们找不到找到将行添加到尚未创建的对象的方法,只能在以下位置找到添加行的方法:表的创建时间。 是否可以向中动态添加行,或者有更好的替代对象来处理这种显示数据的方式? 编辑 :非常感谢您的回答。 他们三个看起来都很有前途,但是我只选择一个,我认为最好的就是纪尧姆的。 问题答案: 您应该创建一个自定义。A 实际上

  • 我有下面的代码从我的房间数据库的LiveData中获取信息- 出于某种原因,在观察者内部调用submitList不会将项添加到列表中。 我试图在观察者之前添加虚假的测试项目,它工作了,我在调用submitList方法之前记录了模型信息,它打印了有效信息。 我还试图用一个主分发器的协程来结束对submitList的调用,认为这与回调不在主线程中或类似的东西有关,但仍然没有结果。 我错过了什么?一切看

  • 我正在写申请表。它需要列出除了PI和表单提交者之外的研究团队成员。然而,一些研究将没有额外的团队成员,所以我希望该行保持隐藏,直到有人点击添加团队成员按钮。 什么在起作用: 1。我在最初加载页面时隐藏了元素。2.单击添加行可以添加正确的行。3.单击删除将删除一行。 目前存在的问题:1.如果有人添加团队成员,然后删除所有团队成员,单击添加团队成员将不会添加行。2.当元素在初始页面加载中隐藏时,第一次