2017-04-16 12 views
2

「postman」で「application/json」タイプのPOSTリクエストを送信し、param「phone」を空の文字列に設定します。通常、アノテーション「@NotEmpty」のエラーを出力するはずです。それは何も印刷せず、うまくいった。spring @validは動作しません

コントローラ:

@RequestMapping(value = "verify_smscode", method = RequestMethod.POST) 
    @ResponseBody 
    public ResponseDto verifySmsCode(HttpServletRequest request, 
     @Valid @RequestBody VerifySmsCodeParam params, Errors errors) { 
    if(errors.hasErrors()) { 
     System.out.println("error"); 
    } 

    boolean success = userService.verifySmsCode(params.getPhone(), params.getSmsCode()); 

    Map<String, Object> result = new HashMap<>(); 
    result.put("status", success); 
    return new ResponseDto(result); 
    } 

モデル:

@Data 
@NoArgsConstructor 
public class VerifySmsCodeParam { 

    @NotEmpty //import org.hibernate.validator.constraints.NotEmpty; 
    private String phone; 

    @NotEmpty 
    private String smsCode; 
} 

SpringMvcConfig:

@Configuration 
@ComponentScan(basePackages="com.shit.voiceshare") 
@EnableWebMvc 
public class SpringMvcConfig extends WebMvcConfigurerAdapter { 
    @Override 
    public Validator getValidator() { 
    LocalValidatorFactoryBean localValidatorFactoryBean = new LocalValidatorFactoryBean(); 
    localValidatorFactoryBean.setProviderClass(HibernateValidator.class); 
    return localValidatorFactoryBean; 
    } 
} 
+0

あなたは 'BindingResult'としようとしている。[本](https://spring.io/guides/gs/validating-form-input/)は、このアプローチの使用の良い例です。 –

+0

有効にする代わりに検証済み –

+0

まだ動作しません – rush

答えて

0

アム、私は春にまだ新しいです。しかし、それがあなたに合っているなら、私の状況に対する答えがここにあります。

@Validを動作させるには、javax validation-apiとhibernate-validatorという2つのパッケージをインクルードする必要がありますが、validation-apiのみが含まれています。

<dependency> 
    <groupId>javax.validation</groupId> 
    <artifactId>validation-api</artifactId> 
    <version>2.0.0.Final</version> 
</dependency> 

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-validator</artifactId> 
    <version>6.0.1.Final</version> 
</dependency> 
関連する問題