シリーズ (SpringMVC学習シリーズ(6) データ検証) と (SpringMVC学習シリーズ(6) データ検証) では、データをバインドする方法を説明しました。データをバインドした後、取得したデータの正確性を確認するにはどうすればよいでしょうか。これがこの記事で説明する内容です —> データ検証。
ここでは検証に Hibernate-validator を使用します。Hibernate-validator は JSR-SpringMVC学習シリーズ(6) データ検証0SpringMVC学習シリーズ(6) データ検証 検証フレームワークを実装し、アノテーション スタイルの検証をサポートします。まず、http://www.php.cn/ にアクセスして、必要な jar パッケージをダウンロードする必要があります。ここでは、解凍後の SpringMVC学習シリーズ(6) データ検証.SpringMVC学習シリーズ(6) データ検証.SpringMVC学習シリーズ(6) データ検証.Final と、hibernate-validator-SpringMVC学習シリーズ(6) データ検証.SpringMVC学習シリーズ(6) データ検証.SpringMVC学習シリーズ(6) データ検証.Final を使用します。 jboss-logging-SpringMVC学習シリーズ(6) データ検証.SpringMVC学習シリーズ(6) データ検証 SpringMVC学習シリーズ(6) データ検証 つのパッケージ .0.jar および validation-api-SpringMVC学習シリーズ(6) データ検証.0.0.GA.jar がプロジェクトに追加されます。
前のプロジェクトで springservlet-config.xml ファイルを次のように構成します:
<!-- 默认的注解映射的支持 --> <annotation-driven></annotation-driven> <bean> <property></property> <!--不设置则默认为classpath下的 ValidationMessages.properties --> <property></property> </bean> <bean></bean> <bean> <property></property> <property></property> <property></property> </bean>
where property name="basename" value="classpath:validatemessages" /> の classpath:validatemessages は、アノテーション検証メッセージが配置されているファイルであり、リソース フォルダーの下に追加する必要があります。
次の内容を含む ValidateController.java を com.demo.web.controllers パッケージに追加します:
package com.demo.web.controllers;import java.security.NoSuchAlgorithmException;import javax.validation.Valid;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.validation.BindingResult;import org.springframework.web.bind.annotation.ModelAttribute;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import com.demo.web.models.ValidateModel; @Controller @RequestMapping(value = "/validate")public class ValidateController { @RequestMapping(value="/test", method = {RequestMethod.GET}) public String test(Model model){ if(!model.containsAttribute("contentModel")){ model.addAttribute("contentModel", new ValidateModel()); } return "validatetest"; } @RequestMapping(value="/test", method = {RequestMethod.POST}) public String test(Model model, @Valid @ModelAttribute("contentModel") ValidateModel validateModel, BindingResult result) throws NoSuchAlgorithmException{ //如果有验证错误 返回到form页面 if(result.hasErrors()) return test(model); return "validatesuccess"; } }
package com.demo.web.models;import org.hibernate.validator.constraints.Email;import org.hibernate.validator.constraints.NotEmpty;import org.hibernate.validator.constraints.Range;public class ValidateModel{ @NotEmpty(message="{name.not.empty}") private String name; @Range(min=0, max=SpringMVC学習シリーズ(6) データ検証SpringMVC学習シリーズ(6) データ検証0,message="{age.not.inrange}") private String age; @NotEmpty(message="{email.not.empty}") @Email(message="{email.not.correct}") private String email; public void setName(String name){ this.name=name; } public void setAge(String age){ this.age=age; } public void setEmail(String email){ this.email=email; } public String getName(){ return this.name; } public String getAge(){ return this.age; } public String getEmail(){ return this.email; } }
name.not.empty=\uSpringMVC学習シリーズ(6) データ検証SpringMVC学習シリーズ(6) データ検証0D\u79F0\uSpringMVC学習シリーズ(6) データ検証E0D\u80FD\uSpringMVC学習シリーズ(6) データ検証ESpringMVC学習シリーズ(6) データ検証A\u7A7A\uSpringMVC学習シリーズ(6) データ検証00SpringMVC学習シリーズ(6) データ検証 age.not.inrange=\uSpringMVC学習シリーズ(6) データ検証E7SpringMVC学習シリーズ(6) データ検証\u9F8SpringMVC学習シリーズ(6) データ検証\u8D8SpringMVC学習シリーズ(6) データ検証\uSpringMVC学習シリーズ(6) データ検証SpringMVC学習シリーズ(6) データ検証FA\u8SpringMVC学習シリーズ(6) データ検証0SpringMVC学習シリーズ(6) データ検証\uSpringMVC学習シリーズ(6) データ検証6FSpringMVC学習シリーズ(6) データ検証\uSpringMVC学習シリーズ(6) データ検証00SpringMVC学習シリーズ(6) データ検証 email.not.correct=\u90AE\u7BBSpringMVC学習シリーズ(6) データ検証\uSpringMVC学習シリーズ(6) データ検証7SpringMVC学習シリーズ(6) データ検証0\uSpringMVC学習シリーズ(6) データ検証7SpringMVC学習シリーズ(6) データ検証0\uSpringMVC学習シリーズ(6) データ検証E0D\u6B6SpringMVC学習シリーズ(6) データ検証\u786E\uSpringMVC学習シリーズ(6) データ検証00SpringMVC学習シリーズ(6) データ検証 email.not.empty=\u7SpringMVC学習シリーズ(6) データ検証SpringMVC学習シリーズ(6) データ検証SpringMVC学習シリーズ(6) データ検証\uSpringMVC学習シリーズ(6) データ検証BSpringMVC学習シリーズ(6) データ検証0\u90AE\uSpringMVC学習シリーズ(6) データ検証EF6\uSpringMVC学習シリーズ(6) データ検証E0D\u80FD\u60DF\u60SpringMVC学習シリーズ(6) データ検証0\uSpringMVC学習シリーズ(6) データ検証00SpringMVC学習シリーズ(6) データ検証
nbsp;html PUBLIC "-//WSpringMVC学習シリーズ(6) データ検証C//DTD HTML SpringMVC学習シリーズ(6) データ検証.0SpringMVC学習シリーズ(6) データ検証 Transitional//EN" "http://www.wSpringMVC学習シリーズ(6) データ検証.org/TR/htmlSpringMVC学習シリーズ(6) データ検証/loose.dtd"><meta><title>Insert title here</title> <form> <errors></errors><br><br> name:<input><br> <errors></errors><br> age:<input><br> <errors></errors><br> email:<input><br> <errors></errors><br> <input> </form>
nbsp;html PUBLIC "-//WSpringMVC学習シリーズ(6) データ検証C//DTD HTML SpringMVC学習シリーズ(6) データ検証.0SpringMVC学習シリーズ(6) データ検証 Transitional//EN" "http://www.wSpringMVC学習シリーズ(6) データ検証.org/TR/htmlSpringMVC学習シリーズ(6) データ検証/loose.dtd"><meta><title>Insert title here</title> 验证成功!
フォームが重要であることに注意してください。 validatetest.jsp ビュー内:form modelAttribute="contentModel"メソッド="post">のmodelAttribute="xxx"の後ろの名前xxxは、対応する @Valid @ModelAttribute("xxx") の xxx の名前が一致していると、モデル データとエラー情報がバインドされません。
form:errors path="name">form:errors>次の場合、モデルの対応する属性のエラーメッセージが表示されます。 path ="*" は、モデルのすべての属性のエラー メッセージを表示します。
テストを実行します:
直接送信をクリックします:
設定が正しく行われていることを示すエラーメッセージが表示されます。
間違ったデータを送信してください:
設定されたエラー メッセージが引き続き正しく表示されていることがわかります。
正しいデータを入力して送信してください:
検証が成功したことがわかります。
主な検証の注釈と手順は次のとおりです:注釈 |
適用可能なデータタイプ |
指示 |
@AssertFalse |
Boolean、boolean |
検証アノテーションの要素値はfalseです |
@AssertTrue |
Boolean、boolean |
の要素値は true です |
@DecimalMax(value=x) |
BigDecimal、BigInteger、String、byte、short、int、long、およびプリミティブ型のそれぞれのラッパー: Number および CharSequence のサブタイプ。 |
アノテーションの要素値が @DecimalMax |
@DecimalMin (value=x) |
BigDecimal、BigInteger、String、byte で指定された値以下であることを検証します。 、short、int、long、およびプリミティブ型のそれぞれのラッパー: Number および CharSequence のサブタイプ。 |
アノテーションの要素値が、指定された値以下であることを確認します。 @DecimalMin |
@Digits(integer=integer BigDecimal、BigInteger、String、byte、short、int、long、およびプリミティブ型のそれぞれのラッパー。さらに HV でサポートされています: Number および CharSequence のサブタイプ。 |
アノテーションの要素値の整数と小数点以下の最大桁数を確認します | @Future |
java.util.Date、java.util.Calendar; 、Joda Time 日付/時刻 API が クラスパス上:ReadablePartial および ReadableInstant. |
の実装、BigInteger、byte、short、int、long、およびプリミティブ型のそれぞれのラッパーが HV でさらにサポートされます:CharSequence のサブタイプ (文字シーケンスで表される数値)。 が評価されます)、Number. | の任意のサブタイプ、アノテーションの要素値が @Max |
@Min (value=x) で指定された値以下であることを確認します。 |
BigDecimal、BigInteger、byte、short、int、long、およびプリミティブ型のそれぞれのラッパーが HV でさらにサポートされます: CharSequence のサブタイプ (char シーケンスで表される数値は 評価済み)、Number. |
の任意のサブタイプ、アノテーションの要素値が @Min |
@NotNull |
任意のタイプで指定された値以上であることを検証します。 |
アノテーションを検証します 要素の値がnullではありません |
@Null |
任意の型 |
検証アノテーションの要素の値がnullです |
@ Past |
java.util.Date 、 java.util.Calendar; Joda Time 日付/時刻 API が有効な場合、HV によってさらにサポートされます。 クラスパス上: ReadablePartial および ReadableInstant の実装。 |
アノテーションの要素値 (日付型) が現在時刻よりも前であることを確認します |
@Pattern(regex=regex, flag=) |
String。HV でさらにサポートされています: CharSequence のサブタイプ。 |
注釈付きの要素の値が指定された正規表現と一致することを確認します |
@Size(min=最小値、max=最大値) |
String、Collection、Map、および配列。さらに HV でサポートされています: CharSequence のサブタイプ。 |
アノテーションの要素値が指定された min と max の範囲内にあることを確認します (文字数、コレクション サイズなど) |
@Valid |
非プリミティブ型 (参照型) |
たとえば、関連付けられたオブジェクトを確認します。アカウントオブジェクト内のオブジェクトで、検証順序オブジェクトを指定します |
@NotEmpty |
|
アノテーションの要素値がnullでも空でもないことを確認してください(文字列の長さが0でなく、コレクションのサイズが0ではない) |
@Range(min=最小値、max=最大値) value) |
|
验证注解的元素值在最小值和最大值之间 |
@NotBlank |
|
验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的空格 |
@Length(min=下限, max=上限) |
|
验证注解的元素值长度在min和max区间内 |
|
アノテーションの要素値が最小値と最大値の間です |
CharSequence
🎜🎜🎜🎜 アノテーションの要素値が次であることを確認してください空ではない (最初のスペースを削除した後の null ではない) 長さは 0)、@NotEmpty とは異なり、@NotBlank は文字列にのみ適用され、比較中に文字列からスペースを削除します🎜🎜🎜🎜🎜🎜🎜@Length(min=下限、max=上限)🎜🎜🎜🎜🎜 CharSequence
🎜🎜🎜🎜 アノテーションの要素値の長さが最小間隔と最大間隔の範囲内であることを確認してください🎜🎜🎜🎜🎜🎜🎜@Email🎜🎜 🎜🎜🎜CharSequence
🎜🎜🎜🎜 検証アノテーションの要素値は Email です。正規表現とフラグを使用してカスタムの電子メール形式を指定することもできます。
詳細については、公式ドキュメントを参照してください: http://docs.jboss.org/hibernate/validator/SpringMVC学習シリーズ(6) データ検証.SpringMVC学習シリーズ(6) データ検証/reference/en-US/html/validator-usingvalidator.html
注:最初の SpringMVC学習シリーズ(6) データ検証SpringMVC学習シリーズ(6) データ検証 個の記事のサンプル コードが .project ファイルなしでパッケージ化およびアップロードされていたため、ダウンロード後に Eclipse に直接インポートして実行できなかった理由がわかりません。これらのサンプル コードはバックアップされていませんでしたが、コード ファイルはまだ存在しているため、新しい動的 Web プロジェクトを作成して、対応する構成ファイル、コントローラー、ビューをインポートできます。
上記は SpringMVC 学習シリーズ (6) - データ検証 の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。