在Spring MVC应用程序中,我正在使用JSR-303在控制器中使用@Validated
对象。在我的Spring应用程序上下文中,我定义了一个自定义MessageSource,以从resources / messages.properties文件读取消息。
我能够读取和覆盖javax.validation默认消息(例如NotNull),但是如果尝试使用消息插值来读取参数(例如:{{1}中的min或max),则会收到错误消息
请注意,如果我直接在模型中设置一条消息,它将正确显示“插值”消息(默认消息也可以正常工作)。
模型类:
@Size(max=...)
messages.properties:
public class Customer {
@JsonProperty("name")
@NotNull
@Size(max = 50) // if I add message = "This field must be less than {max} characters long" it works!
private String name;
// Other fields here + getters and setters
}
答案 0 :(得分:0)
通过使用位置参数而不是命名参数解决了这一问题(不确定为什么它们不起作用)。
Size=This field must be less than {1} characters long
答案 1 :(得分:0)
如果您想对消息进行更多控制,例如。针对不同类别的不同消息,您可以尝试使用这种方法
@NotBlank(message = "{product.name.blank}")
@Size(min = 2, message = "{product.name.minsize}")
@ApiModelProperty(value = "Product Name", required = true, example = "Jabuke", position = 0)
private String name;
您将消息存储在ValidationMessages.properties中,而不是在application.properties中。它会自动加载到上下文中。
product.name.blank=Product name can not be blank
product.name.minsize=Product name must be 2 characters or more