struts2实现条件查询分页代码

来源:互联网 发布:用友网络重大利好 编辑:程序博客网 时间:2024/05/17 22:10

1.Page.java分页数据类

import java.util.List;
public class Page {
@SuppressWarnings("unchecked")
private List pageData;
private int pageNum;
private int totalRecord;
private int totalPageNum;

@SuppressWarnings("unchecked")
public List getPageData() {
return pageData;
}
@SuppressWarnings("unchecked")
public void setPageData(List pageData) {
this.pageData = pageData;
}
public int getPageNum() {
return pageNum;
}
public void setPageNum(int pageNum) {
this.pageNum = pageNum;
}
public int getTotalRecord() {
return totalRecord;
}
public void setTotalRecord(int totalRecord) {
this.totalRecord = totalRecord;
}
public int getTotalPageNum() {
return totalPageNum;
}
public void setTotalPageNum(int totalPageNum) {
this.totalPageNum = totalPageNum;
}
}

2.service实现类代码

public Page getPage(NewsSearch newsSearch,int pageNum,int apage,String paixu)throws Exception{

if(newsSearch==null) {
throw new RuntimeException("传递给业务层部门查询条件的对象不能为空!");
}
//组织查询条件
String whereHql = "";
//定义封装查询条件的list
List paramList = new ArrayList();
if(newsSearch.getCondition()!=null && StringUtils.isNotBlank(newsSearch.getType())) {
if ("newsTitle".equals(newsSearch.getType()) || "newsAuthor".equals(newsSearch.getType()) || "newsSource".equals(newsSearch.getType())) {
whereHql = " and o."+newsSearch.getType().trim()+" like ? ";
paramList.add("%" +newsSearch.getCondition().trim() + "%");
}
if ("newsType".equals(newsSearch.getType())) {
whereHql = " and o."+newsSearch.getType().trim()+" = ? ";
paramList.add(newsSearch.getCondition().trim());
}
}
if (newsSearch.getDate1()!=null && newsSearch.getDate2()!=null) {
whereHql+=" and o.newsDate BETWEEN ? AND ?";
paramList.add(newsSearch.getDate1());
paramList.add(newsSearch.getDate2());
}

Object[] params1 = paramList.toArray();
//排序
LinkedHashMap<String, String> orderBy = new LinkedHashMap<String, String>();
orderBy.put("o.newsDate", paixu);

//departmentDao.findObjectByConditionWithNoPage(whereHql, params, orderBy);
//定义一页数据
int num=apage;
//获得带条件的总页数,params1是不带分页条件的查询参数
int totalRecord=this.newsDao.total(whereHql, params1);
int totalPageNum=(totalRecord+(num-1))/num;
int start=(pageNum-1)*num;
int len=num;
if (totalRecord<num) {
len=totalRecord;
}else if (start+len>totalRecord) {
len=totalRecord-start;
}
paramList.add(start);
paramList.add(len);
Object[] params2=paramList.toArray();
//获得带查询条件的查询一页的数据,param2是带分页条件的查询参数
List<News> pageData=newsDao.findObjectByConditionWithPage(whereHql, params2, orderBy);
//List pageData=classDAOImpl.getPageData(cname, start, len);
//封装所需要传到页面的数据
Page page=new Page();
page.setTotalRecord(totalRecord);
page.setPageNum(pageNum);
page.setTotalPageNum(totalPageNum);
page.setPageData(pageData);
return page;
}

3.Action代码

@SuppressWarnings("unchecked")
public String list() throws Exception {
//实例化封装查询条件的javabean
NewsSearch newsSearch = new NewsSearch();
if("newsType".equals(request.getParameter("type"))) {
if(DataType.numMatches(request.getParameter("condition")) ) {
newsSearch.setType(request.getParameter("type"));
newsSearch.setCondition(request.getParameter("condition"));
}else{
return "error";
}
}
newsSearch.setType(request.getParameter("type"));
newsSearch.setCondition(request.getParameter("condition"));

if (StringUtils.isNotBlank(request.getParameter("date1")) && StringUtils.isNotBlank(request.getParameter("date2"))) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
newsSearch.setDate1(sdf.parse(request.getParameter("date1")));
newsSearch.setDate2(sdf.parse(request.getParameter("date2")));

}
String id=request.getParameter("pageNum");
Integer pageNum=1;
if (!"".equals(id) && id != null) {
if(DataType.numMatches(id)) {
pageNum=Integer.parseInt(id);
}else{
return "error";
}
}
Page page=newsService.getPage(newsSearch , pageNum , 5 , "desc");

