10

こんにちは私の春のウェブアプリには、0文字以上または6文字以上20文字未満にしたいパスワード変数があります。注釈があることを知っています。

 @Size(min=6, max=20)

しかし、パスワードが0文字になる可能性を追加する方法がわかりません。誰かがこれを手伝ってくれますか?

4

4 に答える 4

10

StringTrimmerEditorコメントを指定すると、空の文字列をnullに変換するために使用できます。その後、@Sizeチェックはトリガーされません(nullは@Sizeで有効と見なされます)。

コントローラに次のメソッドを追加します。

@InitBinder
public void initBinder(WebDataBinder binder) {
    binder.registerCustomEditor(String.class, new StringTrimmerEditor(true));
}

StringTrimmerEditorスペースからの入力もトリミングすることに注意してください。このエディターの影響を受けるプロパティを1つだけにする場合は、を使用してregisterCustomEditor(Class<?> requiredType, String propertyPath, PropertyEditor propertyEditor)ください。

于 2012-07-19T07:44:15.050 に答える
9

空( "")または6〜20文字の長さの文字列が必要な場合は、@Pattern制約を使用して正規表現を指定できます。

@Pattern(regexp="(^$|.{6,20})")
于 2012-07-19T20:53:49.357 に答える
2

null許容フィールドが必要だと思いますが、それも可能性がmin = 6ありmax = 20ます。AFAIKは@Size、フィールドがnullでない場合にのみアクティブ化する必要があります。

空の文字列を送信する場合は""、検証されます。

于 2012-07-18T21:08:33.213 に答える
1

少なくともHibernateValidator5ではConstraintCompositionを使用できます。

于 2012-07-19T09:10:53.090 に答える