分页技巧_改进JSP页面中的公共分页代码_实现分页时可以有自定义的过滤与排序条件
分页技巧__改进JSP页面中的公共分页代码

自定义过滤条件问题
只有一个url地址不一样写了很多行代码
public>>pageView.jspf添加


分页技巧__实现分页时可以有自定义的过滤与排序条件

ForumAction.java
@Controller
@Scope("prototype")
public class ForumAction extends BaseAction<Forum> { /**
* 0表示查看全部主题
* 1表示只看精华帖
*/
private int viewType = 0;
/**
* 0 表示默认排序(所有置顶帖在前面,并按最后更新时间降序排列)<br>
* 1 表示只按最后更新时间排序<br>
* 2 表示只按主题发表时间排序<br>
* 3 表示只按回复数量排序
*/
private int orderBy = 0;
/**
* true 表示升序<br>
* false 表示降序
*/
private boolean asc = false; /**板块列表*/
public String list() {
List<Forum> 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<Topic> topicList = topicService.findByForum(forum);
// ActionContext.getContext().put("topicList", topicList); //准备分页信息v1版
// PageBean pageBean = topicService.getPageBeanByForum(pageNum, pageSize, forum);
// ActionContext.getContext().getValueStack().push(pageBean); // //准备分页信息v2版
// String hql = "FROM Topic t WHERE t.forum=? ORDER BY (CASE t.type WHEN 2 THEN 2 ELSE 0 END) DESC, t.lastUpdateTime DESC";
// List<Object> parameters = new ArrayList<Object>();
// parameters.add(forum);
// PageBean pageBean =replyService.getPageBean(pageNum, pageSize, hql, parameters);//分页信息找service查询
// ActionContext.getContext().getValueStack().push(pageBean);//放在栈顶 // 准备分页信息 v3
String hql = "FROM Topic t WHERE t.forum=? ";
List<Object> parameters = new ArrayList<Object>();
parameters.add(forum); if (viewType == 1) { // 1 表示只看精华帖
hql += " AND t.type=? ";
parameters.add(Topic.TYPE_BEST);
} if (orderBy == 1) { // 1 表示只按最后更新时间排序
hql += " ORDER BY t.lastUpdateTime " + (asc ? "ASC" : "DESC");
} else if (orderBy == 2) { // 2 表示只按主题发表时间排序
hql += " ORDER BY t.postTime " + (asc ? "ASC" : "DESC");
} else if (orderBy == 3) { // 3 表示只按回复数量排序
hql += " ORDER BY t.replyCount " + (asc ? "ASC" : "DESC");
} else { // 0 表示默认排序(所有置顶帖在前面,并按最后更新时间降序排列)
hql += " ORDER BY (CASE t.type WHEN 2 THEN 2 ELSE 0 END) DESC, t.lastUpdateTime DESC";
} PageBean pageBean =replyService.getPageBean(pageNum, pageSize, hql, parameters);//分页信息找service查询
ActionContext.getContext().getValueStack().push(pageBean);//放在栈顶 return "show";
}
public int getViewType() {
return viewType;
}
public void setViewType(int viewType) {
this.viewType = viewType;
}
public int getOrderBy() {
return orderBy;
}
public void setOrderBy(int orderBy) {
this.orderBy = orderBy;
}
public boolean isAsc() {
return asc;
}
public void setAsc(boolean asc) {
this.asc = asc;
}
}
forumAction>>show.jsp

