【问题标题】:Request body Object Not being Validated请求正文对象未验证
【发布时间】:2018-11-30 07:38:52
【问题描述】:

我有一个 REST API,它使用 POST 调用来创建记录,我希望在调用后传递某些对象,如果缺少任何东西,我必须立即拒绝它们,

 @RequestMapping(value="/saveEssentialDetails",produces={"application/json"},method=RequestMethod.POST)
ResponseEntity<?> saveEssentialDetails(@ApiParam(value="Body Parameters")@RequestBody @Validated EssentialDetails essentialDetails, BindingResult bindingResult)throws Exception;

基本模型类如下

    @Data
@NoArgsConstructor
@Document(collection="essentialDetails")
public class EssentialDetails {

    @NotNull
    Integer dpId;
    @Id
    @NotEmpty
    String tpId;
    @NotEmpty
    List<FamousFor> famousFor;
    @NotEmpty
    List<OpenHours> openHours;
    @NotEmpty
    Pictures uploadedImages;
    @NotEmpty
    List<FloorDescription> floorDescriptions;
    @NotEmpty
    List<Outlets> mallOutlets;

}

但是,在使用 Missing 属性进行 Post Call 时,我可以在 MongoDB 中创建一个条目,我不想保留它,因为它不是一个正确的请求,@Validation 对我不起作用,我正在使用Spring Boot 2.0.6 和 MongoDb 4.0.4, 任何帮助将不胜感激。提前谢谢

【问题讨论】:

  • 你在类路径上真的有 JSR303 实现(比如 hibernate-validator)吗? spring.io/guides/gs/validating-form-input
  • @AlanHay 我添加了hibernate 5.4.2的依赖
  • 我问的是 hibernate-validator 不是休眠。您需要将您的 maven 或 gradle 配置添加到您的问题中。
  • @AlanHay 非常了解 Hibernate 验证器的含义,并且我添加了 org.hibernatehibernate-validator5.4.2.Final作为maven依赖

标签: spring mongodb spring-boot spring-data


【解决方案1】:

@Validated 可用于使用自定义验证对象验证对象。示例用法:

@RequestMapping(value = "/")
public String request(@Validated(Account.ValidationStepOne.class) Account account)

不要使用@Validated,而是使用@Valid,它会检查您在实体中使用的验证注释。

【讨论】:

  • 感谢您的及时回复,我确实尝试了@Valid 注释,但似乎没有用,我在进行 post 调用时删除了 dpId 属性,它没有得到验证并在 db 中输入数据跨度>
猜你喜欢
  • 1970-01-01
  • 2020-07-13
  • 2016-01-26
  • 2020-10-18
  • 1970-01-01
  • 1970-01-01
  • 2020-06-30
  • 2021-06-28
  • 2018-12-05
相关资源
最近更新 更多