在JSF表中多选行

时间:2013-06-12 05:08:05

标签: jsf jsf-1.2 ajax4jsf

需要对jsf中的数据表进行排序(不使用rich,prime faces),并且该表应具有多选选项以选择特定行。这样就可以删除选定的行。 使用表单中的删除按钮。

有没有人可以提供一些想法如何使用ajax或普通的jsf东西? 我正在使用JSF 1.2版本。

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

感谢任何帮助

2 个答案:

答案 0 :(得分:3)

有两个不同的问题。对于排序,您可以简单地使用“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()">

此处editable是bean中的布尔值。

删除行

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

     }

答案 1 :(得分:0)

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

如何使用h:selectBooleanCheckBox的示例                                    

要删除选定的复选框,请在Managed Bean中编写一个方法,以便从数据表中访问所选值,并将其从ArrayList中删除并渲染页面。

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