この記事では SpringMVC の型変換と検証メソッドを紹介します (コード付き)。必要な方は参考にしていただければ幸いです。
Spring mvc データ バインディング プロセス:
SpringMvc は、ServletRequest オブジェクトとターゲット メソッドの仮パラメータ インスタンスを WebDataBinderFactory インスタンスに渡して作成します。 DataBinder インスタンス オブジェクト。 DataBinder は、SpringMvc コンテキストに組み込まれた ConversionService コンポーネントを呼び出して型変換とデータの書式設定を実行し、サーブレットのリクエスト情報を仮パラメータ オブジェクトに埋めます。 Validator の主キーを呼び出して、リクエスト情報にバインドされた仮パラメータ オブジェクトの選択データの正当性を検証し、最終的にデータ バインディング結果の BindingData オブジェクトを生成します。 SpringMVC は、BindingResult 内の仮パラメータ オブジェクトと検証エラー オブジェクトを抽出し、それらを処理メソッドの対応するパラメータに代入します。
ソース コードから、WebDataBinderFactory を通じて DataBinder オブジェクトが作成されていることがわかります。
カスタム型コンバーター
特別な状況に遭遇した場合、独自の型コンバーターを定義する必要がある場合があります。次に、文字列を emp オブジェクトに変換するカスタム型コンバータについて説明します。ページがデータ バインディングまたは型変換を完了できない場合、BindingResult を使用して例外情報を取得できます。
Spring では 3 種類のコンバータ インターフェイスが定義されており、それを実装するコンバータ インターフェイスはカスタム コンバータとして ConversionServiceFactoryBean に登録できます。
Convertre7e8623d9b3993f21069c0fc8f352f382: 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" />実際の開発では、次の設定を行う必要があります: 463d7d566f84e66ad507872587b9c14c 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 サイトの他の関連記事を参照してください。