SpringMVCはデータ検証がJSR303標準であり、Beanのプロパティで@NotNull、@Maxなどを入力することにより検証されています。 JSR303は多くの注釈インターフェイスを提供し、SpringMVCはこれらの検証にHibernateを使用しているため、冬眠用のバリデーターパッケージを追加する必要があります。
引用に依存しています
compile 'javax.validation:validation-api:2.0.0。ファイナル「コンパイル」org.hibernate:hibernate-validator:6.0.0.final'
フレームワークは、次のように検証を提供しています。
JSRが提供する注釈を確認してください。
@Null注釈付き要素はnullでなければなりません
@notnull注釈付き要素はnullであってはならず、nullであることはできません、 ""
@asserttrue注釈付き要素は真でなければなりません
@assertfalse注釈付き要素はfalseでなければなりません
@min(値)注釈付き要素は数でなければならず、その値は指定された最小値以上でなければなりません。
@max(値)注釈付き要素は数でなければならず、その値は指定された最大値以下でなければなりません。
@decimalmin(value)注釈付き要素は数でなければならず、その値は指定された最小値よりも大きくなければなりません
@decimalmax(値)注釈付き要素は数でなければならず、その値は指定された最大値よりも等しくなければなりません
@size(max =、min =)オブジェクトの長さ(配列、コレクション、マップ、文字列)が与えられた範囲内にあるかどうかを確認します
@digits(整数、分数)注釈付き要素は数でなければならず、その値は許容範囲内でなければなりません。
@past注釈付き要素は過去の日付でなければなりません
@future注釈付き要素は将来の日付でなければなりません
@pattern(regex =、flag =)注釈付き要素は、指定された正規表現に準拠する必要があります
Hibernate Balidatorが提供する注釈を確認してください。
@notblank(message =)は、nullではなく文字列でのみ使用でき、trim()を呼び出した後、長さは0より大きくなければなりません
@email注釈付き要素はメールアドレスである必要があります
@length(min =、max =)注釈付き文字列のサイズは、指定された範囲内でなければなりません。
@notemptyコメントされた文字列は空ではないに違いありません。
@range(min =、max =、message =)注釈付き要素は適切な範囲内でなければなりません
デモの例
検証する必要があるエンティティクラスを作成します。
パッケージcom.yiba.wifi.news.bean.model; import org.hibernate.validator.constraints.length; import javax.validation.constraints。 // user name @min(value = 1、message = "最小年齢は1歳です")@max(value = 120、message = "最大年齢は120")整数年齢。 // age @email(message = "emailboxフォーマットエラー")@notblank(message = "emailboxフォーマットエラー")string email; // email @Length(min = 6、max = 12、message = "パスワードの長さは6〜12桁でなければなりません")string pwd; // password // get、set .........}
メールを検証するとき、電子メールが「」、またはnullの場合、@emailの確認に合格するため、電子メールの確認には@emailと@notblankが協力する必要があります。
コントローラーインターフェイス設計、パラメーターが受け入れられている@validatedキーワードを追加
/ *** login interface* @return*/ @postmapping( "login")public string login(@validated @requestbodyユーザー){return "ok"; }アクセステスト:
データにアクセスするときは、次の形式です
{"name": "" "、" age ":0、" email ":" "、" pwd ":" "}応答は次のとおりです。
{"Timestamp":1524640724522、 "status":400、 "error": "bad request"、 "Exception": "org.springframework.web.bind.methodargumentnotvalidexception "NotBlank.java.lang.String", "NotBlank" ], "arguments": [ { "codes": [ "user.email", "email" ], "arguments": null, "defaultMessage": "email", "code": "email" } ], "defaultMessage": "email format error", "objectName": "user", "field": "email", 「拒否された数値」: ""、 "BindingFailure":false、 "code": "notblank"}、{"codes"}:["notblank.user.name"、 "notblank.name"、 "notblank.java.lang.string"、 "notblank"]、 "" "" "uturments"、 "" "us" "" urguments "、" "" us "" "usurest": "" "user.name": null、 "defaultmessage": "name"、 "code": "name"}]、 "defaultmessage": "ユーザー名はnullである必要はありません。 "Length.user.pwd", "Length.pwd", "Length.java.lang.String", "Length" ], "arguments": [ { "codes": [ "user.pwd", "pwd" ], "arguments": null, "defaultMessage": "pwd", "code": "pwd" }, 12, 6 ], "defaultMessage": "password length must be between 6および12ビット "、" objectName ":" user "、" field ":" pwd "、" rejectedValue ":" "、" Bindingfailure ":false、" code ":" length "}、{" codes ":[" min.user.age "、" min.age "、" min.java.lang.integer ":"] "user.age", "age" ], "arguments": null, "defaultMessage": "age", "code": "age" }, 1 ], "defaultMessage": "minimum age is 1 year old", "objectName": "user", "field": "age", "rejectedValue": 0, "bindingFailure": false, "code": "Min" } ], "message": "Validation failed for object = 'user'。ローカルリクエストが4つのフィールドを確認できなかったことがわかります。それで、私が例外情報を取得する方法はありますか?答えはイエスであり、コントローラーインターフェイスを変更する必要があります。
/** *ログインインターフェイス * * @return */@postmapping( "login")public string login(@validated @requestbodyユーザー、bindingResult bindingResult){if(bindingResult.haserrors()){//リストに失敗している<Objecterror> errorlist = bindingult.getAllers(); for(objecterror error:errorlist){system.out.println(error.getDefaultMessage()); //出力固有のエラーメッセージ}「パラメーター例外」を返します。 } "ok"を返します。 }もう一度リクエスト、リクエスト形式は次のとおりです
{"name": "" "、" age ":0、" email ":" "、" pwd ":" "}応答は次のとおりです
パラメーター例外
コンソールに印刷された情報は次のとおりです。
ユーザー名はnullにすることはできません、長さは0より大きくなければなりません
パスワードの長さは6〜12桁でなければなりません最小年齢は1歳の電子メールフォーマットエラーです
あなたは私たちが正常に検証情報を取得したことを見ることができます。
参照正しいアクセスをしましょう:
リクエストパラメーターは次のとおりです。
{"name": "zhaoyanjun"、 "age":1、 "email": "[email protected]"、 "pwd": "123456"}応答は次のとおりです。
わかりました
コンソールは何も出力しません。
要約します
上記は、編集者によって導入されたスプリングリクエストパラメーター検証関数のデモの例です。私はそれが誰にでも役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は、すべての人に時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!