`

JSF中使用BooleanCheckbox实现全选功能

    博客分类:
  • JSF
阅读更多

两种方案:

一、在entity bean中添加一个额外的字段,用于指示该实体bean是否被选中。

二、entity bean中的字段完全是和数据库中字段对应的,即没有额外的用于指示是否被选中的字段;是否被选中则在托管bean中用一个Map来反映。

具体实现看代码:(:该文基于网络上的一些资料而完成)

/page/下的jsp:

<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<%--
The taglib directive below imports the JSTL library. If you uncomment it,
you must also add the JSTL library to the project. The Add Library... action
on Libraries node in Projects view can be used to add the JSTL 1.1 library.
--%>
<%--
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
--%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Test Checkbox</title>
        <script  language="javascript" type="">
        function SetCheckedStatus()
        {
            var oTable=document.getElementById('myform:dt');
            var oChkAll=document.getElementById('myform:dt:chkall');
            if(oTable != null && oChkAll != null)
            {
                for(j=1;j<oTable.rows.length;j++)
                {
                    oTable.rows[j].cells[0].childNodes[0].checked=oChkAll.checked;
                }
            }
        }
        </script>
        
    </head>
    <body>
        <f:view>
            <h:form id="myform">
                
                <h:dataTable id="dt" value="#{testManageBean.users}" var="usr" width="100%" border="1" cellpadding="0" cellspacing="0">
                    <h:column>
                        <f:facet name="header">
                            <h:selectBooleanCheckbox id="chkall" onclick="SetCheckedStatus();" value="#{testManageBean.chkall}"/>
                        </f:facet>
                        <h:selectBooleanCheckbox id="chkbox" value="#{usr.checked}"/>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText id="headerText1" value="姓名"/>
                        </f:facet>
                        <h:outputText value="#{usr.name}"/>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText id="headerText2" value="年龄"/>
                        </f:facet>
                        <h:outputText value="#{usr.age}"/>
                    </h:column>
                </h:dataTable>
                <h:commandButton id="showCheckedButton" action="#{testManageBean.showCheckedbox}" value="show checked users"/>
                <h:dataTable id="dts" value="#{testManageBean.checkedUsers}" var="usr" width="100%" 
                             rendered="#{testManageBean.showCheckedUsers}" border="1" cellpadding="0" cellspacing="0">
                    
                    <h:column>
                        <f:facet name="header">
                            <h:outputText id="header1" value="姓名"/>
                        </f:facet>
                        <h:outputText value="#{usr.name}"/>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText id="header2" value="年龄"/>
                        </f:facet>
                        <h:outputText value="#{usr.age}"/>
                    </h:column>
                </h:dataTable>
                
            </h:form>
        </f:view>
        
    </body>
</html>

 

 

<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<%--
The taglib directive below imports the JSTL library. If you uncomment it,
you must also add the JSTL library to the project. The Add Library... action
on Libraries node in Projects view can be used to add the JSTL 1.1 library.
--%>
<%--
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
--%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Test Checkbox</title>
        <script  language="javascript" type="">
        function SetCheckedStatus()
        {
            var oTable=document.getElementById('myform:dt');
            var oChkAll=document.getElementById('myform:dt:chkall');
            if(oTable != null && oChkAll != null)
            {
                for(j=1;j<oTable.rows.length;j++)
                {
                    oTable.rows[j].cells[0].childNodes[0].checked=oChkAll.checked;
                }
            }
        }
        </script>
        
    </head>
    <body>
        <f:view>
            <h:form id="myform">
                
                <h:dataTable id="dt" value="#{testMapManageBean.users}" var="usr" width="100%" border="1" cellpadding="0" cellspacing="0">
                    <h:column>
                        <f:facet name="header">
                            <h:selectBooleanCheckbox id="chkall" onclick="SetCheckedStatus();" value="#{testMapManageBean.chkall}"/>
                        </f:facet>
                        <h:selectBooleanCheckbox id="chkbox" value="#{testMapManageBean.checkedIds[usr.id]}"/>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText id="headerText1" value="姓名"/>
                        </f:facet>
                        <h:outputText value="#{usr.name}"/>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText id="headerText2" value="年龄"/>
                        </f:facet>
                        <h:outputText value="#{usr.age}"/>
                    </h:column>
                </h:dataTable>
                <h:commandButton id="showCheckedButton" action="#{testMapManageBean.showCheckedbox}" value="show checked users"/>
                <h:dataTable id="dts" value="#{testMapManageBean.checkedUsers}" var="usr" width="100%" 
                             rendered="#{testMapManageBean.showCheckedUsers}" border="1" cellpadding="0" cellspacing="0">
                    
                    <h:column>
                        <f:facet name="header">
                            <h:outputText id="header1" value="姓名"/>
                        </f:facet>
                        <h:outputText value="#{usr.name}"/>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText id="header2" value="年龄"/>
                        </f:facet>
                        <h:outputText value="#{usr.age}"/>
                    </h:column>
                </h:dataTable>
                
            </h:form>
        </f:view>
        
    </body>
</html>

 

package test.entitybean下的class:

 

 

package test.entitybean;

/**
 *
 * @author SailingLee
 */
public class TestEntityBean {
    
    private String name;
    private int age;
    private boolean checked;//额外的字段,在数据库中没有与之对应的字段,只用于判断该实体bean是否被选中
    
    /** Creates a new instance of TestEntityBean */
    public TestEntityBean() {
    }
    
    public TestEntityBean(String name,int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public boolean isChecked() {
        return checked;
    }

    public void setChecked(boolean checked) {
        this.checked = checked;
    }
    
}

 

/*
 * TestPureEntityBean.java
 * 此实体bean中没有额外的用于判断是否被选中的字段
 */

package test.entitybean;

/**
 *
 * @author SailingLee
 */
public class TestPureEntityBean {
    
    private Integer id;
    private String name;
    private int age;
    
    /** Creates a new instance of TestPureEntityBean */
    public TestPureEntityBean() {
    }
    
    public TestPureEntityBean(int id,String name,int age) {
        this.id = new Integer(id);
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    
}

 

package test.managebean下的class:

package test.managebean;
import java.util.List;
import java.util.ArrayList;
import test.entitybean.TestEntityBean;
import test.phase.PostbackPhaseListener;
/**
 *
 * @author SailingLee
 */
public class TestManageBean {
    private List users = null;
    private List checkedUsers = null;
    private boolean showCheckedUsers;

    private boolean chkall;
    /** Creates a new instance of TestManageBean */
    public TestManageBean() {
        //if(!PostbackPhaseListener.isPostback()){
            users = new ArrayList(5);
            TestEntityBean user = new TestEntityBean("sailinglee",25);
            users.add(user);
            user = new TestEntityBean("dyzhang",24);
            users.add(user);
            user = new TestEntityBean("elzhuang",25);
            users.add(user);
            user = new TestEntityBean("sdwang",26);
            users.add(user);
            user = new TestEntityBean("wfan",25);
            users.add(user);
        //}
    }
    
    public String showCheckedbox(){
        checkedUsers = new ArrayList(5);
        for(int i=0;i<users.size();i++){
            TestEntityBean user = (TestEntityBean)users.get(i);
            if(user.isChecked())
                checkedUsers.add(user);
        }
        if(checkedUsers.size()>0)
            this.setShowCheckedUsers(true);
        else
            this.setChkall(false);
        return "ok";
    }
    
    public List getUsers() {
        return users;
    }
    
    public void setUsers(List users) {
        this.users = users;
    }
    
    public List getCheckedUsers() {
        return checkedUsers;
    }
    
    public void setCheckedUsers(List checkedUsers) {
        this.checkedUsers = checkedUsers;
    }
    
    public boolean isShowCheckedUsers() {
        return showCheckedUsers;
    }
    
    public void setShowCheckedUsers(boolean showCheckedUsers) {
        this.showCheckedUsers = showCheckedUsers;
    }

    /**
     * @return the chkall
     */
    public boolean isChkall() {
        return chkall;
    }

    /**
     * @param chkall the chkall to set
     */
    public void setChkall(boolean chkall) {
        this.chkall = chkall;
    }
}

 

/*
 * TestMapManageBean.java
 *
 */

package test.managebean;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
import test.entitybean.TestPureEntityBean;
import test.phase.PostbackPhaseListener;
/**
 *
 * @author SailingLee
 */
public class TestMapManageBean {
    
    private List<TestPureEntityBean> users = null;
    private List<TestPureEntityBean> checkedUsers = null;
    private Map<Integer,Boolean> checkedIds = new HashMap<Integer,Boolean>();
    private boolean showCheckedUsers;

    private boolean chkall;
    /** Creates a new instance of TestMapManageBean */
    public TestMapManageBean() {
        //if(!PostbackPhaseListener.isPostback()){
            users = new ArrayList<TestPureEntityBean>(5);
            TestPureEntityBean user = new TestPureEntityBean(1,"sailinglee",25);
            users.add(user);
            user = new TestPureEntityBean(2,"dyzhang",24);
            users.add(user);
            user = new TestPureEntityBean(3,"elzhuang",25);
            users.add(user);
            user = new TestPureEntityBean(4,"sdwang",26);
            users.add(user);
            user = new TestPureEntityBean(5,"wfan",25);
            users.add(user);
        //}
    }
    
    public String showCheckedbox(){
        checkedUsers = new ArrayList<TestPureEntityBean>(5);
        for(TestPureEntityBean user : users){
            if(this.checkedIds.get(user.getId()).booleanValue()){
                checkedUsers.add(user);
                //this.checkedIds.remove(user.getId());
            }
        }
        if(checkedUsers.size()>0)
            this.setShowCheckedUsers(true);
        else
            this.setChkall(false);
        return "ok";
    }
    
    public List getUsers() {
        return users;
    }
    
    public void setUsers(List users) {
        this.users = users;
    }
    
    public List getCheckedUsers() {
        return checkedUsers;
    }
    
    public void setCheckedUsers(List checkedUsers) {
        this.checkedUsers = checkedUsers;
    }
    
    public boolean isShowCheckedUsers() {
        return showCheckedUsers;
    }
    
    public void setShowCheckedUsers(boolean showCheckedUsers) {
        this.showCheckedUsers = showCheckedUsers;
    }
    
    public Map<Integer, Boolean> getCheckedIds() {
        return checkedIds;
    }
    
    public void setCheckedIds(Map<Integer, Boolean> checkedIds) {
        this.checkedIds = checkedIds;
    }

    /**
     * @return the chkall
     */
    public boolean isChkall() {
        return chkall;
    }

    /**
     * @param chkall the chkall to set
     */
    public void setChkall(boolean chkall) {
        this.chkall = chkall;
    }
    
}

 

/WEB-INF/下的faces-config.xml:

<?xml version='1.0' encoding='UTF-8'?>


<!DOCTYPE faces-config PUBLIC
  "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
  "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">

<!-- =========== FULL CONFIGURATION FILE ================================== -->

<faces-config>
    <managed-bean>
        <managed-bean-name>testManageBean</managed-bean-name>
        <managed-bean-class>test.managebean.TestManageBean</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
    </managed-bean>
    <managed-bean>
        <managed-bean-name>testMapManageBean</managed-bean-name>
        <managed-bean-class>test.managebean.TestMapManageBean</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
    </managed-bean>
    <lifecycle>
        <phase-listener>test.phase.PostbackPhaseListener</phase-listener>
    </lifecycle>
  
</faces-config>

 :实现过程中PostbackPhaseListener没有用好,该例子只是说明JSF中全选的实现,关键在于那段jsp里js,那里的[]不可写为(),否则在firefox中可能有脚本错误,原因很简单,[]对应的是数组,而()对应的是函数。

1
0
分享到:
评论

相关推荐

    jsf实现登录功能

    在这个"jsf实现登录功能"的例子中,我们将探讨如何利用JSF来构建一个基本的用户登录系统。 首先,登录功能通常包括两部分:前端页面和后端逻辑。在JSF中,前端页面通常由XHTML文件(.xhtml)组成,这些文件结合了...

    jsf中文使用教程jsf中文使用教程

    5. **国际化支持**:JSF支持多语言,这在“JSF中文使用教程”中可能包含如何设置和使用中文资源的内容。 **学习JSF的关键概念**: 1. **Facelet**:Facelets是JSF的默认视图技术,用于创建和组织用户界面组件。 2. ...

    JSF+hibernate实现批量删除

    总的来说,JSF与Hibernate结合使用可以方便地实现Web应用中的批量删除功能。开发者可以通过声明式编程方式构建用户界面,同时利用Hibernate的ORM能力处理数据库操作。在实际开发中,还需要注意错误处理、权限控制、...

    poi读取并导出excel(jsf bean 页面的实现)

    3. 数据表格的实现:在JSF页面中,使用`t:dataTable`标签来展示数据表格,通过绑定JSF Bean的数据,实现数据的展示和操作。 4. 文件下载的实现:通过使用`HttpServletResponse`和`OutputStream`,实现文件的下载。...

    JSF文件下载实现

    在本文中,我们将深入探讨如何使用JSF来实现在Web应用程序中下载文件的功能。主要涉及的关键知识点包括: 1. **JSF上下文环境获取**: 在`downloadFile`方法中,首先通过`FacesContext.getCurrentInstance()`获取...

    JSF中文教程jsf

    **事件处理** 在JSF中是通过事件监听器实现的。当用户与组件交互时,会触发特定的事件,相应的监听器方法会被调用,从而执行相应的处理逻辑。 **生命周期** 是JSF处理请求的关键过程,包括初始化、恢复视图、应用...

    JSF标准的两个实现

    在实际开发中,开发者可以根据项目需求、团队熟悉度、性能要求以及对最新特性的需求来决定使用哪个JSF实现。例如,如果你的项目需要最新的JSF特性,那么官方实现可能是首选;如果重视开源社区的贡献和自定义组件,...

    JSF全套(JSF入门教+ LIB+ Ajax4JSF使用手册 )

    2. **JSF标签**:JSF的UI组件是以标签的形式在JSP页面中使用的,这些标签对应于服务器端的组件。学习JSF标签,你需要理解每个标签的用途,如`h:inputText`用于文本输入,`h:commandButton`用于触发动作,以及如何...

    JSF+primefaces 网盘实现代码前端

    在本文中,我们将深入探讨如何使用JavaServer Faces (JSF) 框架与PrimeFaces库结合,构建一个基于HTML、CSS和JavaScript的网盘应用前端。PrimeFaces是一个流行的Java库,提供了丰富的UI组件,使得开发高质量的Web...

    jsf 中文文档 jsf 中文文档

    - **创建项目**:使用 IDE 如 Eclipse 或 NetBeans 创建新的 JSF 项目。 - **编写代码**:通常会从一个简单的“Hello World”示例开始,涉及 HTML 页面、JSF 标签以及 Managed Bean 的创建。 **1.3 简单的导航 ...

    sun的jsf接口和实现的源文件下载

    你可以在GlassFish的源码库中找到更多关于JSF的实现细节,这将有助于对比和理解Sun官方提供的JSF源码。 总之,JSF 1.2的源代码提供了一个学习和研究JSF内部机制的机会,通过深入研究,开发者可以提高对JSF的理解,...

    用jsf做的登录注册的组件

    这些组件可以直接在JSP或Facelets页面中使用,简化了前端开发。 3. **登录与注册**:登录注册功能通常包括用户名验证、密码比较、错误处理等。在JSF中,可以通过EL(Expression Language)来绑定组件值到后台Bean的...

    JSF2中实现国际化

    接下来,我们在JSF页面(例如`index.xhtml`)中使用这些资源bundle中的文本。可以使用`&lt;h:outputText&gt;`组件来实现,通过`value`属性引用资源bundle中的键: ```xml ``` 在这里,`msg`是一个EL表达式,它引用了资源...

    JSF2.0实战 - 8、实现换肤功能

    在本篇内容中,我们将深入探讨如何在JavaServer Faces (JSF) 2.0框架中实现换肤功能。JSF是一种用于构建Web应用程序的Java EE标准组件模型,而换肤功能则是提升用户体验的重要手段,它允许用户根据个人喜好选择不同...

    jsf自定义组件的实现

    在JavaServer Faces (JSF)框架中,自定义组件允许开发者根据项目需求创建具有特定功能的UI元素。本文将引导你逐步了解如何在JSF中实现一个自定义组件,从基础开始,一步步构建一个简单的组件,最后达到能够开发复杂...

    ajax4jsf使用中文手册

    **Ajax4JSF 使用中文...总的来说,"Ajax4JSF使用中文手册"是JSF开发者实现Ajax功能的宝贵资源。通过学习这份手册,开发者可以更好地理解Ajax4JSF的工作原理,并有效地将其应用于实际项目中,提升Web应用的用户体验。

    使用JSF和MyFaces实现文件上载

    总之,使用JSF和MyFaces实现文件上传虽然需要一些额外的配置和处理,但通过遵循上述步骤和最佳实践,可以有效地在JavaWeb应用程序中实现这一功能。这不仅提高了用户体验,也增强了应用程序的功能性和实用性。

    JSF中文教程.zip

    开发者可以定义Bean的属性、方法,并通过EL在Facelets视图中使用。 6. **生命周期**:JSF有七个阶段,包括恢复视图、应用请求值、处理验证、更新模型值、调用应用、渲染响应和结束请求。每个阶段都有特定的任务,...

    详细的JSF的使用步骤

    - Managed Beans是JSF中的核心概念,用于实现业务逻辑和表示层的分离。它们是Java对象,可以通过JSF配置文件定义和管理,使得依赖关系的管理更加灵活。 4. **转换器和验证器** - 转换器(Converter)负责在浏览器...

Global site tag (gtag.js) - Google Analytics