我在命令bean中有一个类型为String
的字段,必须按以下顺序进行验证。
[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。
答案 0 :(得分:0)
你的代码看起来很好,我甚至对HV 4.3.1进行了测试。它按预期工作。您正在评估默认组吗?你试过调试吗?