🐛 修复菜单管理的bug

pull/69/head
ruibaby 2018-12-27 12:00:01 +08:00
parent b609ecbec1
commit 732c4d14e5
6 changed files with 52 additions and 17 deletions

View File

@ -6,6 +6,8 @@ import javax.persistence.Entity;
import javax.persistence.GeneratedValue; import javax.persistence.GeneratedValue;
import javax.persistence.Id; import javax.persistence.Id;
import javax.persistence.Table; import javax.persistence.Table;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable; import java.io.Serializable;
/** /**
@ -33,16 +35,19 @@ public class Menu implements Serializable {
/** /**
* *
*/ */
@NotEmpty(message = "菜单名称不能为空!")
private String menuName; private String menuName;
/** /**
* *
*/ */
@NotEmpty(message = "菜单路径不能为空!")
private String menuUrl; private String menuUrl;
/** /**
* *
*/ */
@NotNull(message = "排序编号不能为空!")
private Integer menuSort; private Integer menuSort;
/** /**

View File

@ -1,13 +1,19 @@
package cc.ryanc.halo.web.controller.admin; package cc.ryanc.halo.web.controller.admin;
import cc.ryanc.halo.model.domain.Menu; import cc.ryanc.halo.model.domain.Menu;
import cc.ryanc.halo.model.dto.JsonResult;
import cc.ryanc.halo.model.enums.ResultCodeEnum;
import cc.ryanc.halo.service.MenuService; import cc.ryanc.halo.service.MenuService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model; import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.ObjectError;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
/** /**
* <pre> * <pre>
* *
@ -28,6 +34,7 @@ public class MenuController {
* *
* *
* @param model model * @param model model
*
* @return /admin/admin_menu * @return /admin/admin_menu
*/ */
@GetMapping @GetMapping
@ -39,16 +46,23 @@ public class MenuController {
* / * /
* *
* @param menu menu * @param menu menu
*
* @return /admin/menus * @return /admin/menus
*/ */
@PostMapping(value = "/save") @PostMapping(value = "/save")
public String saveMenu(@ModelAttribute Menu menu) { @ResponseBody
try { public JsonResult saveMenu(@Valid Menu menu, BindingResult result) {
menuService.save(menu); if (result.hasErrors()) {
} catch (Exception e) { for (ObjectError error : result.getAllErrors()) {
log.error("Saving menu failed: {}" + e.getMessage()); return new JsonResult(ResultCodeEnum.FAIL.getCode(), error.getDefaultMessage());
}
}
menu = menuService.save(menu);
if (null != menu) {
return new JsonResult(ResultCodeEnum.SUCCESS.getCode(), "菜单保存成功!");
} else {
return new JsonResult(ResultCodeEnum.FAIL.getCode(), "菜单保存成功!");
} }
return "redirect:/admin/menus";
} }
/** /**
@ -56,11 +70,12 @@ public class MenuController {
* *
* @param menuId * @param menuId
* @param model model * @param model model
*
* @return /admin/admin_menu * @return /admin/admin_menu
*/ */
@GetMapping(value = "/edit") @GetMapping(value = "/edit")
public String updateMenu(@RequestParam("menuId") Long menuId, Model model) { public String updateMenu(@RequestParam("menuId") Long menuId, Model model) {
Menu menu = menuService.findByMenuId(menuId).get(); Menu menu = menuService.findByMenuId(menuId).orElse(new Menu());
model.addAttribute("updateMenu", menu); model.addAttribute("updateMenu", menu);
return "/admin/admin_menu"; return "/admin/admin_menu";
} }
@ -69,6 +84,7 @@ public class MenuController {
* *
* *
* @param menuId * @param menuId
*
* @return /admin/menus * @return /admin/menus
*/ */
@GetMapping(value = "/remove") @GetMapping(value = "/remove")

View File

@ -147,7 +147,7 @@ admin.menus.text.update-menu = 修改菜单
admin.menus.text.all-menus = 所有菜单 admin.menus.text.all-menus = 所有菜单
admin.menus.text.add-menu = 添加菜单 admin.menus.text.add-menu = 添加菜单
admin.menus.form.menu-name = 名称 admin.menus.form.menu-name = 名称
admin.menus.form.menu-name-tips = 页面上所显示的名称 admin.menus.form.menu-name-tips = *页面上所显示的名称
admin.menus.form.menu-url = 路径 admin.menus.form.menu-url = 路径
admin.menus.form.menu-url-tips = *菜单的路径 admin.menus.form.menu-url-tips = *菜单的路径
admin.menus.form.menu-sort = 排序编号 admin.menus.form.menu-sort = 排序编号

View File

@ -147,7 +147,7 @@ admin.menus.text.update-menu = Edit menu
admin.menus.text.all-menus = All menus admin.menus.text.all-menus = All menus
admin.menus.text.add-menu = Add menu admin.menus.text.add-menu = Add menu
admin.menus.form.menu-name = Menu name admin.menus.form.menu-name = Menu name
admin.menus.form.menu-name-tips = The name displayed on the page admin.menus.form.menu-name-tips = *The name displayed on the page
admin.menus.form.menu-url = Menu url admin.menus.form.menu-url = Menu url
admin.menus.form.menu-url-tips = *Path to the menu admin.menus.form.menu-url-tips = *Path to the menu
admin.menus.form.menu-sort = Sort number admin.menus.form.menu-sort = Sort number

View File

@ -147,7 +147,7 @@ admin.menus.text.update-menu = 修改菜单
admin.menus.text.all-menus = 所有菜单 admin.menus.text.all-menus = 所有菜单
admin.menus.text.add-menu = 添加菜单 admin.menus.text.add-menu = 添加菜单
admin.menus.form.menu-name = 名称 admin.menus.form.menu-name = 名称
admin.menus.form.menu-name-tips = 页面上所显示的名称 admin.menus.form.menu-name-tips = *页面上所显示的名称
admin.menus.form.menu-url = 路径 admin.menus.form.menu-url = 路径
admin.menus.form.menu-url-tips = *菜单的路径 admin.menus.form.menu-url-tips = *菜单的路径
admin.menus.form.menu-sort = 排序编号 admin.menus.form.menu-sort = 排序编号

View File

@ -6,7 +6,7 @@
<h1 style="display: inline-block;"><@spring.message code='admin.menus.title' /></h1> <h1 style="display: inline-block;"><@spring.message code='admin.menus.title' /></h1>
<ol class="breadcrumb"> <ol class="breadcrumb">
<li> <li>
<a data-pjax="true" href="/admin"><i class="fa fa-dashboard"></i> <@spring.message code='admin.index.bread.index' /></a> <a data-pjax="true" href="/admin/"><i class="fa fa-dashboard"></i> <@spring.message code='admin.index.bread.index' /></a>
</li> </li>
<li><a data-pjax="true" href="javascript:void(0)"><@spring.message code='admin.themes.bread.appearance' /></a></li> <li><a data-pjax="true" href="javascript:void(0)"><@spring.message code='admin.themes.bread.appearance' /></a></li>
<li class="active"><@spring.message code='admin.menus.title' /></li> <li class="active"><@spring.message code='admin.menus.title' /></li>
@ -20,7 +20,7 @@
<div class="box-header with-border"> <div class="box-header with-border">
<h3 class="box-title"><@spring.message code='admin.menus.text.update-menu' /><#if updateMenu??>[${updateMenu.menuName}]</#if></h3> <h3 class="box-title"><@spring.message code='admin.menus.text.update-menu' /><#if updateMenu??>[${updateMenu.menuName}]</#if></h3>
</div> </div>
<form action="/admin/menus/save" method="post" role="form" id="menuAddForm"> <form role="form" id="menuSaveForm">
<input type="hidden" name="menuId" value="${updateMenu.menuId?c}"> <input type="hidden" name="menuId" value="${updateMenu.menuId?c}">
<div class="box-body"> <div class="box-body">
<div class="form-group"> <div class="form-group">
@ -35,7 +35,7 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="menuSort"><@spring.message code='admin.menus.form.menu-sort' /></label> <label for="menuSort"><@spring.message code='admin.menus.form.menu-sort' /></label>
<input type="number" class="form-control" id="menuSort" name="menuSort" value="${updateMenu.menuSort!}"> <input type="number" class="form-control" id="menuSort" name="menuSort" value="${updateMenu.menuSort?c}">
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="menuIcon"><@spring.message code='admin.menus.form.menu-icon' /></label> <label for="menuIcon"><@spring.message code='admin.menus.form.menu-icon' /></label>
@ -51,7 +51,7 @@
</div> </div>
</div> </div>
<div class="box-footer"> <div class="box-footer">
<button type="submit" class="btn btn-primary btn-sm "><@spring.message code='common.btn.define-edit' /></button> <button type="button" class="btn btn-primary btn-sm" onclick="save()"><@spring.message code='common.btn.define-edit' /></button>
<a data-pjax="true" href="/admin/menus" class="btn btn-info btn-sm "><@spring.message code='common.btn.back-to-add' /></a> <a data-pjax="true" href="/admin/menus" class="btn btn-info btn-sm "><@spring.message code='common.btn.back-to-add' /></a>
</div> </div>
</form> </form>
@ -59,7 +59,7 @@
<div class="box-header with-border"> <div class="box-header with-border">
<h3 class="box-title"><@spring.message code='admin.menus.text.add-menu' /></h3> <h3 class="box-title"><@spring.message code='admin.menus.text.add-menu' /></h3>
</div> </div>
<form action="/admin/menus/save" method="post" role="form" id="menuAddForm"> <form role="form" id="menuSaveForm">
<div class="box-body"> <div class="box-body">
<div class="form-group"> <div class="form-group">
<label for="menuName"><@spring.message code='admin.menus.form.menu-name' /></label> <label for="menuName"><@spring.message code='admin.menus.form.menu-name' /></label>
@ -89,7 +89,7 @@
</div> </div>
</div> </div>
<div class="box-footer"> <div class="box-footer">
<button type="submit" class="btn btn-primary btn-sm "><@spring.message code='common.btn.define-add' /></button> <button type="button" class="btn btn-primary btn-sm" onclick="save()"><@spring.message code='common.btn.define-add' /></button>
</div> </div>
</form> </form>
</#if> </#if>
@ -116,7 +116,7 @@
<tr> <tr>
<td>${menu.menuName!}</td> <td>${menu.menuName!}</td>
<td>${menu.menuUrl!}</td> <td>${menu.menuUrl!}</td>
<td>${menu.menuSort!}</td> <td>${menu.menuSort?c}</td>
<td>${menu.menuIcon!}</td> <td>${menu.menuIcon!}</td>
<td> <td>
<#if updateMenu?? && menu.menuId?c==updateMenu.menuId?c> <#if updateMenu?? && menu.menuId?c==updateMenu.menuId?c>
@ -163,6 +163,20 @@
var url=$.trim($("#url").val()); var url=$.trim($("#url").val());
window.location.href=url; window.location.href=url;
} }
/**
* 保存
*/
function save() {
var param = $('#menuSaveForm').serialize();
$.post('/admin/menus/save', param, function (data) {
if (data.code === 1) {
halo.showMsgAndRedirect(data.msg, 'success', 1000,'/admin/menus');
} else {
halo.showMsg(data.msg, 'error', 2000);
}
}, 'JSON');
}
</script> </script>
</div> </div>
<@footer></@footer> <@footer></@footer>