Spring4下validation數(shù)據(jù)校驗(yàn)無(wú)效(maven)的解決
SpringMVC4使用數(shù)據(jù)校驗(yàn)的時(shí)候需要使用hibernate-validator的包
第一步添加依賴
<dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>2.0.0.Final</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.4.1.Final</version> </dependency>
第二步添加校驗(yàn)注解
package com.demo.model; /* * spring4 用hibernate中的validation * * */ import org.hibernate.validator.constraints.Email; import org.hibernate.validator.constraints.NotBlank; import javax.validation.constraints.Size; public class User { private String username; private String password; private String nickname; private String email; public User(){ } public User(String username, String password, String nickname, String email) { this.username = username; this.password = password; this.nickname = nickname; this.email = email; } @NotBlank(message = "用戶名不能為空") public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } @Size(min = 6,max = 20,message = "密碼為6-20位") public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } @Email(message = "請(qǐng)輸入合法的郵箱") public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }
第三步在控制器中對(duì)指定參數(shù)進(jìn)行校驗(yàn)注解
注:BindingResult 必須緊跟在@Validate
//@Validated指定驗(yàn)證對(duì)象 BindingResult緊跟Validated @RequestMapping(value="/add",method = RequestMethod.POST) public String add(@Validated User user, BindingResult br){ System.out.println(br); System.out.println(br.getErrorCount()); if(br.hasErrors()) return "user/add"; users.put(user.getUsername(),user); return "redirect:/user/users"; }
注:這個(gè)配置也會(huì)影響到校驗(yàn)是否生效
<mvc:annotation-driven/>
SpringBoot-----數(shù)據(jù)驗(yàn)證validation(實(shí)戰(zhàn)中,不推薦使用)
1、定義錯(cuò)誤信息
在resources/下創(chuàng)建名稱為ValidationMessages.properties
member.mid.notnull.error=用戶名不允許為空 member.mid.email.error=用戶名的注冊(cè)必須輸入正確的郵箱 member.mid.length.error=用戶名的格式錯(cuò)誤
2、給Vo類添加注解
package com.zemel.micorboot.vo; import java.io.Serializable; import java.util.Date; import javax.validation.constraints.Email; import javax.validation.constraints.NotNull; import org.hibernate.validator.constraints.Length; public class Member implements Serializable{ /** * */ private static final long serialVersionUID = 1L; @NotNull(message="{member.mid.notnull.error}") @Email(message="{member.mid.email.error}") @Length(min=6,message="{member.mid.length.error}") private String mid; private Integer age; private Double salary; private Date birthday; public String getMid() { return mid; } public void setMid(String mid) { this.mid = mid; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Double getSalary() { return salary; } public void setSalary(Double salary) { this.salary = salary; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } }
3、控制添加驗(yàn)證
@Valid Member vo, BindingResult result package com.zemel.micorboot.controller; import java.util.List; import javax.validation.Valid; import org.springframework.stereotype.Controller; import org.springframework.validation.BindingResult; import org.springframework.validation.ObjectError; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.zemel.micorboot.base.AbstractBaseController; import com.zemel.micorboot.vo.Member; @Controller public class MemberController extends AbstractBaseController { @GetMapping("/addPre") public String addPre(){ return "message/member_add"; } @GetMapping("/add") @ResponseBody public Object add(@Valid Member vo, BindingResult result){ System.out.println("【ADD方法】"+result.hasErrors()); if(result.hasErrors()){ List<ObjectError> list = result.getAllErrors(); list.forEach(oe -> { }); return result.getAllErrors(); } return vo; } }
4、訪問結(jié)果
[{"codes":["Email.member.mid","Email.mid","Email.java.lang.String","Email"],"arguments":[{"codes":["member.mid","mid"],"arguments":null,"defaultMessage":"mid","code":"mid"},[],{"defaultMessage":".*","arguments":null,"codes":[".*"]}],"defaultMessage":"ç¨æ·åçæ³¨åå¿é¡»è¾å¥æ£ç¡®çé®ç®±","objectName":"member","field":"mid","rejectedValue":"xx","bindingFailure":false,"code":"Email"}]
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java遞歸與非遞歸實(shí)現(xiàn)掃描文件夾下所有文件
這篇文章主要為大家詳細(xì)介紹了java遞歸與非遞歸實(shí)現(xiàn)掃描文件夾下所有文件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02Java API如何實(shí)現(xiàn)向Hive批量導(dǎo)入數(shù)據(jù)
這篇文章主要介紹了Java API如何實(shí)現(xiàn)向Hive批量導(dǎo)入數(shù)據(jù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07完整java開發(fā)中JDBC連接數(shù)據(jù)庫(kù)代碼和步驟
這篇文章主要介紹了完整java開發(fā)中JDBC連接數(shù)據(jù)庫(kù)代碼和步驟,需要的朋友可以參考下2015-09-09Spring Bean創(chuàng)建和循環(huán)依賴
這篇文章主要介紹了Spring Bean創(chuàng)建和循環(huán)依賴,講述了Spring容器中?Bean?的創(chuàng)建過程已經(jīng)主要的方法,另外也著重分析了循環(huán)依賴的問題,需要的小伙伴可以參考一下2022-05-05Java 其中翻轉(zhuǎn)字符串的實(shí)現(xiàn)方法
這篇文章主要介紹了Java 其中翻轉(zhuǎn)字符串的實(shí)現(xiàn)方法,需要的朋友可以參考下2014-02-02springboot注解Aspect實(shí)現(xiàn)方案
本文提供一種自定義注解,來(lái)實(shí)現(xiàn)業(yè)務(wù)審批操作的DEMO,不包含審批流程的配置功能。對(duì)springboot注解Aspect實(shí)現(xiàn)方案感興趣的朋友一起看看吧2022-01-01