詳細なspring注釈式パラメータチェック


一般的に参加するとvo対象になります。では、オブジェクトの属性に直接注釈を付けます。
実はspringはhibernateのvalidatorを使っています。
ステップ
1.spring.xmlの配置

<mvc:annotation-driven />
2.自分のvalidate類を配置する。

 <bean id="validateArgsAOP" class="com.my.validate.aop.ValidateArgsAOP"/>

  <aop:config>
  <aop:aspect id="argAOP" ref="validateArgsAOP">
   <aop:pointcut id="target" expression="execution(* com.wlqq.apigateway..*Controller.*(..))"/>
   <aop:around method="doAround" pointcut-ref="target"/>
  </aop:aspect>
  </aop:config>
3.controllerのbeanに@Validを加える

@RequestMapping(value=”/template”, method = RequestMethod.POST) 
@ResponseBody 
public JSONObject create(@RequestBody @Valid User json) { 
}
4.ベルンに注釈を加えて検証する。

@NotBlank
private String name;
5.グローバル異常キャプチャのカスタマイズ
私がカスタマイズしたvalidator類の検査はパラメータが足りないので、直接に異常を投げます。だから、カスタマイズしたグローバル異常を捕まえて、フロントエンドに戻ります。必要なパラメータが足りません。
https://www.jb51.net/article/110776.htm
注意:
前の4歩は一つ足りないです。前の3歩は足りなくなりました。自分で自分を配置するvalidatorがありません。長い間やってみたが、うまくいかなかった。
その他にネット上ですべて1つのvalidator種類を配置するので、それから積極的にcontrollerでvalidatorに行って、これはきっとspringを使って私達のaopに提供するほうがいいです。
例:
1.ユーザ名のフォーマットを確認する

@NotBlank(message = "       ") 
@Length(min=5, max=20, message="        5-20  ") 
@Pattern(regexp = "^[a-zA-Z_]\\w{4,19}$", message = "             ,           ") 
private String username; 
2.検証はintであり、かつ範囲はA-Bの間でなければならない。

@Range(min=0, max=4)
private int scale;//    
3.Listが空でないことを確認する

@NotEmpty
private List<UserInfo> userList; 
4.オブジェクト内にList<オブジェクト>を含むチェック

@Valid
@NotEmpty
private List<UserInfo> userList; 
これにより、リスト内のオブジェクトのチェックが可能になります。
ルール:
@AsertFalse
boolean,bolean
コメントの要素値を確認するのはfalseです。
@アスsertTrue
boolean,bolean
コメントの元素値がtrueであることを確認します。
@NotNull
任意のタイプ
コメントの要素値がnullではないことを確認します。
@Null
任意のタイプ
コメントの要素値がnullであることを確認します。
@Min(value=値)
BigDecimal,Big Integer,byte,shot,int,long,などの任意のNumberまたはCharSequence(格納されているのは数字)のサブタイプです。
コメントを検証する要素値は@Minで指定されたvalue値より大きいです。
@Max(value=値)
@Min要求と同じです
コメントの要素値が@Maxで指定されたvalue値以下であることを確認します。
@Decimal Min(value=値)
@Min要求と同じです
コメントを検証する要素値は@DecimalMinで指定されたvalue値より大きいです。
@DecimalMax(value=値)
@Min要求と同じです
コメントを検証する要素値は@DecimalMaxで指定されたvalue値以下です。
@Digits(integer=整数桁、fraction=小数位)
@Min要求と同じです
コメントの要素値の整数桁数と小数位の上限を検証します。
@Size(min=下限、max=上限)
文字列、Collection、Map、配列など
コメントの要素値を検証するのは、minとmax(含む)の指定区間内で、文字長、セットサイズなどです。
@Past
java.util.Date,java.util.Calendar;Joda Timeライブラリの日付タイプ
コメントの要素値(日付タイプ)を確認するのは現在の時刻より早いです。
@Future
@Past要求と同じです
コメントの要素値(日付タイプ)を確認するのは現在の時刻より遅いです。
@NotBlank
CharSequenceサブタイプ
コメントを検証する要素値は空ではない(nullではなく、トップスペースを除いた後の長さは0)、@NotEmptyとは異なり、@NotBlankは文字列のみに適用され、比較時に文字列の先頭スペースを削除します。
@Length(min=下限、max=上限)
CharSequenceサブタイプ
注解の元素値の長さを確認します。minとmaxの区間です。
@NotEmpty
CharSequenceサブタイプ、Collection、Map、配列
コメントを検証する要素値はnullではなく、空ではない(文字列長は0ではなく、セットサイズは0ではない)
@Range(min=最小値、max=最大値)
BigDecimal,Big Integer,CharSequence,byte,shot,int,longなどの原子タイプと包装タイプ
コメントを検証する要素値は最小値と最大値の間にあります。
@Email(regexp=正規表現、フラグのパターン)
CharSequenceサブタイプ(Stringなど)
コメントの要素値を確認するのはEmailです。また、regexpとflagsによってカスタマイズされたemailフォーマットを指定することもできます。
@Pattern(regexp=正規表現、flags=フラグのパターン)
String、任意のCharSequenceのサブタイプ
コメントの要素値が指定された正規表現と一致することを確認します。
@Valid
非原子型
再帰的検証に関連するオブジェクトを指定します。ユーザオブジェクトにアドレスオブジェクト属性がある場合、ユーザオブジェクトを検証する際に一緒にアドレスオブジェクトを検証したい場合は、アドレスオブジェクトに@Validコメントを付けてカスケード認証を行うことができます。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。