摘要:背景在請求時,要對參數進行檢查,以前一直使用如下方式來獲取參數,在參數特別多的時候,代碼很不簡潔。使用注解來對參數進行校驗能讓代碼更整潔。
1.背景
在spring請求時,要對參數進行檢查,以前一直使用如下方式來獲取參數,在參數特別多的時候,代碼很不簡潔。
String userId= request.getParameter("userId");
后來使用注解@RequestParam代碼整潔了好多
@RequestParam(value = "userId",required=true) String userId
后來對于參數比較多的情況,使用一個bean來接收請求參數
@RequestMapping(value="/saveUser") public String saveUser(User user) {}
對于比較復雜,有層級關系情況,使用注解@RequestBody實現
public String setUser(@RequestBody String userInfo) { //使用fastjson轉換為實體類 }
不管使用以上的哪種方式都要對參數進行校驗,如果一個個參數的檢查是否為空,檢查邊界范圍,會導致代碼很多。使用@Valid注解來對參數進行校驗能讓代碼更整潔。
2.使用本文以實體類接收請求參數為例簡單講解,validation一共有hibernate-validator,javax.validation和spring-validator三種注解,本文主要是簡單講解一下javax.validation的使用
@RequestMapping(value="/saveUser") @ResponseBody public JSONObject saveUser(@Valid User user, BindingResult result){ JSONObject jsonObject = new JSONObject(); //判斷是否檢驗錯誤信息 if(result.hasErrors()){ //取出第一條錯誤信息返回 Listlist = result.getFieldErrors(); String errorMessage = CollectionUtils.isEmpty(list)? "參數錯誤!":list.get(0).getDefaultMessage(); jsonObject.put("errorMessage",errorMessage ); return jsonObject; } //saveUser保存用戶信息模塊省略 jsonObject.put("errorMessage","success"); return jsonObject; }
//使用lombok @Data public class User implements Serializable{ @NotNull(message = "用戶id不能為空") @Pattern(regexp="^d{12}$",message = "用戶id非法") private String userId; private String userName; private int age; }
使用@Valid注解進行參數檢查
在沒有使用BindingResult時,程序會拋出空指針等異常信息,不能返回自定義信息,網上查了一下需要使用BindingResult來處理Error信息,自定義返回錯誤數據。
@NotNull,@Pattern,@Size,@Max,@Min,@Digits是我在項目中經常使用的注解
大家可以關注我的公眾號:不知風在何處,相互溝通,共同進步。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/67350.html
摘要:拷貝操作又一個非常好用的工具類和中分別存在一個,提供了對。除了支持基本類型以及基本類型的數組之外,還支持這些類的對象,其余一概不支持。而且,由于這些類都是采用反射機制實現的,對程序的效率也會有影響。因此,慎用或者使用看效果如何 java bean拷貝操作又一個非常好用的工具類 BeanUitls :spring (org.springframework.beans.BeanUtils)...
摘要:本節解釋它用在參數上的情形。一個用在方法參數上的注解指示了參數應該從模型這里所說的模型指中獲取。方法是一種常用的從數據庫中獲取屬性的方式,可以通過使用注解把這種屬性在各個請求之間共享。下一步是數據綁定。 ??這一部分實例見這個項目的 mvc 分支下的 ModelAttrArgsController.java ??上節說過,@ModelAttribute可以用在方法或方法參數上。本節解...
摘要:通用是為了解決使用中的基本操作,使用它可以很方便的進行開發,可以節省開發人員大量的時間。當該參數設置為時,時會查詢第一頁,超過總數時,會查詢最后一頁。 SpringBoot 是為了簡化 Spring 應用的創建、運行、調試、部署等一系列問題而誕生的產物,自動裝配的特性讓我們可以更好的關注業務本身而不是外部的XML配置,我們只需遵循規范,引入相關的依賴就可以輕易的搭建出一個 WEB 工...
摘要:接口接口作用是將請求映射到處理程序,以及預處理和處理后的攔截器列表,映射是基于一些標準的,其中的細節因不同的實現而不相同。該參數是類型,作用是檢查所有的映射解析器或使用或為的,默認為,即從上下文中檢查所有的。 概述 在Spring MVC啟動章節https://segmentfault.com/a/1190000014674239,介紹到了DispatcherServlet的onRef...
閱讀 1772·2023-04-25 21:50
閱讀 2419·2019-08-30 15:53
閱讀 768·2019-08-30 13:19
閱讀 2743·2019-08-28 17:58
閱讀 2465·2019-08-23 16:21
閱讀 2701·2019-08-23 14:08
閱讀 1374·2019-08-23 11:32
閱讀 1439·2019-08-22 16:09