SpringMVCの型変換と検証方法の紹介(コード付き)

不言
リリース: 2018-09-28 15:54:29
転載
1664 人が閲覧しました

この記事では SpringMVC の型変換と検証メソッドを紹介します (コード付き)。必要な方は参考にしていただければ幸いです。

Spring mvc データ バインディング プロセス:

SpringMvc は、ServletRequest オブジェクトとターゲット メソッドの仮パラメータ インスタンスを WebDataBinderFactory インスタンスに渡して作成します。 DataBinder インスタンス オブジェクト。 DataBinder は、SpringMvc コンテキストに組み込まれた ConversionService コンポーネントを呼び出して型変換とデータの書式設定を実行し、サーブレットのリクエスト情報を仮パラメータ オブジェクトに埋めます。 Validator の主キーを呼び出して、リクエスト情報にバインドされた仮パラメータ オブジェクトの選択データの正当性を検証し、最終的にデータ バインディング結果の BindingData オブジェクトを生成します。 SpringMVC は、BindingResult 内の仮パラメータ オブジェクトと検証エラー オブジェクトを抽出し、それらを処理メソッドの対応するパラメータに代入します。

ソース コードから、WebDataBinderFactory を通じて DataBinder オブジェクトが作成されていることがわかります。

カスタム型コンバーター

特別な状況に遭遇した場合、独自の型コンバーターを定義する必要がある場合があります。次に、文字列を emp オブジェクトに変換するカスタム型コンバータについて説明します。ページがデータ バインディングまたは型変換を完了できない場合、BindingResult を使用して例外情報を取得できます。

Spring では 3 種類のコンバータ インターフェイスが定義されており、それを実装するコンバータ インターフェイスはカスタム コンバータとして ConversionServiceFactoryBean に登録できます。

Convertre: S タイプを T タイプに変換します。

ConverterFactory: 同じシリーズの複数の「同種の」コンバーターを一緒にカプセル化します。ある型を別の型およびサブクラス オブジェクト (文字列から数値、数値のサブクラスへなど) に変換する場合は、このコンバーターを使用できます。

##GenericConverter: 型変換は、ソース クラス オブジェクトとターゲット クラス オブジェクトが配置されているホスト クラスのコンテキスト情報に基づいて選択されます。

package com.spring.mvc.controller;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;
@Component
public class UserConverter implements Converter<String, User>{
    @Override
    public User convert(String source) {
        System.out.println(source);
        String users [] = source.split("-");
        User user = new User();
        user.setUno(Integer.valueOf(users[0]));
        user.setUsername(users[1]);
        user.setUserpass(users[2]);
        return user;
    }
}
ログイン後にコピー

ConversionService は、SpringMVC の型コンバーターのコア インターフェイスです。カスタム型コンバーターを追加するには、このインターフェイスを実装するか、ConversionServiceFactoryBean を使用して Spring の IOC コンテナーに最初の ConversionService を作成し、Bean で構成する必要があります。型コンバーターの実装クラスの場合、SpringMvc がメソッドの仮パラメーター バインディングを処理するときに、型コンバーターが自動的に呼び出されます。

<!--将非mapping配置下的请求交给默认的Servlet来处理 -->
    <mvc:default-servlet-handler />
    <bean id="conversionService"
        class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <set>
                <ref bean="userConverter" />
            </set>
        </property>
    </bean>
    <!-- 注册类型转换器 -->
    <mvc:annotation-driven conversion-service="conversionService" />
ログイン後にコピー

実際の開発では、次の設定を行う必要があります: tag

データのフォーマット

属性の入力/出力のフォーマット、それでも型変換のカテゴリに属します。 Spring は、書式設定モジュールで ConversionService インターフェイスを実装する FarmattingConversionService 実装クラスを定義します。この実装クラスは GenericConversionService を拡張するため、型変換機能と書式設定機能の両方を備えています。 FormattingConversionService には、前者の構築に使用される FormattingConversionServiceFactoryBean ファクトリ クラスがあります。これを登録したいのです。

<mvc:annotation-driven conversion-service="FormattingConversionServiceFactoryBean" />
ログイン後にコピー

JSR303

jsr303 は、Bean データの有効性を検証するために Java が提供する標準フレームワークで、JavaEE6.0 および JSR303 に既に組み込まれています。 Bean プロパティに @NotNull や @Max などの標準データをマークして検証ルールを指定し、マークされた検証インターフェイスを通じて Bean を検証します。

@NotEmpty
    @NotNull
    private String name;
    
    @NotNull
    @NotEmpty
    private String age;
    
    @NotNull
    @NotEmpty
    @Email
    private String email;
ログイン後にコピー

フロント デスクで SpringMVC によって提供される Form タグを使用し、Form: エラー パスを使用して属性をバインドします

@RequestMapping(value="/student",method=RequestMethod.POST)
    public String add(@Valid()Student student,BindingResult result){
        if (!result.hasErrors()) {//判断是否有格式转换错误或者其他校验没通过
            userService.addStudent(student);
            return "redirect:list";
        }else
            return "addPage";
    }
ログイン後にコピー

SpringMvc プロンプト メッセージの国際化

<!-- 注册国际化信息,必须有id,指定资源文件名称,资源文件在src目录下 -->
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basename" value="message"></property>
    </bean>
ログイン後にコピー

以上がSpringMVCの型変換と検証方法の紹介(コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:cnblogs.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート