如何通过 Java Validator 消息传递参数?
How to pass parameters through Java Validator messages?
目前,我有类似的东西
@NotNull(message="{err.required}")
@Size(min=1, message="{err.required}")
private String firstName;
在我的messages.properties
中,我有
err.required={0} is required.
它可以工作,但打印出来的 firstName is required.
很难看。它在 {0}
.
中将变量名 firstName
作为参数传递
我如何传递类似“名字”的内容?所以会变成First name is required.
你可以这样做:
@NotNull(message="First name {err.required}")
@Size(min=1, message="First name {err.required}")
private String firstName;
@NotNull(message="Last name {err.required}")
@Size(min=1, message="Last name {err.required}")
private String lastName;
并在属性文件中
err.required= is required.
或者如果你想更清楚,你可以添加自己的注释和验证器:
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@Retention(RUNTIME)
@Documented
@Constraint(validatedBy = { NotEmptyValidator.class })
public @interface NotEmpty {
String message() default "{customMessage} is required.";
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
String customMessage() default "";
}
public class NotEmptyValidator implements ConstraintValidator<NotEmpty, String>
{
@Override
public void initialize(NotEmpty notEmpty)
{
}
@Override
public boolean isValid(String value, ConstraintValidatorContext context)
{
return value != null && !value.isEmpty();
}
}
然后是你的领域
@NotEmpty(message="{err.required}"
customMessage="First name")
private String firstName;
并且在属性中(虽然这不是强制性的,因为您可以将值默认为此):
err.required={customMessage} is required.
目前,我有类似的东西
@NotNull(message="{err.required}")
@Size(min=1, message="{err.required}")
private String firstName;
在我的messages.properties
中,我有
err.required={0} is required.
它可以工作,但打印出来的 firstName is required.
很难看。它在 {0}
.
firstName
作为参数传递
我如何传递类似“名字”的内容?所以会变成First name is required.
你可以这样做:
@NotNull(message="First name {err.required}")
@Size(min=1, message="First name {err.required}")
private String firstName;
@NotNull(message="Last name {err.required}")
@Size(min=1, message="Last name {err.required}")
private String lastName;
并在属性文件中
err.required= is required.
或者如果你想更清楚,你可以添加自己的注释和验证器:
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@Retention(RUNTIME)
@Documented
@Constraint(validatedBy = { NotEmptyValidator.class })
public @interface NotEmpty {
String message() default "{customMessage} is required.";
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
String customMessage() default "";
}
public class NotEmptyValidator implements ConstraintValidator<NotEmpty, String>
{
@Override
public void initialize(NotEmpty notEmpty)
{
}
@Override
public boolean isValid(String value, ConstraintValidatorContext context)
{
return value != null && !value.isEmpty();
}
}
然后是你的领域
@NotEmpty(message="{err.required}"
customMessage="First name")
private String firstName;
并且在属性中(虽然这不是强制性的,因为您可以将值默认为此):
err.required={customMessage} is required.