分页 jsf组件dataTable

本文介绍了一个使用JavaServer Faces (JSF)实现的用户管理系统示例,包括用户注册、登录、修改密码等功能,并展示了如何通过JSF进行表格数据展示及分页处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<%@ page contentType="text/html; charset=GBK" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<jsp:useBean id="userlist" scope="page" class="com.jsp.web.UserBean">
</jsp:useBean>
<html>
<head>
<title>
userlist
</title>
</head>
<body bgcolor="#ffffff">
<f:view>
     <h:form>
       <h:dataTable id="allusers" value="#{listBean.allusers}" var="user" border="1">
         <h:column>
           <f:facet name="header">
             <h:outputText id="userid" value="userid"/>
            </f:facet>
             <h:outputText value="#{user.userid}"/>
         </h:column>
          <h:column>
           <f:facet name="header">
             <h:outputText id="username" value="username"/>
            </f:facet>
             <h:outputText value="#{user.username}"/>
         </h:column>
          <h:column>
           <f:facet name="header">
             <h:outputText id="userpwd" value="userpwd"/>
            </f:facet>
             <h:outputText value="#{user.userpassword}"/>
         </h:column>
         <h:column>
           <f:facet name="header">
             <h:outputText id="caozuo" value="caozuo" />
           </f:facet>
         <h:outputLink value="removeuser.faces?userid=#{user.userid}">
           <h:outputText value="删除">
           </h:outputText>
         </h:outputLink>
          <h:outputText value="&nbsp;" escape="false">     </h:outputText>

          <h:outputLink value="userdetail.faces?userid=#{user.userid}">
           <h:outputText value="查看">
           </h:outputText>
          </h:outputLink>
           <h:outputText value="&nbsp;" escape="false">     </h:outputText>

          <h:outputLink value="updatejsp.faces?userid=#{user.userid}">
            <h:outputText value="修改密码">
           </h:outputText>
          </h:outputLink>
          <h:outputText value="&nbsp;" escape="false">     </h:outputText>
              </h:column>
       </h:dataTable>
     </h:form>
      <h:outputLink value="register.faces">
      <h:outputText value="注册新用户">
      </h:outputText>
      </h:outputLink>
      <c:out value="共[${listBean.pagenumber}]页"></c:out>
      <c:out value="第[${listBean.currentpage + 1 } / ${listBean.pagenumber}]页"></c:out>
      <c:forEach var="usermin" begin="1" end="${listBean.pagenumber}" step="1">
        <c:url var="myurl" value="userlist.faces?currentpage=${usermin-1}">
        </c:url>
        <c:choose>
          <c:when test="${allusers.currentpage!=usermin - 1}">
            <a href="<c:out value="${myurl}"/>"><c:out value="[${usermin}]"/></a>
          </c:when>
          <c:otherwise>
            <c:out value="[${usermin}]">
            </c:out>
          </c:otherwise>
        </c:choose>
      </c:forEach>
      <c:if test="${listBean.currentpage>0}">
        <c:url     var="myurl" value="userlist.faces?currentpage=${listBean.currentpage-1}">
        </c:url>
        <a href="<c:out value="${myurl}"/> "><c:out value="上一页"></c:out></a>
      </c:if>
      <c:if test="${listBean.currentpage<listBean.pagenumber-1}">
        <c:url     var="myurl" value="userlist.faces?currentpage=${listBean.currentpage+1}">
        </c:url>
        <a href="<c:out value="${myurl}"/> "><c:out value="下一页"></c:out></a>
      </c:if>
</f:view>
</body>
</html>

UserBean.java

package com.jsp.web;
import com.jsp.user.*;
import com.jsp.util.*;
import java.util.List;
import java.util.ArrayList;
import java.sql.SQLException;
import java.util.Collection;

public class UserBean extends User{