分页技巧_改进JSP页面中的公共分页代码_实现分页时可以有自定义的过滤与排序条件的更多相关文章
- 系统管理模块_部门管理_改进_抽取添加与修改JSP页面中的公共代码_在显示层抽取BaseAction_合并Service层与Dao层
系统管理模块_部门管理_改进1:抽取添加与修改JSP页面中的公共代码 commons.jspf <%@ page language="java" import="j ...
- 在jsp页面中设置了远程验证,在初始化时必须预先调用一次。
参考链接:http://code.taobao.org/p/sztaotao/diff/5/trunk/code/src/main/webapp/webpage/modules/sys/roleFor ...
- JSTL标签急速秒杀jsp页面中的java代码(一)---Core标签库
JSTL标签简介 ===================================================================== JSTL的全称是JavaServer Pa ...
- JSP页面中的指令标识
JSP页面中的指令标识 制作人:全心全意 指令标识主要用于设定整个JSP页面范围内都有效的相关信息,它是被服务器解释并执行的,不会产生任何内容输出到网页中.也就是说,指令标识对于客户端浏览器是不可见的 ...
- jsp页面中引用其他页面的方法
初看这个标题....大家的感觉一定是好2啊.....博主一定要说jsp的动态引用(jsp:include)和静态引用(@include)了.介绍这两者区别的文章已经烂大街了..一搜一大把..博主竟然还 ...
- jsp页面中jstl标签详解
JSLT标签库,是日常开发经常使用的,也是众多标签中性能最好的.把常用的内容,放在这里备份一份,随用随查.尽量做到不用查,就可以随手就可以写出来.这算是Java程序员的基本功吧,一定要扎实. JSTL ...
- jsp页面中创建方法
在JSP页面中是用 <%! void function(){ } %> 这种方式可以定义函数. 如果只使用 <% //todo %> 代码块中的代码在编译时将会都被加到 sev ...
- JSP页面中的pageEncoding和contentType两种属性
关于JSP页面中的pageEncoding和contentType两种属性的区别: pageEncoding是jsp文件本身的编码 contentType的charset是指服务器发送给客户端时的内容 ...
- jsp页面中的java代码
jsp页面中的java代码 1.jsp表达式 <%= ....%> 只能放置一个变量常量 2. jsp小脚本 <% .... %> java语句,可以插入一些语句 3. ...
随机推荐
- Android Launcher拖拽事件详解【android4.0--Launcher系列二】
AndroidICS4.0版本的launcher拖 拽的流程,基本和2.3的相似.就是比2.3写的封装的接口多了一些,比如删除类的写法就多了个类.等等.4.0的改变有一些,但是不是特别大.这个月一 直 ...
- MySQL 添加外键约束,不检查现有数据
这可能是MySQL在InnoDB中设置了foreign key关联,造成无法更新或删除数据.可以通过设置FOREIGN_KEY_CHECKS变量来避免这种情况. SET FOREIGN_KEY_CHE ...
- STL中map错误用法一例
[GBK]0G's fans( me ) 13:34:26typedef struct _TX_DATA{ int len; unsigned char buff[0x100]; } TX_DATA, ...
- unity, stateMachine, change state name
如图,假设wingsLayer下有个state,叫“New State“,现在想给它改名,则一定要保证当前wingsLayer为选中状态,然后才能在Inspector中可以为其改名.否则若当前选中的不 ...
- 怎么使用Firefox的RestClient
- Memcached真的过时了吗?
Memcached真的过时了吗? 这两年Redis火得可以,Redis也常常被当作Memcached的挑战者被提到桌面上来.关于Redis与Memcached的比较更是比比皆是.然而,Redis真的在 ...
- Huffman的应用之文件压缩与解压缩
文件压缩与解压缩> 近期这段时间一直在学习树的这样的数据结构,也接触到了Huffman树以及了解了什仫是Huffman编码,而我们经常使用的zip压缩也是利用的Huffman编码的特性 ...
- Java中path,-classpath,-Djava.library.path的功能和区别
1. path path是个系统环境变量,声明命令的搜索路径,让操作系统找到指定的工具程序. D:\Program Files\Java\jdk1.8.0_111\bin指定JDK工具路径,例如jav ...
- Atitit.数据库新特性战略规划 mssql sql server 2008 SQL2012 SQL2014
Atitit.数据库新特性 mssql sql server 2008 SQL2012 SQL2014 1. Sql2012 新特性 1 1.1. 增加了Sequence对象. 1 1.2. 新的分页 ...
- CentOS开机的时候卡在进度条一直进不去 F5(是关键)
这看不出开机启动卡在哪里,只好重启按住"e"键,进入启动菜单: 然后移动到第二项kernel...接着按e进入编辑 去掉rhgb quiet字样 按回车保存回到选择项 按b启动它就 ...