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
制約に違反する値を入力すると、両方のメッセージが指定されたとおりに取得され、両方が評価されます。これは起こるべきではありません。定義された順序で一度に実行する必要があるのは、そのうちの 1 つだけです。これはどのように行うことができますか?
Spring 3.2.0 と Hibernate Validator 4.3.1 を使用しています。