我String
在命令 bean 中有一个类型字段,必须按以下顺序进行验证。
- 必须包含一个值(非空)。
- 必须正好有 6 个字符。
- 必须确认这个正则表达式 -
[0-9, a-f, A-F]+
当其中任何一个被违反时,其余的不得执行。我尝试使用@GroupSequence
以下方法来实现这一点。
@GroupSequence({TempBean.ValidationGroupNotEmpty.class, TempBean.ValidationGroupColourHexLength.class, TempBean.ValidationGroup.class, TempBean.class})
public final class TempBean
{
@NotEmpty(groups={ValidationGroupNotEmpty.class}, message="Must enter a valid colour code.")
@Length(min=6, max=6, groups={ValidationGroupColourHexLength.class}, message="Requires exactly 6 characters.")
@Pattern(groups={ValidationGroup.class}, regexp="[0-9, a-f, A-F]+", message="Invalid colour code.")
private String stringValue;
public interface ValidationGroup{}
public interface ValidationGroupNotEmpty{}
public interface ValidationGroupColourHexLength{}
// Getters and setters.
}
当文本字段故意留空时,仅@NotEmpty
执行但当我输入一个违反@Length
和@Pattern
约束的值时,我会得到指定的消息,这意味着它们都被评估。这不应该发生。一次只能按照定义的顺序执行其中一项。如何才能做到这一点?
我正在使用 Spring 3.2.0 和 Hibernate Validator 4.3.1。