SpringBoot學習之驗證信息國際化


以登錄為例:

1.controller的登錄方法:

@RequestMapping("/SSOAuth/login")
@ResponseBody
public ResponseValue login(@Valid @RequestBody LoginParam param, BindingResult result) {
  //驗證數據合法性
  if (result.hasErrors()) {
    ResponseValue responseValue = ResponseValue.newInstance(HeadCode.BAD_REQUEST);
    responseValue.getHead().setMsg(result.getFieldError().getDefaultMessage());
    return responseValue;
  }

  String loginName = param.getLoginName();
  String pwd = param.getPassword();
  if (loginValidation.exist(loginName) == false) {
    ResponseValue value = ResponseValue.newInstance(HeadCode.NOT_FIND);
    value.getHead().setMsg("用戶信息不存在!");
    return value;
  }
  if (loginValidation.verify(loginName, pwd) == false) {
    ResponseValue value = ResponseValue.newInstance(HeadCode.BAD_REQUEST);
    value.getHead().setMsg("密碼不正確!");
    return value;
  }
  return result(loginName, new Date());
}

該方法的關鍵是@valid注解和BindingResult結合使用驗證傳入的信息是否合法,LoginParam這是驗證對象。

BindingResult是所有的錯誤信息都會保存在這個類中,我們可以使用result.hasErrors()  判斷是否有錯誤信息。

2.驗證對象:

public class LoginParam implements Serializable {

  private static final long serialVersionUID = 1L;

  @NotBlank(message="{NotBlank.name}")
  @Length(min=0, max=50, message="loginName長度超出范圍")
  private String loginName;

  @NotBlank(message="{NotBlank.password}")
  @Length(min=6, max=10, message="password長度超出范圍")
  private String password;

  public String getLoginName() {
    return loginName;
  }

  public void setLoginName(String loginName) {
  this.loginName = loginName;
  }

  public String getPassword() {
    return password;
  }

  public void setPassword(String password) {
    this.password = password;
  }
}

Validator國際化配置文件說明

1.國際化配置文件必須放在classpath的根目錄下,即src/java/resources的根目錄下。

2.國際化配置文件必須以ValidationMessages開頭,比如ValidationMessages.properties 或者 ValidationMessages_en.properties。

3.有些代碼是很難使用Validator的注解來實現,比如存在name,那么返回“該name已經存在了”。利用result.rejectValue("name", "misFormat", "該name已經存在了!");

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM