springmvc-3.2-jsr303解决服务端验证问题
从以前的验证:Stringutils.isEmpty....到struts的验证:xxxvalidate
现在使用jsr303使之更加简单
依赖hibernate-validator-4.xx.jar
实体类中的变化
@Entity @Cache(usage=CacheConcurrencyStrategy.READ_WRITE) public class Admin { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private Integer id; // 加NotEmpty注解,如果为空有提示 @NotEmpty(message="账号不能为空") private String name; @NotEmpty(message="密码不能为空") private String password;
表单书写方式发生变化
首先导入springmvc的标签
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<!--来这个表单之前先传一个admin过来 commandName="admin" --> <form:form method="POST" commandName="admin"> <legend>登录</legend> <!-- <form:errors path="*" cssClass="help-inline text-error" element="span"/>这样是所有错误都在这显示,也可以像下面分开写 --> <label>账号</label> <!-- path相当于以前的name属性 --> <form:input path="name"/> <form:errors path="name" cssClass="help-inline text-error" element="span"/> <label>密码</label> <form:password path="password"/> <form:errors path="password" cssClass="help-inline text-error" element="span"/> <div class="form-actions"> <button class="btn btn-primary">登录</button> </div> </form:form>
----------------------------------------------------------
/*以前是这样 @RequestMapping(value="/",method=RequestMethod.GET) public String index() { return "index"; } */ /* 现在有了commandName="admin"这个form属性就必须在到达页面前传过去一个admin,虽然是空的 */ @RequestMapping(value="/",method=RequestMethod.GET) public String index(Model model) { model.addAttribute("admin", new Admin()); return "index"; } /* 在提交的方法中也要有所改变 */ @RequestMapping(value="/",method=RequestMethod.POST) /* 使用jsr303,提交过来的表单必须用对象接受,不能用name,password 需要加注解@Valid表明admin是需要验证的 而且@Valid Admin admin必须放在最前面*/ public String login(@Valid Admin admin,BindingResult bindingResult,HttpSession session,RedirectAttributes redirectAttributes) { /* 添加了BindingResult这个参数,如果验证有了错误就return到index页面 注意,不是重定向到index 做到这里效果就是如果有错误就会还在index页面并提示账户和密码不能空 当账户写了,但是密码没写,就会只提示密码为空,而且账户的input框中填写的信息不会消失 就是因为 1.我们来这个页面的时候传过来一个空的admin对象,所以他把你写的值都set放入到admin中 2.input框中填写的信息没有消失,是因为我们是return index而不是重定向,然后又把admin中的值get进去 */ if(bindingResult.hasErrors()) { return "index"; } Admin currAdmin = adminService.login(admin.getName(),admin.getPassword()); if(currAdmin == null) { redirectAttributes.addFlashAttribute("message", "账号或密码错误"); <!-- 重定向 --> return "redirect:/"; } else { session.setAttribute("curr_admin", currAdmin); return "redirect:/book"; } }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。