91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java中的Bean Validation怎么使用

發布時間:2021-12-18 15:27:07 來源:億速云 閱讀:189 作者:iii 欄目:云計算

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

概念:java中的Bean Validation是一個數據驗證的規范。

說明:Hibernate Validator是Bean Validation的一個具體實現。

舉例:在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)     被注釋的元素必須是一個數字,其值必須大于等于指定的最小值       
	 *		@Max(value)     被注釋的元素必須是一個數字,其值必須小于等于指定的最大值       
	 *		@DecimalMin(value)  被注釋的元素必須是一個數字,其值必須大于等于指定的最小值       
	 *		@DecimalMax(value)  被注釋的元素必須是一個數字,其值必須小于等于指定的最大值       
	 *		@Size(max=, min=)   被注釋的元素的大小必須在指定的范圍內       
	 *		@Digits (integer, fraction)     被注釋的元素必須是一個數字,其值必須在可接受的范圍內       
	 *		@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.給需要校驗的參數添加 @Valid注解 
		 * 2.給方法添加一個類型為 BindingResult的參數,用來封裝 校驗的結果
		 */
		@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等引用類型的屬性
eg:
	@NotBlank
	private Integer age;
	
修正:應該使用@NotNull來修飾引用類型的屬性。
	@NotNull
	private Integer age;

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

思南县| 乌兰县| 阳高县| 远安县| 永宁县| 华宁县| 崇阳县| 高青县| 宣恩县| 交口县| 平昌县| 张家界市| 长春市| 天峻县| 安泽县| 陇川县| 宁都县| 贵南县| 徐州市| 罗平县| 平定县| 靖安县| 鹤峰县| 镇康县| 黄平县| 咸阳市| 尖扎县| 山阴县| 泊头市| 博湖县| 思茅市| 阳西县| 泰来县| 平定县| 阿坝县| 古田县| 邯郸市| 广东省| 太谷县| 利津县| 黔东|