博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分页技巧__实现第二个分页(主题列表中的分页)并抽取部分重复的代码
阅读量:5938 次
发布时间:2019-06-19

本文共 5310 字,大约阅读时间需要 17 分钟。

分页技巧__实现第二个分页(主题列表中的分页)并抽取部分重复的代码

先写Action--->Service-->PageBean-->Jsp

在topicAction中把公共的分页用的参数的代码放到BaseAction里面

ForumAction.java

@Controller@Scope("prototype")public class ForumAction extends BaseAction
{ /**板块列表*/ public String list() { List
forumList = forumService.findAll(); ActionContext.getContext().put("forumList", forumList);//放在map中 return "list"; } /**显示单个版块(主题列表)*/ public String show() { //准备数据:forum Forum forum = forumService.getById(model.getId()); ActionContext.getContext().put("forum", forum); //准备数据:topicList// List
topicList = topicService.findByForum(forum);// ActionContext.getContext().put("topicList", topicList); //准备分页信息 PageBean pageBean = topicService.getPageBeanByForum(pageNum, pageSize, forum); ActionContext.getContext().getValueStack().push(pageBean); return "show"; }}

TopicServiceImpl.java

@Service@Transactional@SuppressWarnings("unchecked")public class TopicServiceImpl extends DaoSupportImpl
implements TopicService{ @Deprecated public List
findByForum(Forum forum) { return getSession().createQuery(// //排序:所有置顶帖在最上面,并按最后更新的时间排序,让新状态的在最上面 // 怎么排序 "FROM Topic t WHERE t.forum=? ORDER BY (CASE t.type WHEN 2 THEN 2 ELSE 0 END) DESC, t.lastUpdateTime DESC")// .setParameter(0, forum)// .list(); } @Override public void save(Topic topic) { // 1,设置属性并保存 topic.setType(Topic.TYPE_NORMAL); topic.setReplyCount(0); topic.setLastReply(null); topic.setLastUpdateTime(topic.getPostTime()); getSession().save(topic); // 2,维护相关的特殊属性 Forum forum = topic.getForum(); forum.setTopicCount(forum.getTopicCount() + 1);//主题数量 forum.setArticleCount(forum.getArticleCount() + 1);//文章数量(主题数+回复数) forum.setLastTopic(topic);//最后发表的主题 getSession().update(forum); } public PageBean getPageBeanByForum(int pageNum, int pageSize, Forum forum) { //查询列表 List list = getSession().createQuery( "FROM Topic t WHERE t.forum=? ORDER BY (CASE t.type WHEN 2 THEN 2 ELSE 0 END) DESC, t.lastUpdateTime DESC")// .setParameter(0, forum)// .setFirstResult((pageNum - 1) * pageSize)// .setMaxResults(pageSize)// .list(); //查询总数量 Long count = (Long)getSession().createQuery(// "SELECT COUNT(*) FROM Topic t WHERE t.forum=? ORDER BY (CASE t.type WHEN 2 THEN 2 ELSE 0 END) DESC, t.lastUpdateTime DESC")// .setParameter(0, forum)// .uniqueResult(); return new PageBean(pageNum, pageSize, count.intValue(), list); }}

分页信息抽取出来

pageView.jspf

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@ taglib prefix="s" uri="/struts-tags" %>
页次:${currentPage}/${pageCount}页   每页显示:${pageSize}条   总记录数:${recordCount}条
<%--当前页 --%>
${num}
<%--非当前页 --%>
${num}
转到:

forumAction>>show.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@ taglib prefix="s" uri="/struts-tags" %>    【${forum.name}】中的主题列表    <%@ include file="/WEB-INF/jsp/public/commons.jspf" %>    
【${forum.name}】中的主题列表
>
论坛
> ${forum.name}
 
主题 作者 回复数 最后回复
${title}
  • ${author.name}
  • ${postTime}
${replyCount}
  • ${lastReply.author.name}
  • ${lastReply.postTime}
<%@ include file="/WEB-INF/jsp/public/pageView.jspf" %>
说明:
1,主题默认按最后更新的时间降序排列。最后更新时间是指主题最后回复的时间,如果没有回复,就是主题发表的时间。
2,帖子有普通、置顶、精华之分。置顶贴始终显示在最上面,精华贴用不同的图标标示。

转载于:https://www.cnblogs.com/justdoitba/p/7965570.html

你可能感兴趣的文章
jQuery操作数组函数
查看>>
Hive中的所有Join
查看>>
CM cluster 之间trunk
查看>>
SqlServer系列笔记——字符串函数
查看>>
军哥讲IE之道,如何考取IE的第一步:笔试
查看>>
SVN源码服务器搭建-详细教程
查看>>
SSL/TLS协议运行机制的概述
查看>>
openstack Nova、Cinder、Neutron资源配额设置
查看>>
三种备份方式的区别
查看>>
创建 OVS flat network - 每天5分钟玩转 OpenStack(134)
查看>>
我的友情链接
查看>>
linux 常用基本命令之 touch cp file rm mv cat 的介绍与使用
查看>>
Ext.grid.gridpanel
查看>>
JSRender模板一
查看>>
Oracle 11g 64位,PLSQL Developer无法登录
查看>>
清理mysql-bin日志
查看>>
我们如何了解技术的真相?
查看>>
Rails开发细节《八》Rails应用的安全
查看>>
ruby笔记《二》类定义
查看>>
Javascript实例:Select的OnChange()事件
查看>>