将新行添加到 p:datatable 然后提交内容

2024-02-23

我正在尝试在 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% 掌握了它。

感谢您的帮助。

可能的重复:

  • 通过 AJAX 使用请求范围的 bean 将一行添加到 h:dataTable 中,而不会丢失行数据 https://stackoverflow.com/questions/3635013/add-a-row-to-hdatatable-via-ajax-with-request-scoped-bean-without-losing-the-ro
  • 如何在 JSF 中的表中动态添加行? https://stackoverflow.com/questions/2278353/how-to-dynamically-add-a-row-in-a-table-in-jsf/2280157#2280157
  • JSF 数据表:添加和删除行清除行值 https://stackoverflow.com/questions/11092513/jsf-datatable-adding-and-removing-rows-clear-rows-values

Edit:感谢 Jitesh,问题得到了解决,可以在此处找到一个工作示例:JSF2,我可以动态添加JSF组件吗? https://stackoverflow.com/questions/3409053/jsf2-can-i-add-jsf-components-dynamically?lq=1


唯一的问题是您在 inputText 中使用不可变对象。要了解此检查BaluC 的回答 https://stackoverflow.com/questions/12690850/adding-inputtext-elements-dynamically-to-a-bound-datatable-empties-other-inputte

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

尝试从命令按钮中删除立即属性,您会发现插入每一行时数据都会被清除。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将新行添加到 p:datatable 然后提交内容 的相关文章

随机推荐

  • 在任务管理器之间均匀分配 Flink 运算符

    我正在 15 台机器的裸机集群上构建 Flink 流应用程序原型 我使用带有 90 个任务槽 15x6 的纱线模式 该应用程序从单个 Kafka 主题读取数据 Kafka主题有15个分区 所以我也将源算子的并行度设置为15 但是 我发现 F
  • 如何知道 MediaRecorder 何时完成将数据写入文件

    在进行实际录制之前 我们使用 MediaRecorder 使用 setOutputFile 将视频录制到外部存储上的文件中 一切正常 但主要问题是 录制完成后 我们希望开始在 VideoView 中播放录制的视频 如何知道文件何时可以读取和
  • CasperJS 无法设置 window.navigator 对象

    尝试使用 CasperJS 抓取网页 网页检查浏览器是否为 IE 6 7 使用 casperjs 传递 userAgent 似乎不满足其条件 UserAgent 通过 Mozilla 4 0 兼容 MSIE 6 0 Windows NT 5
  • Django Admin + FORCE_SCRIPT_NAME + 登录重定向不正确

    我让 Django 在 Nginx 后面运行fastcgi pass 我在子路径上运行 Django 例如 django sample location django sample include fastcgi params fastcg
  • 导入带有外键的 csv

    假设我有 2 个表 学生和团体 Group 表有 2 列 id GroupName Student 表有 3 列 id StudentName 和 GroupID GroupID 是 Group 字段的外键 我需要从 CSV 导入 学生 表
  • 需要来自 MySql 数据库的日期块数组

    好的 我有一个包含 StartDate 和 EndDate 的行的数据库表 我需要做的是从中返回消耗的时间块 例如 如果我有 3 行 如下所示 RowID StartDate EndDate 1 2011 01 01 2011 02 01
  • 自动加载 Word 任务窗格 Office 加载项

    我们正在为内部组织文档开发 Word 任务窗格 Office 加载项 不是 VSTO 在 Word 2013 桌面版 中 当我们插入加载项并保存文档时 当我们重新打开该文档时 加载项会自动加载 在 Word Online 中 此行为有所不同
  • Sklearn KNeighborsRegressor 自定义距离度量

    我正在使用 KNeighborsRegressor 但我想将它与自定义距离函数一起使用 我的训练集是 pandas DataFrame 如下所示 week day hour minute temp humidity 0 1 9 0 1 1
  • ubuntu 中的 php GD 库错误

    我正在使用 ubuntu 11 04 当我打开终端并输入时php a它显示一些像这样的错误 PHP Warning PHP Startup Unable to load dynamic library usr lib php5 200906
  • 在 PHP 的扩展类中使用父变量

    我有两门课 主课和扩展课 我需要在扩展类中使用主变量 我能做谁呢 无效例如
  • 如何以编程方式获取 Android 中应用程序花费的时间

    我想获取我今天使用过的所有应用程序的使用时间 当我通过拨打电话获取这些详细信息时 4636 但我希望在 android 中以编程方式获得这些详细信息 请帮我解决这个问题 我们可以看到这些 Play 商店应用程序如何显示使用情况统计信息 具有
  • 初始化自定义数组类而不创建副本

    我编写了一个自定义数组容器 就像大多数 C 库一样 包括std array and std iterator不适用于目标 嵌入 模板类基本上按预期工作 但是我没有设法设置一个构造函数 它可以初始化整个数组而不创建副本 我尝试了几种构造函数
  • Javafx Webview 的 Ajax 调用失败

    已关注this https stackoverflow com a 16405964 1900006 尽管来自链接的 Ajax 调用执行时没有任何错误 但在 HTML 中使用以下函数仍然会失败 document ready function
  • Spring Boot中如何处理最大文件大小异常?

    我正在使用 Spring Boot v1 2 5 创建 REST 应用程序 上传图像时 我会检查最大文件大小 该属性提供了以下属性 multipart maxFileSize 128KB 在应用程序属性中 该功能由 Spring Boot
  • 如何使用 Java Apache POI 从 Excel 中删除整行?

    我想从 Excel 中删除整行 我努力了removeRow XSSFRow rerow sheet1 getRow 1 sheet1 removeRow rerow and shiftRows int rowIndex 1 int last
  • Javascript 禁用最佳实践? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想知道如果用户禁用了 Javascript 是否有人会优化他们的网页以实现一些友好的行为 在这种情况下是否有任何技巧可以提供一些伪脚
  • EF Add-Migration 指示“没有挂起的显式迁移”,但 Update-Database 抱怨“..有挂起的更改”

    我经常在实体框架代码优先迁移中遇到以下情况 我添加了一些迁移并成功地用它们更新了数据库 当稍后我希望添加新的迁移时 Add Migration 命令抱怨其 无法生成显式迁移 因为以下显式迁移正在挂起 也就是说 它似乎忘记了它之前已经应用了这
  • valgrind - 查找共享库中的内存泄漏

    我需要知道如何找出共享库中的内存泄漏 该库将被加载到发布二进制文件中 我的意思是我使用 g 选项构建的共享库 但加载共享库的二进制文件不是使用 g 选项构建的 我得到的泄漏报告如下 739 at 0x4A05809 malloc vg re
  • 如何删除非法字符以便数据框可以写入 Excel

    我正在尝试使用 ExcelWriter 将数据框写入 Excel 电子表格 但它不断返回错误 openpyxl utils exceptions IllegalCharacterError 我猜数据框中有一些 ExcelWriter 不喜欢
  • 将新行添加到 p:datatable 然后提交内容

    我正在尝试在 Primefaces 数据表中添加一个新行 然后我想提交该表的内容并执行一些业务逻辑 数据表模型是在 ViewScoped 托管 bean 中维护的集合 我正在使用 JSF 2 1 和 Primefaces 3 3 简短的例子