如何在JSR 303验证时在messages.properties上发送参数

时间:2014-02-14 10:34:31

标签: spring validation bean-validation messages

我有类似

的课程
class Sample{
 @Min(1) @Max(20) private int num_seats;
 ...
}

messages.properties喜欢

Min.sample.num_seats = the number must be bigger than 1

问题是

  1. 如何通过发送参数来动态设置消息,如“数字必须大于{MIN_VALUE}”?
  2. 我该如何分享信息?比如“Min。* = the number ....”是可能的吗?

2 个答案:

答案 0 :(得分:3)

谢谢Ralph,它帮助我找到了很多解决方案。 我想补充一点:

在这种情况下我会使用@Range(除非你想要最小和最大两个不同的消息)。

在Sample class

@Range(min = 1, max = 20)
private int num_seats;

在messages.properties文件中

Range.sample.num_seats=The number must be between {2} and {1}.

请注意,min是参数编号为{2},max编号为{1}!

答案 1 :(得分:1)

根据SPR-6730(Juergen Hoellers评论),它应该以这种方式运作:

@Min(value="1", message="the number must be higher than {1}")

我没有测试过,但这就是方法,我已经理解了问题评论。

第二个问题:您可以共享文本,将它们放在消息属性文件中。 如果使用与默认密钥相同的密钥,则覆盖默认消息。如果您不想覆盖默认消息,则需要另一个密钥,并且需要在消息属性的currly括号中写入密钥。

消息属性文件

javax.validation.constraints.Min.message=My mew default message
someOtherKey=Some Other Message

使用另一把钥匙:

@Min(value="1", message="{someOtherKey}")