当前位置: 首页 > 知识库问答 >
问题:

spring@valid不工作

乜璞瑜
2023-03-14

我发送了一个带有“postman”的“application/json”类型的POST请求,将param“phone”设置为空字符串,正常情况下应该为注释“@notempty”打印错误,但是,它没有打印任何内容,也没有很好地工作。

  @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;
  }
}

共有1个答案

贲俊才
2023-03-14

您可能错过了依赖项。

<dependency>
   <groupId>javax.validation</groupId>
   <artifactId>validation-api</artifactId>
</dependency>
<dependency>
   <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
</dependency>

此外,请确保正确导入NotNull

import javax.validation.constraints.NotNull;
 类似资料:
  • @notblank、@min和@valid注释来自以下依赖项: 如何使@Validated控制器中的@Validated工作在Person请求体上?

  • 使用和的优点是什么? 有什么不同? 可以一起使用吗?

  • 我有一个实体: 和控制器方法: 批注不起作用。 看起来Spring需要一个默认的无参数构造函数,上面的代码看起来很丑(但是可以工作),如下所示: 有什么好的练习可以让它不那么罗嗦吗? 谢谢

  • 我的bean验证有问题。我将Quarkus与MongoDB一起使用,当我试图运行create REST API,在请求bean之前使用注释时,如果我想创建一个带有字段的文档(显然我在entity中使用了),但创建的文档没有字段,我希望出现异常。下面是我的代码: car.java: carResource.java: 我对注释也有同样问题,因为我可以创建一个包含多于3个字符的字段。 更新

  • 打电话pp.java 电话JAVA 基本电话。JAVA 智能手机。JAVA 测验JAVA 即使我给限定符为在类,我得到异常如下: 没有定义类型[com.geekslab.device.Phone]的限定bean:预期单个匹配bean,但发现2:BasicPhone,SmartPhone

  • 问题内容: 在REST控制器中同时使用 @ControllerAdvice 和 @Valid 批注时,遇到了麻烦。 我有一个声明如下的rest控制器: 还有一个ErrorHandler类: 问题是,如果我在 RestExample.add* 方法中添加 “引发新的RuntimeException” ,则该异常由 RestErrorHandler 类正确处理。 *** 但是,当向控制器卷曲无效请求时