在spring請求時,要對參數進行檢查,之前一直使用以下方式來獲取參數,在參數特別多的時候,代碼很不簡潔。java
String userId= request.getParameter("userId");
後來使用註解@RequestParam代碼整潔了好多git
@RequestParam(value = "userId",required=true) String userId
後來對於參數比較多的狀況,使用一個bean來接收請求參數spring
@RequestMapping(value="/saveUser") public String saveUser(User user) {}
對於比較複雜,有層級關係狀況,使用註解@RequestBody實現json
public String setUser(@RequestBody String userInfo) { //使用fastjson轉換爲實體類 }
無論使用以上的哪一種方式都要對參數進行校驗,若是一個個參數的檢查是否爲空,檢查邊界範圍,會致使代碼不少。使用@Valid註解來對參數進行校驗能讓代碼更整潔。app
本文以實體類接收請求參數爲例簡單講解,validation一共有hibernate-validator,javax.validation和spring-validator三種註解,本文主要是簡單講解一下javax.validation的使用ui
@RequestMapping(value="/saveUser") @ResponseBody public JSONObject saveUser(@Valid User user, BindingResult result){ JSONObject jsonObject = new JSONObject(); //判斷是否檢驗錯誤信息 if(result.hasErrors()){ //取出第一條錯誤信息返回 List<FieldError> list = 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; }
你們能夠關注個人公衆號:不知風在何處,相互溝通,共同進步。.net