验证实体POJO对象

时间:2017-06-21 19:38:48

标签: maven spring-mvc

我使用带注释的样式Spring MVC。在我的配置类中,我声明了

@Bean("messageSource")
public MessageSource getMessageSource() {
    ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
    messageSource.setBasename("classpath:messages");
    messageSource.setDefaultEncoding("UTF-8");
    return messageSource;
}

有'src / main / resources'文件夹,其中包含messages.properties。 我现在想要执行的验证是:

@Entity
@Table(name = "contract")
public class Contracts {
        @NotNull
        @Column(name = "payment_amount")
        private Integer paymentAmount;
}

和属性文件中的文字:

NotNull.contracts.paymentAmount = Invalid.
NotEmpty.contracts.paymentAmount = Invalid.
NotBlank.contracts.paymentAmount = Invalid.
NotNull.contracts.paymentamount = Invalid.
NotEmpty.contracts.paymentamount = Invalid.
NotBlank.contracts.paymentamount = Invalid.

但它根本不起作用。最大的问题是我的其他应用程序在相同(或多或少)设置下工作正常。 因为它可能是名称空间问题,所以我不会添加pom.xml,但maven可能会导致问题,因为这是我现在唯一的嫌疑人。

2 个答案:

答案 0 :(得分:0)

如果您收到错误的错误消息: 你没有在@NotNull注释中指定一个键。 指定一个或使用javax.validation.constraints.NotNull.message作为属性文件中的键。

如果根本没有运行验证:你是否将@Valid放在方法的参数上?

如果还有别的,请说明哪些不起作用。

答案 1 :(得分:0)

好的,我已经有了它的工作。有点在对消息进行测试时看看它是否被Spring看到我设法得到那些: 在我的测试文件中:

String message = messageSource.getMessage("NotNull.contracts.startDate", null, Locale.getDefault());
        System.out.println(message);

我正确地收到了消息。但是,当我尝试运行我的Web应用程序时,我看到的唯一消息是硬编码到类注释@NotNull(message =“”)。 BTW测试工作我将messageSource更改为 ResourceBundleMessageSource