• 分页技巧_改进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

  • 相关阅读:
    iOS 中架构模式的浅显理解
    Block 在 ARC 下的拷贝
    Repo 的使用小结
    博客园新语言代码高亮以及OpenLiveWriter插件开发(一)
    GridLayout 使用
    PopupWindow 使用
    NDK笔记(二)-在Android Studio中使用ndk-build
    NDK 笔记(一)
    Java 多线程编程
    搭建Apache Web服务器
  • 原文地址:https://www.cnblogs.com/justdoitba/p/7965576.html
Copyright © 2020-2023  润新知