Thymeleaf:如何在JSR-303批注中使用自定义消息密钥

时间:2013-12-02 08:20:39

标签: java message thymeleaf

使用Thymeleaf

Person.java

public class Person {
    @NotEmpty(message="{Valid.Password}")
    private String password;
}

message.properties

Valid.Password = Password is Empty!!

的login.html

<span class="error" th:errors="person.password"></span>

th:errors无法检索“Valid.Password”消息 该区域显示为空。

如果消息密钥更改为message.properties的NotEmpty.person.password,则它正在工作。

如何使用自定义消息密钥?

1 个答案:

答案 0 :(得分:4)

在类上使用javax.validation约束并添加自定义消息需要您基本上覆盖默认消息。 例如:

public class Vehicle implements Serializable {

    private static final long serialVersionUID = 1L;

    @Size(min=17, max=17, message="VIN number must have 17 characters")
    private String vin;


    @NotEmpty
    @Pattern(regexp="[a-z]*", flags = Pattern.Flag.CASE_INSENSITIVE)
    private String make;

    @NotEmpty
    @Pattern(regexp="[a-z]*", flags = Pattern.Flag.CASE_INSENSITIVE)
    private String model;

要覆盖默认值,您可以在验证本身中插入自定义消息,例如VIN,或将它们添加到messages.properties文件中:

# Validation messages
notEmpty.message = The value may not be empty!
notNull.message = The value cannot be null!

通过这种方式,您将覆盖以下的默认值:

javax.validation.constraints.NotEmpty.message
javax.validation.constraints.NotNull.message

如果您需要针对不同字段的特定消息,则消息属性应包含以下格式:[constraintName.Class.field]。例如:

NotEmpty.Vehicle.model = Model cannot be empty!

如果你不包括上面的覆盖值,它将显示默认值,或者像notEmpty消息一般覆盖。

当然,还有其他方法可以显示验证消息,例如使用来自Validator实例的ConstraintViolation对象所需的信息。

希望这有帮助,