       public UserBean() {
       }
       boolean isLogin;
       private String oldpwd;
       private String newpwd;
       private String renewpwd;
       private String message;
       private String password2;
       public static String sucess="sucess";
       public static String failed="failed";
       private String loginname;
       private List userlist;
       private int pagesize;//页的大小
       private int currentpage;//当前页
       private int pagenumber;//共几页
       private Collection users;
       public void setUser(User user)
      {
          super.setUserid(user.getUserid());
          super.setUsername(user.getUsername());
          super.setUserpassword(user.getUserpassword());
      }
      public void setUserid(Long userid){
          System.out.println("userid:"+userid);
          if(userid==null){
              return;
          }
          User user=null;
          try{
              user=UserManager.getInstance().getUser(userid);
              }catch(SelectException sex){
                  sex.printStackTrace();
              }
              if(user!=null){
                  super.setUserid(user.getUserid());
                  super.setUsername(user.getUsername());
                  super.setUserpassword(user.getUserpassword());
              }else{
                  super.setUserid(null);
                  super.setUsername(null);
                  super.setUserpassword(null);
              }
              super.setUserid(userid);
      }
       public String doRegister(){
           if(getUserid()!=null)
           {
               message = "你已成功注册,请勿重复提交!";
               return failed;
           }
           try{
               boolean result=UserManager.getInstance().isExistUserbyname(getUsername());
               if(!result)
               {
                   message = "此用户名已被注册!";
                   return failed;
               }
           }catch(SelectException sex){
               sex.printStackTrace();
               message = "此用户名已被注册!";
               return failed;
           }
           String pw = getUserpassword();
           String pw2 = getPassword2();
          if(!pw.equals(pw2))
          {
              message = "两次输入的密码不一致!";
              return failed;
           }

           try{
               UserManager.getInstance().addUser(this);
           }catch(AddException axe){
               axe.printStackTrace();
               message = "注册失败!";
               return failed;
           }
          message="注册成功!";
           return sucess;
       }
       public String doRemoveuser(){
           System.out.print("userid:"+getUserid());
           try{
               UserManager.getInstance().removeUser(getUserid());
           }catch(RemoveException     rex){
                   rex.printStackTrace();
                   message="删除用户失败!";
                   return failed;
           }
           message="删除用户成功!";
           return sucess;
       }

       public String doLogin(){
           User user=null;
           try{
               user=UserManager.getInstance().getUserbyname(getLoginname());
           }catch(SelectException sex){
               sex.printStackTrace();
               return failed;
           }
           if(user==null){
               message="用户不存在!";
               isLogin=false;
               return failed;
           }
           String pwd=user.getUserpassword();
           if(pwd.equals(getUserpassword())){
               setUserid(user.getUserid());
               message="成功登录!";
               isLogin=true;
               return sucess;
           }else{
               message="用户名或密码错误!";
               isLogin=false;
               return failed;
           }
       }
       public String doLogout(){
           super.setUserid(null);
           super.setUsername(null);
           super.setUserpassword(null);
           message="你已经注销成功!";
           isLogin=false;
           return sucess;

       }
       public String doChangpwd(){
           boolean result;
           boolean result1;
           result=this.isCorrectoldpwd();
           result1=this.confirmpwd();
           if(result){
               if(result1){
                   super.setUserpassword(this.getNewpwd());
                   try{
                       UserManager.getInstance().changePassword(this);
                       message="密码修改成功!";
                       return sucess;
                   }catch(UpdateException uex){
                       uex.printStackTrace();
                       message="密码修改失败!";
                       return failed;

                   }
               }else{
                   message="两次输入密码不一致!";
                   return failed;

               }
           }else{
               message="原密码不正确!";
               return failed;
           }

       }
       public boolean confirmpwd(){
           String newpwd=this.getNewpwd();
           String renewpwd=this.getRenewpwd();
           if(newpwd!=null&&renewpwd!=null&&newpwd.equals(renewpwd)){
               message=null;
               return true;
           }else{
              return false;
           }
       }
       public boolean isCorrectoldpwd(){
           if(this.getOldpwd()!=null&&super.getUserpassword()!=null&&super.getUserpassword().equals(this.getOldpwd())){
               message=null;
               return true;
           }else{
               return false;
           }
       }
       public List getUserlist(){
           userlist=new ArrayList();
           try{
               userlist=(List) UserManager.getInstance().getUserlist();
           }catch(SelectException ex){
               ex.printStackTrace();
           }
           return userlist;

       }
       public User getUser()
       {
           Long userid = getUserid();
           User user = null;
           if(userid == null)
               return null;
           try
           {
               user = UserManager.getInstance().getUser(userid);
           }
           catch(SelectException ex)
           {
               ex.printStackTrace();
           }
           return user;
       }
public String doChangeuser(){
       try{
           UserManager.getInstance().changeUser(this);
       }catch(UpdateException uex){
           uex.printStackTrace();
           message="更改用户失败!";
           return failed;
       }
       message="更改用户成功!";
       return sucess;
}
public Collection getAllusers(){
       System.out.print("pagenumber"+this.getPagenumber());
       System.out.print("currentpage"+this.getCurrentpage());
       try{
           users=UserManager.getInstance().getAlluser(this.getCurrentpage()*this.getPagesize(),this.getPagesize());
       }catch(SelectException sex){
           sex.printStackTrace();
       }
       return users;

}

