1

管理対象Beanorg.hibernate.validator.Patternでアノテーションを使用して、コンポーネントを検証しています。jsf<h:inputText>

@Pattern(regex="\\W+")
public String getText() {
  return text;
}

私の質問は、メソッドから正規表現を取得する方法があるか、ELがそれをハードコーディングする必要がないかということです。
例として

@Pattern(regex = getRexEx())

また

@Pattern(regex = "#{bean.regEx}")

私はグーグルで検索し、regExが定数でなければならないことを発見しました。ただし、これを実現する別の方法があります。

4

1 に答える 1

4

アノテーションの引数はコンパイル時定数である必要があるため、いいえ、@Patternの引数として実行時式を指定することはできません。EL式を引数として渡して、それを実行させることもできません。これは、パターンバリデーターが作成された方法ではないためです。

ただし、できることは、EL式の形式を取り、それに対してBeanプロパティを検証する独自のバリデータークラスを定義することです。しかし、そのためのコンテキスト管理で頑張ってください!簡単な作業ではありません。

于 2012-12-01T03:07:21.023 に答える