我使用带注释的样式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可能会导致问题,因为这是我现在唯一的嫌疑人。
答案 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