検索
ホームページJava&#&チュートリアルSpringMVC学習シリーズ(6) データ検証

シリーズ (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";     
    }
    
}


ここで @Valid @ModelAttribute("contentModel") ValidateModel validateModel の @Valid は Validate を意味しますデータを @ModelAttribute("contentModel") にバインドした後。

次の内容を含む ValidateModel.java を com.demo.web.models パッケージに追加します。

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;
    }
    
}


注釈検証メッセージが存在するファイル、つまり validatemessages.properties ファイルに次の内容を追加します。

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) データ検証


ここで、name.not.empty などは、それぞれ ValidateModel.java ファイルの message="xxx" の xxx 名に対応します。 以下の内容は、中国語を入力するときに自動的に変換される ASCII コードです。もちろん、プロンプトの内容として xxx を直接記述することもでき、別の validatemessages.properties ファイルを作成して追加する必要はありませんが、ハードコーディングされている場合は国際化する方法がないため、これは誤りです。

SpringMVC学習シリーズ(6) データ検証 つのビュー、validatetest.jsp と validatesuccess.jsp をビュー フォルダーに追加します。内容は次のとおりです。

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 ="*" は、モデルのすべての属性のエラー メッセージを表示します。

テストを実行します:

SpringMVC学習シリーズ(6) データ検証

直接送信をクリックします:

SpringMVC学習シリーズ(6) データ検証

設定が正しく行われていることを示すエラーメッセージが表示されます。

間違ったデータを送信してください:

SpringMVC学習シリーズ(6) データ検証

設定されたエラー メッセージが引き続き正しく表示されていることがわかります。

正しいデータを入力して送信してください:

SpringMVC学習シリーズ(6) データ検証

SpringMVC学習シリーズ(6) データ検証

検証が成功したことがわかります。

主な検証の注釈と手順は次のとおりです:

@Future

注釈

適用可能なデータタイプ

指示

@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 のサブタイプ。

アノテーションの要素値の整数と小数点以下の最大桁数を確認します

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

CharSequence,CollectionMap and Arrays

アノテーションの要素値がnullでも空でもないことを確認してください(文字列の長さが0でなく、コレクションのサイズが0ではない)

@Range(min=最小値、max=最大値) value)

CharSequence、Collection、Map、Arrays、BigDecimal、BigInteger、CharSequence、byte、short、int、long、およびプリミティブ型のそれぞれのラッパーCharSequence, Collection, Map and Arrays,BigDecimal, BigInteger, CharSequence, byte, short, int, long and the respective wrappers of the primitive types

验证注解的元素值在最小值和最大值之间

@NotBlank

CharSequence

验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的空格

@Length(min=下限, max=上限)

CharSequence

验证注解的元素值长度在min和max区间内

@Email

CharSequence

アノテーションの要素値が最小値と最大値の間です

🎜@NotBlank🎜🎜🎜🎜🎜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) に注目してください。


声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?Mar 17, 2025 pm 05:46 PM

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?Mar 17, 2025 pm 05:45 PM

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?Mar 17, 2025 pm 05:44 PM

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?Mar 17, 2025 pm 05:43 PM

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Mar 17, 2025 pm 05:35 PM

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境