Spring Boot:找到ValidationMessages但找不到ContributorValidationMessages?

时间:2018-01-14 23:57:22

标签: json hibernate rest spring-boot bean-validation

我正在使用Spring Boot构建Web API。其中一个结束点采用JSON发布请求。我想在某些字段上设置验证消息。所以我在/ src / main / resources下添加了NSOutlineViewValidationMessages.properties。以下行添加到该文件中:

application.properties

在我的JSON实体类中,我将字段“doorId”注释为:

doorid.notnull=Door ID is required
doorid.notblank=Door ID is empty

当我使用doorId作为空字符串测试API时,它只返回代码406而没有任何消息。在服务器日志中,它说:

    @NotNull(message = "{doorid.notnull}")
    @NotBlank (message = "{doorid.notblank}")
    private String doorId;

究竟是什么ValidationMessages found. ContributorValidationMessages not found. ?除ContributorValidationMessages之外,为什么还需要它?

修改

在同一条路径中添加ValidationMessages并使用与ContributorValidationMessages.properties相同的行后,它似乎找到了所有内容。

ValidationMessages.properties

但是,当我使用空ValidationMessages found. ContributorValidationMessages found. org.hibernate.validator.ValidationMessages found. 尝试相同的请求时,它只返回406.验证消息不会显示在任何地方。

1 个答案:

答案 0 :(得分:0)

ContributorValidationMessages是一个属性文件,用于为自定义约束放置默认消息。

根据相关的blog post

  

Hibernate查询bundle ContributorValidationMessages   验证器,如果标准ValidationMessages包不包含   给定消息密钥,允许库作者提供默认值   作为其JAR一部分的约束消息。

根据相关的document

  

这种机制在创建大型多模块时也很有用   应用程序:而不是将所有约束消息放入一个   单个捆绑包,每个模块包含一个资源包   只有该模块的那些消息。