@Entity @Table(name = "menu_menu") public class Menu { @Id @Column(name = "id") @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; @Size(min = 4, max = 20, message = "菜单名称长度必须位于5到20之间") @Column(name = "name") private String name; // @Email(message = "必须是Email 格式") @Column(name = "href") private String href; @Column(name = "father_id") private Integer parent;
我们可以直接在实体类中加入验证, @Size(min = 4, max = 20, message = "菜单名称长度必须位于5到20之间")
在 Controllor 管理中,
@RequestMapping("/menu/save") public String saveMenu(@Valid @ModelAttribute Menu menu, BindingResult result,SessionStatus status) { if (result.hasErrors()) { return "/menu/edit"; } else { baseDAO.saveObject(menu); status.setComplete(); return "redirect:/menu/index"; } }
表单保存时候 在保存函数 加入@Valid 验证
页面上加入如下代码:
<form class="form-horizontal" action="#" th:action="@{/menu/save}" th:object="${menu}" method="post"> <input type="hidden" id="id" name="id" th:field="*{id}"/> <div class="form-group"> <label for="name" class="col-sm-2 control-label">名称</label> <div class="col-sm-10"> <input type="text" class="form-control" id="name" placeholder="菜单名称" name="name" th:field="*{name}"/> <span th:if="${#fields.hasErrors('name')}" th:errors="*{name}">Name Error</span> </div>
显示效果如下, 是不是很简单?
当然,一般配合 jquery.form.validata 做前端的表单验证。
完整工程代码如下:
https://github.com/guanry/wmshop.git
配置后本地访问地址:
http://127.0.0.1:8080/menu/index
下面需要处理国际化的问题