0

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 を使用しています。

4

1 に答える 1

0

コードは問題ないように見え、HV 4.3.1 に対してもテストしました。期待どおりに動作します。あなたはDefaultグループを評価していますよね?デバッグしようとしましたか?

于 2013-03-18T10:35:25.050 に答える