當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
SpringMVC表单验证器的使用
生活随笔
收集整理的這篇文章主要介紹了
SpringMVC表单验证器的使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉載自?SpringMVC表單驗證器的使用
本章講解SpringMVC中怎么通過注解對表單參數進行驗證。
SpringBoot配置
使用springboot, spring-boot-starter-web會自動引入 hiberante-validator, validation-api依賴。
在 WebMvcConfigurerAdapter實現類里面添加驗證器及國際化指定資源文件。
@Override public Validator getValidator() {LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean();validator.setValidationMessageSource(messageSource());return validator; } @Bean public MessageSource messageSource() {ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();messageSource.setBasename("i18n/ValidationMessages");messageSource.setDefaultEncoding(StandardCharsets.US_ASCII.name());return messageSource; }驗證器使用
接收參數的表單類:
public class LoginForm { ? ?@NotNull(message = "{login.loginName.length}")@Size(min = 4, max = 20, message = "{login.loginName.length}")private String loginName; ? ?@NotNull(message = "{login.loginPassword.length}")@Size(min = 8, max = 20, message = "{login.loginPassword.length}")private String loginPassword; ? ?public String getLoginName() {return loginName;} ? ?public void setLoginName(String loginName) {this.loginName = loginName;} ? ?public String getLoginPassword() {return loginPassword;} ? ?public void setLoginPassword(String loginPassword) {this.loginPassword = loginPassword;} }在要驗證的字段上面加入驗證注解,更多參考 validation-apijar包下的 javax.validation.constraints包。
SpringMVC控制器:
@PostMapping(value = "/login") public String login(@Validated LoginForm form) { ... }使用 @Validated注解表示該參數需要驗證。
國際化
message里面 {}引用的是國際化的資源。
添加國際化資源文件:
ValidationMessages.propertiesValidationMessageszhCN.properties
需要指定編碼為 ASCII,不然會亂碼。
異常處理
異常全局處理時進行處理:
@ControllerAdvice public class ExceptionResolver { ? ?@ExceptionHandler(Throwable.class)@ResponseBodyObject handleEntityException(HttpServletRequest request, Throwable ex) {...if (ex instanceof BindException) {BindException c = (BindException) ex;List<ObjectError> errors = c.getBindingResult().getAllErrors();StringBuilder errorMsg = new StringBuilder();errors.forEach(x -> errorMsg.append(x.getDefaultMessage()).append(",")); ? ? ? ?}...} }或者在驗證的類后面加 BindingResult,錯誤信息都會放在該對象里面,而不會拋出異常。如:
@PostMapping(value = "/login") public String login(@Validated LoginForm form, BindingResult bindingResult) { ... }總結
以上是生活随笔為你收集整理的SpringMVC表单验证器的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 入殓师是什么职业 入殓师是个什么职业
- 下一篇: Spring Boot定制启动图案