request.setAttribute("page",page);

request.setAttribute("newsSearch", newsSearch);
return "list";
}

4.jsp分页实现,需要把条件查询的参数带的页面

jQuery代码

$('.page').click(function(){
 var $this = $(this);
//要加载的页数
var _page = $this.data('page')|$this.attr('data-page');
//arch form
var form = $('#search-form');
form.attr('action',form.attr('action')+'?pageNum='+_page);
form.submit();
 });

查询的form表单

 <form method="post" id="search-form" action="${pageContext.request.contextPath}/sys/newsAction_list.do">
      <section class="mtb">
       <select id="typeSelect" class="select" name="type">
        <option>---</option>
        <option value="newsTitle" <s:if test="%{#request.newsSearch.type=='newsTitle'}">selected="selected"</s:if>>新闻标题</option>
        <option value="newsType" <s:if test="%{#request.newsSearch.type=='newsType'}">selected="selected"</s:if>>新闻类型</option>
        <option value="newsSource" <s:if test="%{#request.newsSearch.type=='newsSource'}">selected="selected"</s:if>>新闻来源</option>
        <option value="newsAuthor" <s:if test="%{#request.newsSearch.type=='newsAuthor'}">selected="selected"</s:if>>作者</option>
       </select>
       <s:if test="%{#request.newsSearch.type=='newsType'}">
        <select id="textCondition" name="condition" class="select" style="height: 36px; width: 230px;">
      <option value="1" <s:if test="%{#request.newsSearch.condition==1}">selected="selected"</s:if>>重要通知</option>
      <option value="2" <s:if test="%{#request.newsSearch.condition==2}">selected="selected"</s:if>>会议信息</option>
      <option value="3" <s:if test="%{#request.newsSearch.condition==3}">selected="selected"</s:if>>中心动态</option>
      <option value="4" <s:if test="%{#request.newsSearch.condition==4}">selected="selected"</s:if>>人才培养</option>
      <option value="5" <s:if test="%{#request.newsSearch.condition==5}">selected="selected"</s:if>>学生天地</option>
      <option value="6" <s:if test="%{#request.newsSearch.condition==6}">selected="selected"</s:if>>媒体采访</option>
      <option value="7" <s:if test="%{#request.newsSearch.condition==7}">selected="selected"</s:if>>发表论文</option>
      <option value="8" <s:if test="%{#request.newsSearch.condition==8}">selected="selected"</s:if>>专栏文章</option>
      <option value="9" <s:if test="%{#request.newsSearch.condition==9}">selected="selected"</s:if>>图片新闻</option>
        </select>
       </s:if>
       
        <s:if test="%{#request.newsSearch.type!='newsType'}">
        <input type="text" id="textCondition" name="condition" class="textbox textbox_225" placeholder="输入关键字进行查询"/ value="<s:property value="%{#request.newsSearch.condition}"/>">
       </s:if>
      
       发表日期:
  <span><input readonly type="text" name="date1" class="textbox" value="<s:date name="%{#request.newsSearch.date1}" format="yyyy-MM-dd"/>" id="" onclick="SelectDate(this,'yyyy-MM-dd')"/></span>
       
  <span>--<input readonly type="text" name="date2" class="textbox" value="<s:date name="%{#request.newsSearch.date2}" format="yyyy-MM-dd" />" id="" onclick="SelectDate(this,'yyyy-MM-dd')"/></span>





       <input type="submit" value="查询" class="group_btn"/>
      </section>
      
      </form>


分页代码

 <a>共有<s:property value="%{#request.page.totalRecord}"/>条记录</a>
       <a>当前第<s:property value="%{#request.page.totalRecord==0 ? 0 : #request.page.pageNum}"/>/<s:property value="%{#request.page.totalPageNum}"/>页</a>
       
        <s:if test="%{#request.page.pageNum > 1 && #request.page.pageNum <= #request.page.totalPageNum  }">
        <a href="javascript:;" class="page" data-page="<s:property value="%{#request.page.pageNum-1}" />">上一页</a>
       </s:if>
       <s:if test="%{#request.page.totalPageNum <= 7}">
        <s:iterator begin="1" end="%{#request.page.totalPageNum}" var="p">
      <s:if test="%{#p==#request.page.pageNum}"> <a style="color:#333;"><s:property value="%{#p}" /></a></s:if>
      <s:else>
      <a href="javascript:;" class="page" data-page="<s:property value="%{#p}" />"><s:property value="%{#p}" /></a>
      </s:else>
      </s:iterator>
       </s:if>
       <s:else>
       
        <s:if test="%{#request.page.pageNum >= 5 && #request.page.pageNum <= #request.page.totalPageNum-3 }">
      <s:if test="%{#request.page.pageNum-3 <= 1}" >
      <s:iterator begin="1" end="%{#request.page.pageNum-1}" var="p">
   <a href="javascript:;" class="page" data-page="<s:property value="%{#p}" />"><s:property value="%{#p}" /></a>
        </s:iterator>
      </s:if>
      <s:if test="%{#request.page.pageNum-3 > 1}" >
      <a href="javascript:;" class="page" data-page="1">1</a>
      <a>...</a>
      <a href="javascript:;" class="page" data-page="<s:property value="%{#request.page.pageNum-2}" />"><s:property value="%{#request.page.pageNum-2}" /></a>
      <a href="javascript:;" class="page" data-page="<s:property value="%{#request.page.pageNum-1}" />"><s:property value="%{#request.page.pageNum-1}" /></a>
      </s:if>
      <a style="color:#333;"><s:property value="%{#request.page.pageNum}" /></a>
      <s:if test="%{#request.page.pageNum+3 >= #request.page.totalPageNum}">
      <s:iterator begin="%{#request.page.pageNum+1}" end="%{#request.page.totalPageNum}" var="p">
   <a href="javascript:;" class="page" data-page="<s:property value="%{#p}" />"><s:property value="%{#p}" /></a>
        </s:iterator>
      </s:if>
      <s:else>
      <a href="javascript:;" class="page" data-page="<s:property value="%{#request.page.pageNum+1}" />"><s:property value="%{#request.page.pageNum+1}" /></a>
      <a href="javascript:;" class="page" data-page="<s:property value="%{#request.page.pageNum+2}" />"><s:property value="%{#request.page.pageNum+2}" /></a>
      <a>...</a>
      <a href="javascript:;" class="page" data-page="<s:property value="%{#request.page.totalPageNum}" />"><s:property value="%{#request.page.totalPageNum}" /></a>
     
      </s:else>
     </s:if>
     <s:elseif test="#request.page.pageNum < 5">
      <s:iterator begin="1" end="6" var="p">
      <s:if test="%{#p==#request.page.pageNum}"> <a style="color:#333;"><s:property value="%{#p}" /></a></s:if>
      <s:else>
    <a href="javascript:;" class="page" data-page="<s:property value="%{#p}" />"><s:property value="%{#p}" /></a>
   </s:else>
        </s:iterator>
        <a>...</a>
      <a href="javascript:;" class="page" data-page="<s:property value="%{#request.page.totalPageNum}" />"><s:property value="%{#request.page.totalPageNum}" /></a>
     
     </s:elseif>
     <s:else>
      <a href="${pageContext.request.contextPath}/sys/newsAction_list.do?pageNum=1">1</a>
      <a>...</a>
      <s:iterator begin="%{#request.page.totalPageNum-5}" end="%{#request.page.totalPageNum}" var="p">
      <s:if test="%{#p==#request.page.pageNum}"> <a style="color:#333;"><s:property value="%{#p}" /></a></s:if>
      <s:else>
      <a class="page" href="javascript:;" data-page="<s:property value="%{#p}" />"><s:property value="%{#p}" /></a>
   
   </s:else>
        </s:iterator>
     </s:else>
      </s:else>
     
     <s:if test="%{#request.page.pageNum >= 1 && #request.page.pageNum < #request.page.totalPageNum  }">
       <a class="page" href="javascript:;" data-page="<s:property value="%{#request.page.pageNum+1}"/>" >下一页</a>
      </s:if>

分页总体效果

一共xx条记录 当前1/10页  1... 3 4 5 6 7...10

0 0
原创粉丝点击