【问题标题】:Multiselect rows in JSF tableJSF 表中的多选行
【发布时间】:2013-06-08 02:58:25
【问题描述】:

需要在 jsf 中对数据表进行排序(不使用丰富的素面),并且该表应该具有多选选项来选择特定的行。以便可以删除选定的行。 使用表单中的删除按钮。

谁能提供一些想法如何使用 ajax 或普通的 jsf 东西来做到这一点? 我正在使用 JSF 1.2 版本。

我已经进行了谷歌搜索,但我无法看到任何示例。

任何帮助表示赞赏

【问题讨论】:

  • 几周前我遇到了这个要求。您有具体的疑问还是要寻求完整的解决方案?
  • 如果您有解决方案。如果您分享您的建议或解决方案,对我有很大帮助。

标签: jsf jsf-1.2 ajax4jsf


【解决方案1】:

有 2 个不同的问题。对于排序,您可以简单地使用“tomahawk”库的“Datatable”标签,其中包含名为“sortable”的属性。您只需将其设置为“true”即可解决您的问题。

将此条目放在您的页面中

    <%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t"%>

要删除多个选定的行,请将您的数据表与 htmlDataTable 绑定并在您的 bean 中获取一个布尔值。像这样...

       <t:dataTable binding="#{bean.htmlDataTable}" 
        sortable="true">

数据表的列

          <t:selectBooleanCheckbox id="select1" value="#{item.editable} valueChangeListener="#{bean.yourMethod}" onclick="submit()">

此处可编辑是您的 bean 中的布尔值。

删除行

   for(int i=0; i<yourList.size(); i++)
    {
      YourBean obj=(yourBean)htmlDataTable.getRowData();
      if(obj.isEditable())
      yourList.remove(i);

     }

【讨论】:

  • 谢谢你 rishi。我知道使用 a4j 或 faces 2 可以轻松完成,但如果有人知道在 jsf 1.2 中实现这一点的任何好方法,我将不胜感激。
  • 与 htmlDatatable 绑定不是 JSF 2 的功能。我前段时间有这个要求,我在 jsf 1.2 中以相同的方式实现了它。通过 a4j,您可以只使用“a4j:commandButton”来防止您的页面刷新。逻辑将与我解释的相同。
【解决方案2】:

使用h:dataTable 从 POJO 的 ArrayList 中显示您的行。此 POJO 应该有一个布尔值来表示其选择。(POJO 的 ArrayList 必须在您的托管 Bean 中。) 然后将该布尔变量映射到列中的 h:selectBooleanCheckBox 并渲染。

如何使用 h:selectBooleanCheckBox 的示例

要删除选中的复选框,请在托管 Bean 中编写一个方法来访问数据表中的选中值,然后将其从 ArrayList 中移除并呈现页面。

对于排序,请按照类似的方法在 ManageBean 中编写一个方法,当单击用于排序/删除的 commandLink/commandButton 按钮时,该方法将对 arrayList 执行排序。 注意:我不太了解在 Faces 1.2 中使用 Ajax,所以我的方法就像用 h:form 包装数据表并提交此表单以访问排序、删除方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-09
    • 2010-10-19
    • 1970-01-01
    • 2012-03-27
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    相关资源
    最近更新 更多