一般在类似于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>
都搞定以后,跑起来看下。全选功能都实现了,如下图所示。
- 大小: 14.7 KB
分享到:
- 2009-10-30 13:49
- 浏览 3397
- 评论(2)
- 论坛回复 / 浏览 (2 / 3453)
- 查看更多
相关推荐
NULL 博文链接:https://sailinglee.iteye.com/blog/429696
主要讲述JSF的工作方式 JSF的工作方式 JSF架构 JSF模型 JSF事件类型
JSF+hibernate实现批量删除,CRUD
教你使用JSF和MyFaces实现文件上载。
这是一个使用jsf框架实现简易登录功能的小例子,对于初学者可以参考一下。
JSF是一种用于构建Java ... 包含JSP页面的JSF应用程序也使用由为了表现UI组件和在页面上的其他对象的JSF技术而定义的标准的tag库。 Java Server Faces技术的重要开发框架 sun-ri、myfaces、icefaces、richfaces、seam
这是JSF标准的实现框架,一个是JSF2.0的官方实现,一个是JSF2.2的Apache MyFaces实现。
jsf结合ajax实现文件上传,值得阅读
sun的jsf接口和实现的源文件下载,也可以在玻璃鱼项目中下载到!
JSF框架的jar和JSF的教程帮助你学习的JSF框架
jsf框架示例程序。jsf,hibernate,spring,ehcache.urlrewrite
jsf的初步使用(包括jsf框架的引入、用户登录、自定义表单验证、valueChangeEvent值变更事件处理做的级联下拉框)
基于JSF框架技术与Matlab的机械故障监测与诊断系统的设计与实现 基于JSF框架技术与Matlab的机械故障监测与诊断系统的设计与实现 基于JSF框架技术与Matlab的机械故障监测与诊断系统的设计与实现 基于JSF框架技术与...
JSF框架中使用的设计模式介绍.docx(office2007格式)
在基于J2EE 技术的三层架构软件开发过程中,大部分程序员比较习惯于所谓 的SSH 架构,即Struts+Spring+Hibernate。其中Struts 框架负责...笔者以一个实际的从数据库里查询的例子来演示一下JSF+Tomahawk框架 的使用。
需要使用JSF的开发人员,可以帮助你学习JSF,快速对JSF进行了解
JSF框架中文教程,包括JSF入门、Backing Beans、Beans 上的 List, Map、JSF Expression Language、JSF 生命周期、Phase 事件、TableModel 类别、等有关jsf的知识。
JSF实现文件的下载功能 public static void downloadFile(String path,String fileName) { try { // 获得JSF上下文环境 FacesContext context = FacesContext.getCurrentInstance(); // 获得ServletContext...
最近学习JSF,但资料较少,国内学习的人不多,自己摸索,采用JSF2.2、Hibernate5.0实现的一个JSF例子,简单实现了增删改查,尚未实现分页
Jsf整合三大框架及Spring Security以及Spring TestSuit!