本篇內(nèi)容介紹了“java中的Bean Validation怎么使用”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!
十余年的恩陽網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。營銷型網(wǎng)站的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整恩陽建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)從事“恩陽網(wǎng)站設(shè)計”,“恩陽網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
概念:java中的Bean Validation是一個數(shù)據(jù)驗證的規(guī)范。
說明:Hibernate Validator是Bean Validation的一個具體實現(xiàn)。
舉例:在springMVC中使用Hibernate Validator
1)maven依賴:javax.validation validation-api 1.1.0.Final 2)JavaBean: import javax.validation.constraints.NotNull; import org.hibernate.validator.constraints.NotBlank; /** * 在需要進行校驗的屬性上添加相應(yīng)的注解: * * 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=) 被注釋的元素的大小必須在指定的范圍內(nèi) * @Digits (integer, fraction) 被注釋的元素必須是一個數(shù)字,其值必須在可接受的范圍內(nèi) * @Past 被注釋的元素必須是一個過去的日期 * @Future 被注釋的元素必須是一個將來的日期 * @Pattern(regex=,flag=) 被注釋的元素必須符合指定的正則表達式 * * 2)Hibernate Validator 特有的 constraint: * @NotBlank(message =) 驗證字符串非null,且長度必須大于0 * @NotEmpty 被注釋的字符串或集合的必須非空 * @Email 被注釋的元素必須符合email的格式 * @Length(min=,max=) 被注釋的字符串的大小必須在指定的范圍內(nèi) * @Range(min=,max=,message=) 被注釋的元素必須在合適的范圍內(nèi) * */ 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ù),用來封裝 校驗的結(jié)果 */ @RequestMapping(value = "/user/add", method = RequestMethod.POST) public String addUser(@Valid @RequestBody User req, BindingResult bindingResult) { if (bindingResult.hasErrors()) { List org.hibernate hibernate-validator 5.1.2.Final allErrors = bindingResult.getAllErrors(); List msgs = new ArrayList (); 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 參數(shù): {"name":"","age":null} ==> 響應(yīng)內(nèi)容:age is null! & name is null! {"name":"","age":""} ==> 響應(yīng)內(nèi)容:age is null! & name is null! {"name":"jack","age":"17"} ==> 響應(yīng)內(nèi)容:success!
常見錯誤:
報錯:javax.validation.UnexpectedTypeException: HV000030: No validator could be found for type: java.lang.Integer. 分析:是由于@NotBlank修飾了Integer、Long等引用類型的屬性 eg: @NotBlank private Integer age; 修正:應(yīng)該使用@NotNull來修飾引用類型的屬性。 @NotNull private Integer age;
“java中的Bean Validation怎么使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!