使用JSF的事件机制实现复选框的全选

一般在类似于struts,webwork这样的基于请求的框架来说,实现复选框的全部选择需要借助javascript来完成。但对于jsf这样基于事件的框架来说,实现复选框的权限可以通过jsf本身提供的一些功能来完成。

下面就做一个简单的利用jsf的事件机制实现checkbox的全选功能。

首先定义一个pojo类,代码如下所示

package com.zxyg.jsf.model;

public class User {

private String username;

private String password;

/** 为了实现全选,必须定义一个boolean的变量 **/
private boolean selected;

public boolean isSelected() {
return selected;
}

public void setSelected(boolean selected) {
this.selected = selected;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

}



这里要说明的是,由于jsf是基于前台向后台传递事件来达到某些功能,所以我要在User类里面定义一个boolean的变量用来表示是否选择上。

接下来定义后台的BackingBean,代码如下

package com.zxyg.jsf.backingbean;

import java.util.ArrayList;
import java.util.List;

import javax.faces.event.ActionEvent;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

import com.zxyg.jsf.model.User;

public class UserBean {

private DataModel dataModel;

private boolean selectAll;

public UserBean() {
dataModel = new ListDataModel();
}

/**
* dataModel中加入数
* 这里用了一个集合来模拟从数据库中去出来的数据
* @return
*/
public String queryData() {
List<User> userList = new ArrayList<User>();
for (int i = 0; i < 10; i++) {
User user = new User();
user.setUsername("hello" + i);
user.setPassword("abc" + i);
userList.add(user);
}
dataModel.setWrappedData(userList);
return "selectAll";
}

public DataModel getDataModel() {
return dataModel;
}

/**
* 这里接受处理页面的监听方法,
* 点击后是否全选或取消全选
* @param event
*/
public void disAndselectAll(ActionEvent event) {
List<User> userList = (List<User>) dataModel.getWrappedData();
for (User user : userList) {
user.setSelected(selectAll);
}

}

public void setDataModel(DataModel dataModel) {
this.dataModel = dataModel;
}

public boolean isSelectAll() {
return selectAll;
}

public void setSelectAll(boolean selectAll) {
this.selectAll = selectAll;

}

}


faces-config.xml配置文件如下

<?xml version="1.0" encoding="UTF-8"?>
<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
version="1.2">

<managed-bean>
<managed-bean-name>userBean</managed-bean-name>
<managed-bean-class>
com.zxyg.jsf.backingbean.UserBean
</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>

<navigation-rule>
<navigation-case>
<from-outcome>selectAll</from-outcome>
<to-view-id>/select_all.jsp</to-view-id>
</navigation-case>
</navigation-rule>
</faces-config>



后台准备工作结束后,下面是前端页面代码,代码如下

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<f:view>
<h:form>
<h:dataTable var="user" value="#{userBean.dataModel}">
<h:column>
<f:facet name="header">
<h:commandLink actionListener="#{userBean.disAndselectAll}">
<h:selectBooleanCheckbox value="#{userBean.selectAll}"></h:selectBooleanCheckbox>
</h:commandLink>
</f:facet>
<h:selectBooleanCheckbox value="#{user.selected}"></h:selectBooleanCheckbox>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="username">
</h:outputText>
</f:facet>
<h:outputText value="#{user.username}"></h:outputText>
</h:column>

<h:column>
<f:facet name="header">
<h:outputText value="password"></h:outputText>
</f:facet>
<h:outputText value="#{user.password}"></h:outputText>
</h:column>

</h:dataTable>
</h:form>
</f:view>


都搞定以后,跑起来看下。全选功能都实现了,如下图所示。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值