需要在 jsf 中对数据表进行排序(不使用丰富的素面),并且该表应该具有多选选项来选择特定的行。以便可以删除选定的行。使用表单中的删除按钮。
谁能提供一些想法如何使用 ajax 或普通的 jsf 东西来做到这一点?我正在使用 JSF 1.2 版本。
我已经完成了谷歌搜索,但我无法看到任何示例。
任何帮助表示赞赏
有2个不同的问题。对于排序,您可以简单地使用“tomahawk”库的“Datatable”标签,其中包含名为“sortable”的属性。您只需将其设置为“true”,它就会解决您的问题。
将此条目放在您的页面中
<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t"%>
要删除多个选定的行,请将您的数据表与 htmlDataTable 绑定并在您的 bean.like 中取一个布尔值...
<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);
}
使用h:dataTable从 POJO 的 ArrayList 中显示您的行。此 POJO 应该有一个布尔值来表示其选择。(POJO 的 ArrayList 必须在您的托管 Bean 中。)然后将该布尔变量映射到 ah:selectBooleanCheckBox 中列和渲染。
如何使用 h:selectBooleanCheckBox 的示例
要删除选定的复选框,请在托管 Bean 中编写一个方法,以访问数据表中的选定值,并将其从 ArrayList 中删除并呈现页面。
对于排序,请遵循类似的方法,在 ManageBean 中编写一个方法,当单击用于排序/删除的 commandLink/commandButton 按钮时,该方法将对 arrayList 执行排序。注意:我不太了解在 Faces 1.2 中使用 Ajax,所以我的方法就像用 ah:form 包装数据表并提交此表单以访问排序、删除的方法。