【问题标题】:JSF 2.0 Dynamically Remove ComponentsJSF 2.0 动态删除组件
【发布时间】:2025-12-13 22:05:01
【问题描述】:

在回答有关在 JSF 2.0 中动态添加组件的问题(请参见下面的链接)之后,我喜欢使用数据表的方法,但是删除其中一个添加的组件呢?

How to dynamically add JSF components

【问题讨论】:

    标签: datatable components jsf-2 dynamic


    【解决方案1】:

    根据您链接的other question中的代码sn-p,您需要进行以下更改:

    1. 在表格中添加一个带有删除按钮的列。

      <h:column><h:commandButton value="delete" action="#{bean.delete}" /></h:column>
      
    2. DataModel&lt;Item&gt; 属性添加到bean 并将项目列表包装在其中,以便您能够获取单击按钮的表格行。

      private DataModel<Item> model = new ListDataModel<Item>(items);
      

      (别忘了getter,注意你也可以在bean构造函数或者postconstruct中实例化这个)

    3. 改为在数据表中使用它。

      <h:dataTable value="#{bean.model}" var="item">
      
    4. 为 bean 添加一个删除方法。

      public void delete() {
          items.remove(model.getRowData());
      }
      

    另见:

    【讨论】: