久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

java中的Bean Validation怎么使用

147次閱讀
沒有評論

共計 3149 個字符,預計需要花費 8 分鐘才能閱讀完成。

本篇內容介紹了“java 中的 Bean Validation 怎么使用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

概念:java 中的 Bean Validation 是一個數(shù)據(jù)驗證的規(guī)范。

說明:Hibernate Validator 是 Bean Validation 的一個具體實現(xiàn)。

舉例:在 springMVC 中使用 Hibernate Validator

1)maven 依賴:dependency 
 groupId javax.validation /groupId 
 artifactId validation-api /artifactId 
 version 1.1.0.Final /version 
 /dependency 
 dependency 
 groupId org.hibernate /groupId 
 artifactId hibernate-validator /artifactId 
 version 5.1.2.Final /version 
 /dependency 
2)JavaBean:import javax.validation.constraints.NotNull;
 import org.hibernate.validator.constraints.NotBlank;
  *  在需要進行校驗的屬性上添加相應的注解: * 
  * 1)Bean Validation  提供的  constraint: 
  *  [@Null](https://my.oschina.net/u/561366)  被注釋的元素必須為  null 
  * [@NotNull](https://my.oschina.net/notnull)  被注釋的元素必須不為  null 
  * @AssertTrue  被注釋的元素必須為  true 
  * [@AssertFalse](https://my.oschina.net/u/2430840)  被注釋的元素必須為  false 
  * @Min(value)  被注釋的元素必須是一個數(shù)字,其值必須大于等于指定的最小值  
  * @Max(value)  被注釋的元素必須是一個數(shù)字,其值必須小于等于指定的最大值  
  * @DecimalMin(value)  被注釋的元素必須是一個數(shù)字,其值必須大于等于指定的最小值  
  * @DecimalMax(value)  被注釋的元素必須是一個數(shù)字,其值必須小于等于指定的最大值  
  * @Size(max=, min=)  被注釋的元素的大小必須在指定的范圍內  
  * @Digits (integer, fraction)  被注釋的元素必須是一個數(shù)字,其值必須在可接受的范圍內  
  * @Past   被注釋的元素必須是一個過去的日期  
  * @Future   被注釋的元素必須是一個將來的日期  
  * @Pattern(regex=,flag=)  被注釋的元素必須符合指定的正則表達式  
  *  
  * 2)Hibernate Validator  特有的  constraint: * @NotBlank(message =) 驗證字符串非 null,且長度必須大于 0  
  * @NotEmpty 被注釋的字符串或集合的必須非空  
  * @Email  被注釋的元素必須符合 email 的格式  
  * @Length(min=,max=) 被注釋的字符串的大小必須在指定的范圍內  
  * @Range(min=,max=,message=) 被注釋的元素必須在合適的范圍內  
  * 
  */ 
 public class User {
  
 @NotBlank(message =  name is null!)
 private String name;
 @NotNull(message =  age is null!)
 private Integer age;
 private String email;
 private String address;
 // getter and setter ..
3) 控制器:import javax.validation.Valid;
 import org.springframework.validation.BindingResult;
 import org.springframework.validation.ObjectError;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMethod;
 @RestController
 @RequestMapping(/sys)
 public class UserController {
  * 1. 給需要校驗的參數(shù)添加  @Valid 注解  
  * 2. 給方法添加一個類型為  BindingResult 的參數(shù),用來封裝   校驗的結果
  */
 @RequestMapping(value =  /user/add , method = RequestMethod.POST)
 public String addUser(@Valid @RequestBody User req, BindingResult bindingResult) {if (bindingResult.hasErrors()) {List ObjectError  allErrors = bindingResult.getAllErrors();
 List String  msgs = new ArrayList String 
 for (ObjectError objectError : allErrors) {String msg = objectError.getDefaultMessage();
 msgs.add(msg);
 String paramErrorMsg = StringUtils.join(msgs,      
 return paramErrorMsg;
 } else {
 System.out.println( do add user. 
 return  success! 
4) 接口測試:地址:http://localhost:8081/jxn-web/api/sys/user/add
 請求類型:Content-Type: application/json
 {name : , age :null} ==   響應內容:age is null!   name is null!
 {name : , age :} ==   響應內容:age is null!   name is null!
 {name : jack , age : 17} ==   響應內容:success!

常見錯誤:

 報錯:javax.validation.UnexpectedTypeException: HV000030: No validator could be found for type: java.lang.Integer.
分析:是由于 @NotBlank 修飾了 Integer、Long 等引用類型的屬性
 @NotBlank
 private Integer age;
修正:應該使用 @NotNull 來修飾引用類型的屬性。@NotNull
 private Integer age;

“java 中的 Bean Validation 怎么使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注丸趣 TV 網站,丸趣 TV 小編將為大家輸出更多高質量的實用文章!

正文完
 
丸趣
版權聲明:本站原創(chuàng)文章,由 丸趣 2023-08-16發(fā)表,共計3149字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發(fā)布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 英德市| 辉南县| 马公市| 广灵县| 尤溪县| 嘉定区| 姚安县| 九寨沟县| 汶上县| 乐安县| 亳州市| 新蔡县| 通山县| 于田县| 塘沽区| 交口县| 宣威市| 安多县| 丰县| 万宁市| 甘谷县| 武平县| 崇州市| 彭州市| 根河市| 特克斯县| 乐昌市| 兴和县| 格尔木市| 灵石县| 澜沧| 改则县| 乐昌市| 上杭县| 沙河市| 射洪县| 土默特右旗| 四会市| 延川县| 巩义市| 武清区|