       public void setOldpwd(String oldpwd){
        this.oldpwd=oldpwd;
}
public String getOldpwd(){
        return oldpwd;
}
public void setNewpwd(String newpwd){
        this.newpwd=newpwd;
}
public String getNewpwd(){
        return newpwd;
}
public String getRenewpwd(){
        return renewpwd;
}
public void setRenewpwd(String renewpwd){
        this.renewpwd=renewpwd;
}
public String getMessage(){
       return message;
}
public void setPassword2(String password2)
      {
          this.password2 = password2;
      }

public String getPassword2(){
       return password2;
}
public void setLoginname(String loginname){
       this.loginname=loginname;
}
public String getLoginname(){
       return loginname;
}
public boolean getLogin()
      {
          return isLogin;
      }
      public void setPagesize(int pagesize){
          this.pagesize=pagesize;
      }
      public int getPagesize(){
          return pagesize;
      }
      public void setCurrentpage(int currentpage){
          this.currentpage=currentpage;
      }
      public int getCurrentpage(){
          return currentpage;
      }
      public void setPagenumber(int pagenumber){
          this.pagenumber=pagenumber;
      }
      public int getPagenumber(){
          int totalrow=0;
          try{
              totalrow=UserManager.getInstance().getTotalrow();
          }catch(SelectException sex){
              sex.printStackTrace();
          }
          if(totalrow%this.getPagesize()==0){
              pagenumber=totalrow/this.getPagesize();
          }else{
               pagenumber=totalrow/this.getPagesize() + 1;
          }
          System.out.print("totalrow"+totalrow);
          return pagenumber;
      }
}

 JSF2.xdatatable分页控件与左侧菜单最简单应用   JSF2.x,功能强大,使用方便。全世界使用JSF的人越来越多。而且也有很多很好的控件给发出来了,如:richfaces、primefaces、myfaces等,就日前来讲primefaces功能很强大,控件很多,但有一点不好就是不支持IE6,特别是下拉列表,p:dialog等,其它的分页p:datatable实际使用起来总有不如意的地方。richfaces还支持可视化开发,可惜就是控件开发进度相比其它的慢了很多。下面帖我的控件的使用方法:   下载地址:http://download.youkuaiyun.com/detail/ptianfeng/4802713 一、分页具体使用方法如下(不多说,直接给你些颜色看看): 1. xhtml文件:    <html xmlns:ems="http://www.ems.com.cn" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets"> <h:dataTable id="tableId" value="#{userlogMBean.defaultDataModel}" var="var" rows="10"> <h:column> <f:facet name="header"> <h:outputText value="" /> </f:facet> <h:outputText value="#{var.sqlid}" /> </h:column> </h:dataTable> <ems:page id="pageId" for="tableId" maxPage="5" /> 2. 相应的Managedbean: [java] view plaincopy /** * EMS 11185 限时未达邮费奉还 * @author 螃蟹 */ @SuppressWarnings(value = "serial") @ManagedBean(name = "userlogMBean") @ViewScoped() public class UserlogMBean extends PageListBaseBean implements Serializable { public PagedListDataModel getDefaultDataModel() { if (defaultDataModel == null) { defaultDataModel = new PagedListDataModel(pageSize) { public DataPage fetchPage(int startRow, int pageSize) { ArrayList<UserlogVo> dataList = new ArrayList<UserlogVo>(); List<Userlog> list = dao.getObjectList(jpql, pageSize, startRow); if (list != null) { for (Userlog u : list) { UserlogVo vo = new UserlogVo(); vo.setSqlid(u.getSqlid()); vo.setCode(u.getCode()); vo.setDate(u.getDate()); vo.setStation(u.getStation()); vo.setUserid(u.getUserid()); vo.setText(u.getText()); dataList.add(vo); } } int size = dao.getCountOption(jpql); DataPage dataPage = new DataPage(size, startRow, dataList); return dataPage; } }; } return defaultDataModel; } } 提示:关于PageListBaseBean更多的信息,可以参阅我在百度的blog(百度改版后,让我很QF,所以转到优快云来了): http://hi.baidu.com/kittopang/item/19af4e37c6ede2fae6bb7a11   至此,分页已经实现。下面是使用截图:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值