diff --git a/src/main/java/cc/ryanc/halo/web/controller/admin/AdminController.java b/src/main/java/cc/ryanc/halo/web/controller/admin/AdminController.java index 6069aabbb..e9bc9ed80 100755 --- a/src/main/java/cc/ryanc/halo/web/controller/admin/AdminController.java +++ b/src/main/java/cc/ryanc/halo/web/controller/admin/AdminController.java @@ -20,9 +20,9 @@ import cn.hutool.http.HtmlUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; +import org.springframework.data.web.PageableDefault; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; @@ -77,7 +77,6 @@ public class AdminController extends BaseController { * 请求后台页面 * * @param model model - * @param session session * @return 模板路径admin/admin_index */ @GetMapping(value = {"", "/index"}) @@ -201,16 +200,11 @@ public class AdminController extends BaseController { * 查看所有日志 * * @param model model model - * @param page page 当前页码 - * @param size size 每页条数 * @return 模板路径admin/widget/_logs-all */ @GetMapping(value = "/logs") - public String logs(Model model, - @RequestParam(value = "page", defaultValue = "0") Integer page, - @RequestParam(value = "size", defaultValue = "10") Integer size) { + public String logs(Model model, @PageableDefault Pageable pageable) { final Sort sort = new Sort(Sort.Direction.DESC, "logId"); - final Pageable pageable = PageRequest.of(page, size, sort); final Page logs = logsService.findAll(pageable); model.addAttribute("logs", logs); return "admin/widget/_logs-all"; diff --git a/src/main/java/cc/ryanc/halo/web/controller/admin/AttachmentController.java b/src/main/java/cc/ryanc/halo/web/controller/admin/AttachmentController.java index ff9ded0b3..5c1aea970 100755 --- a/src/main/java/cc/ryanc/halo/web/controller/admin/AttachmentController.java +++ b/src/main/java/cc/ryanc/halo/web/controller/admin/AttachmentController.java @@ -16,6 +16,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; +import org.springframework.data.web.PageableDefault; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; @@ -55,15 +56,11 @@ public class AttachmentController { * 复印件列表 * * @param model model - * * @return 模板路径admin/admin_attachment */ @GetMapping public String attachments(Model model, - @RequestParam(value = "page", defaultValue = "0") Integer page, - @RequestParam(value = "size", defaultValue = "18") Integer size) { - final Sort sort = new Sort(Sort.Direction.DESC, "attachId"); - final Pageable pageable = PageRequest.of(page, size, sort); + @PageableDefault(size = 18, sort = "attachId", direction = Sort.Direction.DESC) Pageable pageable) { final Page attachments = attachmentService.findAll(pageable); model.addAttribute("attachments", attachments); return "admin/admin_attachment"; @@ -73,17 +70,13 @@ public class AttachmentController { * 跳转选择附件页面 * * @param model model - * @param page page 当前页码 - * * @return 模板路径admin/widget/_attachment-select */ @GetMapping(value = "/select") public String selectAttachment(Model model, - @RequestParam(value = "page", defaultValue = "0") Integer page, + @PageableDefault(size = 18, sort = "attachId", direction = Sort.Direction.DESC) Pageable pageable, @RequestParam(value = "id", defaultValue = "none") String id, @RequestParam(value = "type", defaultValue = "normal") String type) { - final Sort sort = new Sort(Sort.Direction.DESC, "attachId"); - final Pageable pageable = PageRequest.of(page, 18, sort); final Page attachments = attachmentService.findAll(pageable); model.addAttribute("attachments", attachments); model.addAttribute("id", id); @@ -109,7 +102,6 @@ public class AttachmentController { * * @param file file * @param request request - * * @return Map */ @PostMapping(value = "/upload", produces = {"application/json;charset=UTF-8"}) @@ -159,7 +151,6 @@ public class AttachmentController { * * @param model model * @param attachId 附件编号 - * * @return 模板路径admin/widget/_attachment-detail */ @GetMapping(value = "/attachment") @@ -174,7 +165,6 @@ public class AttachmentController { * * @param attachId 附件编号 * @param request request - * * @return JsonResult */ @GetMapping(value = "/remove") diff --git a/src/main/java/cc/ryanc/halo/web/controller/admin/CommentController.java b/src/main/java/cc/ryanc/halo/web/controller/admin/CommentController.java index dedd8f2ca..29dc57da3 100755 --- a/src/main/java/cc/ryanc/halo/web/controller/admin/CommentController.java +++ b/src/main/java/cc/ryanc/halo/web/controller/admin/CommentController.java @@ -24,6 +24,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; +import org.springframework.data.web.PageableDefault; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; @@ -60,18 +61,12 @@ public class CommentController extends BaseController { * * @param model model * @param status status 评论状态 - * @param page page 当前页码 - * @param size size 每页显示条数 - * * @return 模板路径admin/admin_comment */ @GetMapping public String comments(Model model, - @RequestParam(value = "status", defaultValue = "0") Integer status, - @RequestParam(value = "page", defaultValue = "0") Integer page, - @RequestParam(value = "size", defaultValue = "10") Integer size) { - final Sort sort = new Sort(Sort.Direction.DESC, "commentDate"); - final Pageable pageable = PageRequest.of(page, size, sort); + @PageableDefault(sort = "commentDate", direction = Sort.Direction.DESC) Pageable pageable, + @RequestParam(value = "status", defaultValue = "0") Integer status) { final Page comments = commentService.findAll(status, pageable); model.addAttribute("comments", comments); model.addAttribute("publicCount", commentService.getCountByStatus(CommentStatusEnum.PUBLISHED.getCode())); @@ -86,19 +81,18 @@ public class CommentController extends BaseController { * * @param commentId 评论编号 * @param status 评论状态 - * * @return 重定向到/admin/comments */ @GetMapping(value = "/throw") public String moveToTrash(@RequestParam("commentId") Long commentId, @RequestParam("status") String status, - @RequestParam(value = "page", defaultValue = "0") Integer page) { + @PageableDefault Pageable pageable) { try { commentService.updateCommentStatus(commentId, CommentStatusEnum.RECYCLE.getCode()); } catch (Exception e) { log.error("Delete comment failed: {}", e.getMessage()); } - return "redirect:/admin/comments?status=" + status + "&page=" + page; + return "redirect:/admin/comments?status=" + status + "&page=" + pageable.getPageNumber(); } /** @@ -107,7 +101,6 @@ public class CommentController extends BaseController { * @param commentId 评论编号 * @param status 评论状态 * @param session session - * * @return 重定向到/admin/comments */ @GetMapping(value = "/revert") @@ -128,20 +121,18 @@ public class CommentController extends BaseController { * * @param commentId commentId 评论编号 * @param status status 评论状态 - * @param page 当前页码 - * * @return string 重定向到/admin/comments */ @GetMapping(value = "/remove") public String moveToAway(@RequestParam("commentId") Long commentId, @RequestParam("status") Integer status, - @RequestParam(value = "page", defaultValue = "0") Integer page) { + @PageableDefault Pageable pageable) { try { commentService.remove(commentId); } catch (Exception e) { log.error("Delete comment failed: {}", e.getMessage()); } - return "redirect:/admin/comments?status=" + status + "&page=" + page; + return "redirect:/admin/comments?status=" + status + "&page=" + pageable.getPageNumber(); } @@ -150,7 +141,6 @@ public class CommentController extends BaseController { * * @param commentId 被回复的评论 * @param commentContent 回复的内容 - * * @return JsonResult */ @PostMapping(value = "/reply") diff --git a/src/main/java/cc/ryanc/halo/web/controller/admin/MenuController.java b/src/main/java/cc/ryanc/halo/web/controller/admin/MenuController.java index 793981e0e..fcda0d01c 100644 --- a/src/main/java/cc/ryanc/halo/web/controller/admin/MenuController.java +++ b/src/main/java/cc/ryanc/halo/web/controller/admin/MenuController.java @@ -33,8 +33,6 @@ public class MenuController { /** * 渲染菜单设置页面 * - * @param model model - * * @return 模板路径/admin/admin_menu */ @GetMapping @@ -46,7 +44,6 @@ public class MenuController { * 新增/修改菜单 * * @param menu menu - * * @return 重定向到/admin/menus */ @PostMapping(value = "/save") @@ -70,7 +67,6 @@ public class MenuController { * * @param menuId 菜单编号 * @param model model - * * @return 模板路径/admin/admin_menu */ @GetMapping(value = "/edit") @@ -84,7 +80,6 @@ public class MenuController { * 删除菜单 * * @param menuId 菜单编号 - * * @return 重定向到/admin/menus */ @GetMapping(value = "/remove") diff --git a/src/main/java/cc/ryanc/halo/web/controller/admin/PageController.java b/src/main/java/cc/ryanc/halo/web/controller/admin/PageController.java index 7703b724f..6563722c9 100755 --- a/src/main/java/cc/ryanc/halo/web/controller/admin/PageController.java +++ b/src/main/java/cc/ryanc/halo/web/controller/admin/PageController.java @@ -27,6 +27,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; +import org.springframework.data.web.PageableDefault; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; @@ -77,7 +78,6 @@ public class PageController { * 页面管理页面 * * @param model model - * * @return 模板路径admin/admin_page */ @GetMapping @@ -102,7 +102,6 @@ public class PageController { * * @param model model * @param linkId linkId 友情链接编号 - * * @return String 模板路径admin/admin_page_link */ @GetMapping(value = "/links/edit") @@ -116,7 +115,6 @@ public class PageController { * 处理添加/修改友链的请求并渲染页面 * * @param link Link实体 - * * @return JsonResult */ @PostMapping(value = "/links/save") @@ -138,7 +136,6 @@ public class PageController { * 处理删除友情链接的请求并重定向 * * @param linkId 友情链接编号 - * * @return 重定向到/admin/page/links */ @GetMapping(value = "/links/remove") @@ -155,17 +152,11 @@ public class PageController { * 图库管理 * * @param model model - * @param page 当前页码 - * @param size 每页显示的条数 - * * @return 模板路径admin/admin_page_gallery */ @GetMapping(value = "/galleries") public String gallery(Model model, - @RequestParam(value = "page", defaultValue = "0") Integer page, - @RequestParam(value = "size", defaultValue = "18") Integer size) { - final Sort sort = new Sort(Sort.Direction.DESC, "galleryId"); - final Pageable pageable = PageRequest.of(page, size, sort); + @PageableDefault(size = 18, sort = "galleryId", direction = Sort.Direction.DESC) Pageable pageable) { final Page galleries = galleryService.findAll(pageable); model.addAttribute("galleries", galleries); return "admin/admin_page_gallery"; @@ -175,7 +166,6 @@ public class PageController { * 保存图片 * * @param gallery gallery - * * @return 重定向到/admin/page/gallery */ @PostMapping(value = "/gallery/save") @@ -196,7 +186,6 @@ public class PageController { * * @param model model * @param galleryId 图片编号 - * * @return 模板路径admin/widget/_gallery-detail */ @GetMapping(value = "/gallery") @@ -210,7 +199,6 @@ public class PageController { * 删除图库中的图片 * * @param galleryId 图片编号 - * * @return JsonResult */ @GetMapping(value = "/gallery/remove") @@ -229,7 +217,6 @@ public class PageController { * 跳转到新建页面 * * @param model model - * * @return 模板路径admin/admin_page_md_editor */ @GetMapping(value = "/new") @@ -281,7 +268,6 @@ public class PageController { * * @param pageId 页面编号 * @param model model - * * @return admin/admin_page_md_editor */ @GetMapping(value = "/edit") @@ -297,7 +283,6 @@ public class PageController { * 检查该路径是否已经存在 * * @param postUrl postUrl - * * @return JsonResult */ @GetMapping(value = "/checkUrl") diff --git a/src/main/java/cc/ryanc/halo/web/controller/admin/PostController.java b/src/main/java/cc/ryanc/halo/web/controller/admin/PostController.java index c09aa23c0..63df22d47 100755 --- a/src/main/java/cc/ryanc/halo/web/controller/admin/PostController.java +++ b/src/main/java/cc/ryanc/halo/web/controller/admin/PostController.java @@ -15,7 +15,6 @@ import cc.ryanc.halo.utils.HaloUtils; import cc.ryanc.halo.utils.LocaleMessageUtil; import cc.ryanc.halo.utils.MarkdownUtils; import cc.ryanc.halo.web.controller.core.BaseController; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.crypto.SecureUtil; @@ -23,9 +22,8 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; -import org.springframework.data.domain.Sort; +import org.springframework.data.web.PageableDefault; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.ServletRequestDataBinder; @@ -38,6 +36,8 @@ import java.util.Date; import java.util.List; import java.util.Optional; +import static org.springframework.data.domain.Sort.Direction.DESC; + /** *
  *     后台文章管理控制器
@@ -83,17 +83,12 @@ public class PostController extends BaseController {
      * 处理后台获取文章列表的请求
      *
      * @param model model
-     * @param page  当前页码
-     * @param size  每页显示的条数
      * @return 模板路径admin/admin_post
      */
     @GetMapping
     public String posts(Model model,
                         @RequestParam(value = "status", defaultValue = "0") Integer status,
-                        @RequestParam(value = "page", defaultValue = "0") Integer page,
-                        @RequestParam(value = "size", defaultValue = "10") Integer size) {
-        final Sort sort = new Sort(Sort.Direction.DESC, "postDate");
-        final Pageable pageable = PageRequest.of(page, size, sort);
+                        @PageableDefault(sort = "postDate", direction = DESC) Pageable pageable) {
         final Page posts = postService.findPostByStatus(status, PostTypeEnum.POST_TYPE_POST.getDesc(), pageable);
         model.addAttribute("posts", posts);
         model.addAttribute("publishCount", postService.getCountByStatus(PostStatusEnum.PUBLISHED.getCode()));
@@ -108,19 +103,13 @@ public class PostController extends BaseController {
      *
      * @param model   Model
      * @param keyword keyword 关键字
-     * @param page    page 当前页码
-     * @param size    size 每页显示条数
      * @return 模板路径admin/admin_post
      */
     @PostMapping(value = "/search")
     public String searchPost(Model model,
                              @RequestParam(value = "keyword") String keyword,
-                             @RequestParam(value = "page", defaultValue = "0") Integer page,
-                             @RequestParam(value = "size", defaultValue = "10") Integer size) {
+                             @PageableDefault(sort = "postId", direction = DESC) Pageable pageable) {
         try {
-            //排序规则
-            final Sort sort = new Sort(Sort.Direction.DESC, "postId");
-            final Pageable pageable = PageRequest.of(page, size, sort);
             model.addAttribute("posts", postService.searchPosts(keyword, PostTypeEnum.POST_TYPE_POST.getDesc(), PostStatusEnum.PUBLISHED.getCode(), pageable));
         } catch (Exception e) {
             log.error("未知错误:{}", e.getMessage());
diff --git a/src/main/java/cc/ryanc/halo/web/controller/api/ApiPostController.java b/src/main/java/cc/ryanc/halo/web/controller/api/ApiPostController.java
index afdf492e9..0a941d36d 100644
--- a/src/main/java/cc/ryanc/halo/web/controller/api/ApiPostController.java
+++ b/src/main/java/cc/ryanc/halo/web/controller/api/ApiPostController.java
@@ -14,8 +14,12 @@ import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.domain.Sort;
+import org.springframework.data.web.PageableDefault;
+import org.springframework.data.web.SortDefault;
 import org.springframework.web.bind.annotation.*;
 
+import static org.springframework.data.domain.Sort.Direction.DESC;
+
 /**
  * 
  *     文章API
@@ -95,12 +99,10 @@ public class ApiPostController {
      * 

* * @param page 页码 - * * @return JsonResult */ @GetMapping(value = "/page/{page}") - public JsonResult posts(@PathVariable(value = "page") Integer page) { - final Sort sort = new Sort(Sort.Direction.DESC, "postDate"); + public JsonResult posts(@PathVariable(value = "page") Integer page, @SortDefault(sort = "postDate", direction = DESC) Sort sort) { int size = 10; if (StrUtil.isNotBlank(HaloConst.OPTIONS.get(BlogPropertiesEnum.INDEX_POSTS.getProp()))) { size = Integer.parseInt(HaloConst.OPTIONS.get(BlogPropertiesEnum.INDEX_POSTS.getProp())); @@ -147,7 +149,6 @@ public class ApiPostController { *

* * @param postId 文章编号 - * * @return JsonResult */ @GetMapping(value = "/{postId}") diff --git a/src/main/java/cc/ryanc/halo/web/controller/core/CommonController.java b/src/main/java/cc/ryanc/halo/web/controller/core/CommonController.java index 43b6f1afa..34cc51df9 100644 --- a/src/main/java/cc/ryanc/halo/web/controller/core/CommonController.java +++ b/src/main/java/cc/ryanc/halo/web/controller/core/CommonController.java @@ -41,7 +41,6 @@ public class CommonController implements ErrorController { /** * 渲染404页面 * - * @param model model * @return String */ @GetMapping(value = "/404") @@ -52,7 +51,6 @@ public class CommonController implements ErrorController { /** * 渲染500页面 * - * @param model model * @return String */ @GetMapping(value = "/500") diff --git a/src/main/java/cc/ryanc/halo/web/controller/core/InstallController.java b/src/main/java/cc/ryanc/halo/web/controller/core/InstallController.java index 8317ad3df..a5e5a997b 100644 --- a/src/main/java/cc/ryanc/halo/web/controller/core/InstallController.java +++ b/src/main/java/cc/ryanc/halo/web/controller/core/InstallController.java @@ -85,8 +85,6 @@ public class InstallController { * 执行安装 * * @param blogLocale 系统语言 - * @param siteTitle 博客标题 - * @param siteUrl 博客网址 * @param userName 用户名 * @param userDisplayName 用户名显示名 * @param userEmail 用户邮箱 diff --git a/src/main/java/cc/ryanc/halo/web/controller/front/FrontArchiveController.java b/src/main/java/cc/ryanc/halo/web/controller/front/FrontArchiveController.java index 520afc667..05ebf2ba5 100644 --- a/src/main/java/cc/ryanc/halo/web/controller/front/FrontArchiveController.java +++ b/src/main/java/cc/ryanc/halo/web/controller/front/FrontArchiveController.java @@ -22,6 +22,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; +import org.springframework.data.web.SortDefault; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; @@ -33,6 +34,8 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; +import static org.springframework.data.domain.Sort.Direction.DESC; + /** *
  *     前台文章归档控制器
@@ -62,7 +65,7 @@ public class FrontArchiveController extends BaseController {
      */
     @GetMapping
     public String archives(Model model) {
-        return this.archives(model, 1);
+        return this.archives(model, 1, Sort.by(DESC, "postDate"));
     }
 
     /**
@@ -74,10 +77,9 @@ public class FrontArchiveController extends BaseController {
      */
     @GetMapping(value = "page/{page}")
     public String archives(Model model,
-                           @PathVariable(value = "page") Integer page) {
-
+                           @PathVariable(value = "page") Integer page,
+                           @SortDefault(sort = "postDate", direction = DESC) Sort sort) {
         //所有文章数据,分页,material主题适用
-        final Sort sort = new Sort(Sort.Direction.DESC, "postDate");
         final Pageable pageable = PageRequest.of(page - 1, 5, sort);
         final Page posts = postService.findPostByStatus(PostStatusEnum.PUBLISHED.getCode(), PostTypeEnum.POST_TYPE_POST.getDesc(), pageable);
         if (null == posts) {
diff --git a/src/main/java/cc/ryanc/halo/web/controller/front/FrontCategoryController.java b/src/main/java/cc/ryanc/halo/web/controller/front/FrontCategoryController.java
index c0c385111..06f94111d 100644
--- a/src/main/java/cc/ryanc/halo/web/controller/front/FrontCategoryController.java
+++ b/src/main/java/cc/ryanc/halo/web/controller/front/FrontCategoryController.java
@@ -14,6 +14,7 @@ import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.domain.Sort;
+import org.springframework.data.web.SortDefault;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -22,6 +23,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
 
 import java.util.List;
 
+import static org.springframework.data.domain.Sort.Direction.DESC;
+
 /**
  * 
  *     前台文章分类控制器
@@ -44,7 +47,6 @@ public class FrontCategoryController extends BaseController {
      * 分类列表页面
      *
      * @param model model
-     *
      * @return String
      */
     @GetMapping
@@ -59,13 +61,12 @@ public class FrontCategoryController extends BaseController {
      *
      * @param model   model
      * @param cateUrl cateUrl
-     *
      * @return string
      */
     @GetMapping(value = "{cateUrl}")
     public String categories(Model model,
                              @PathVariable("cateUrl") String cateUrl) {
-        return this.categories(model, cateUrl, 1);
+        return this.categories(model, cateUrl, 1, Sort.by(DESC, "postDate"));
     }
 
     /**
@@ -74,18 +75,17 @@ public class FrontCategoryController extends BaseController {
      * @param model   model
      * @param cateUrl 分类目录路径
      * @param page    页码
-     *
      * @return String
      */
     @GetMapping("{cateUrl}/page/{page}")
     public String categories(Model model,
                              @PathVariable("cateUrl") String cateUrl,
-                             @PathVariable("page") Integer page) {
+                             @PathVariable("page") Integer page,
+                             @SortDefault(sort = "postDate", direction = DESC) Sort sort) {
         final Category category = categoryService.findByCateUrl(cateUrl);
         if (null == category) {
             return this.renderNotFound();
         }
-        final Sort sort = new Sort(Sort.Direction.DESC, "postDate");
         int size = 10;
         if (StrUtil.isNotBlank(HaloConst.OPTIONS.get(BlogPropertiesEnum.INDEX_POSTS.getProp()))) {
             size = Integer.parseInt(HaloConst.OPTIONS.get(BlogPropertiesEnum.INDEX_POSTS.getProp()));
diff --git a/src/main/java/cc/ryanc/halo/web/controller/front/FrontIndexController.java b/src/main/java/cc/ryanc/halo/web/controller/front/FrontIndexController.java
index c7e6751cf..8f7905f80 100644
--- a/src/main/java/cc/ryanc/halo/web/controller/front/FrontIndexController.java
+++ b/src/main/java/cc/ryanc/halo/web/controller/front/FrontIndexController.java
@@ -13,12 +13,15 @@ import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.domain.Sort;
+import org.springframework.data.web.SortDefault;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
 
+import static org.springframework.data.domain.Sort.Direction.DESC;
+
 /**
  * 
  *     前台首页控制器
@@ -44,7 +47,7 @@ public class FrontIndexController extends BaseController {
      */
     @GetMapping
     public String index(Model model) {
-        return this.index(model, 1);
+        return this.index(model, 1, Sort.by(DESC, "postDate"));
     }
 
     /**
@@ -52,13 +55,12 @@ public class FrontIndexController extends BaseController {
      *
      * @param model model
      * @param page  当前页码
-     * @param size  每页数量
      * @return 模板路径/themes/{theme}/index
      */
     @GetMapping(value = "page/{page}")
     public String index(Model model,
-                        @PathVariable(value = "page") Integer page) {
-        final Sort sort = new Sort(Sort.Direction.DESC, "postDate");
+                        @PathVariable(value = "page") Integer page,
+                        @SortDefault(sort = "postDate", direction = DESC) Sort sort) {
         //默认显示10条
         int size = 10;
         if (StrUtil.isNotBlank(HaloConst.OPTIONS.get(BlogPropertiesEnum.INDEX_POSTS.getProp()))) {
diff --git a/src/main/java/cc/ryanc/halo/web/controller/front/FrontSearchController.java b/src/main/java/cc/ryanc/halo/web/controller/front/FrontSearchController.java
index f231767ed..dec652dfc 100644
--- a/src/main/java/cc/ryanc/halo/web/controller/front/FrontSearchController.java
+++ b/src/main/java/cc/ryanc/halo/web/controller/front/FrontSearchController.java
@@ -16,6 +16,7 @@ import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.domain.Sort;
+import org.springframework.data.web.SortDefault;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -23,6 +24,8 @@ import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 
+import static org.springframework.data.domain.Sort.Direction.DESC;
+
 /**
  * 
  *     文章检索
@@ -49,7 +52,7 @@ public class FrontSearchController extends BaseController {
     @GetMapping
     public String search(Model model,
                          @RequestParam(value = "keyword") String keyword) {
-        return this.search(model, HtmlUtil.escape(keyword), 1);
+        return this.search(model, HtmlUtil.escape(keyword), 1, Sort.by(DESC, "postDate"));
     }
 
     /**
@@ -63,14 +66,14 @@ public class FrontSearchController extends BaseController {
     @GetMapping(value = "page/{page}")
     public String search(Model model,
                          @RequestParam(value = "keyword") String keyword,
-                         @PathVariable(value = "page") Integer page) {
-        final Sort sort = new Sort(Sort.Direction.DESC, "postDate");
+                         @PathVariable(value = "page") Integer page,
+                         @SortDefault(sort = "postDate", direction = DESC) Sort sort) {
         int size = 10;
         if (StrUtil.isNotBlank(HaloConst.OPTIONS.get(BlogPropertiesEnum.INDEX_POSTS.getProp()))) {
             size = Integer.parseInt(HaloConst.OPTIONS.get(BlogPropertiesEnum.INDEX_POSTS.getProp()));
         }
         final Pageable pageable = PageRequest.of(page - 1, size, sort);
-        final Page posts = postService.searchPosts(HtmlUtil.escape(keyword),PostTypeEnum.POST_TYPE_POST.getDesc(),PostStatusEnum.PUBLISHED.getCode(),pageable);
+        final Page posts = postService.searchPosts(HtmlUtil.escape(keyword), PostTypeEnum.POST_TYPE_POST.getDesc(), PostStatusEnum.PUBLISHED.getCode(), pageable);
         final int[] rainbow = PageUtil.rainbow(page, posts.getTotalPages(), 3);
         model.addAttribute("is_search", true);
         model.addAttribute("keyword", keyword);
diff --git a/src/main/java/cc/ryanc/halo/web/controller/front/FrontTagController.java b/src/main/java/cc/ryanc/halo/web/controller/front/FrontTagController.java
index fce93bbd2..ccc344342 100644
--- a/src/main/java/cc/ryanc/halo/web/controller/front/FrontTagController.java
+++ b/src/main/java/cc/ryanc/halo/web/controller/front/FrontTagController.java
@@ -14,12 +14,15 @@ import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.domain.Sort;
+import org.springframework.data.web.SortDefault;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
 
+import static org.springframework.data.domain.Sort.Direction.DESC;
+
 /**
  * 
  *     前台标签控制器
@@ -53,13 +56,12 @@ public class FrontTagController extends BaseController {
      *
      * @param tagUrl 标签路径
      * @param model  model
-     *
      * @return String
      */
     @GetMapping(value = "{tagUrl}")
     public String tags(Model model,
                        @PathVariable("tagUrl") String tagUrl) {
-        return this.tags(model, tagUrl, 1);
+        return this.tags(model, tagUrl, 1, Sort.by(DESC, "postDate"));
     }
 
     /**
@@ -68,18 +70,17 @@ public class FrontTagController extends BaseController {
      * @param model  model
      * @param tagUrl 标签路径
      * @param page   页码
-     *
      * @return String
      */
     @GetMapping(value = "{tagUrl}/page/{page}")
     public String tags(Model model,
                        @PathVariable("tagUrl") String tagUrl,
-                       @PathVariable("page") Integer page) {
+                       @PathVariable("page") Integer page,
+                       @SortDefault(sort = "postDate", direction = DESC) Sort sort) {
         final Tag tag = tagService.findByTagUrl(tagUrl);
         if (null == tag) {
             return this.renderNotFound();
         }
-        final Sort sort = new Sort(Sort.Direction.DESC, "postDate");
         int size = 10;
         if (StrUtil.isNotBlank(HaloConst.OPTIONS.get(BlogPropertiesEnum.INDEX_POSTS.getProp()))) {
             size = Integer.parseInt(HaloConst.OPTIONS.get(BlogPropertiesEnum.INDEX_POSTS.getProp()));