Struts-2-struts-type-conversion
Struts 2-タイプ変換
HTTPリクエストのすべては、プロトコルによって String として扱われます。 これには、数字、ブール値、整数、日付、小数などが含まれます。 ただし、Strutsクラスでは、任意のデータ型のプロパティを使用できます。
Strutsはどのようにプロパティを自動配線しますか?
たとえば、Actionクラスに整数属性がある場合、Strutsは何もせずに要求パラメーターを整数属性に自動的に変換します。 デフォルトでは、Strutsには多数のタイプコンバーターが付属しています
あなたが以下にリストされたコンバータのいずれかを使用している場合、あなたは心配することは何もありません-
- 整数、浮動小数点、倍精度、10進数
- 日付と日時
- 配列とコレクション
- 列挙型
- ブール値
- BigDecimal
独自のデータ型を使用している場合、表示する前にこれらの値を変換する方法をStrutsに認識させるために独自のコンバーターを追加する必要があります。 次のPOJOクラス Environment.java を検討してください。
これは name という属性を持つ非常に単純なクラスなので、このクラスについて特別なことは何もありません。 システム- SystemDetails.java に関する情報を含む別のクラスを作成しましょう。
この演習では、環境を「開発」に、オペレーティングシステムを「Windows XP SP3」にハードコーディングしました。
リアルタイムプロジェクトでは、この情報をシステム構成から取得します。
私たちは次のアクションクラスを持ってみましょう-
次に、単純なJSPファイル System.jsp を作成して、環境とオペレーティングシステムの情報を表示します。
SystemDetailsクラスには、文字列「 SUCCESS 」を返す単純なexecute()メソッドがあります。
- プロジェクト名を右クリックし、[エクスポート]> [WARファイル]をクリックして、WARファイルを作成します。
- 次に、このWARをTomcatのwebappsディレクトリにデプロイします。 最後に、Tomcatサーバーを起動して、URL http://localhost:8080/HelloWorldStruts2/system.action *にアクセスしてみます。 これにより、次の画面が生成されます-
上記の出力の何が問題になっていますか? Strutsは、文字列「Windows XP SP3」およびその他の組み込みデータ型を表示および変換する方法を知っていますが、 Environment 型のプロパティをどう処理するかを知りません。 それは単にクラスの* toString()*メソッドと呼ばれます
この問題を解決するために、Environmentクラスの単純な TypeConverter を作成して登録しましょう。
以下を使用して EnvironmentConverter.java というクラスを作成します。
アプリケーションで使用する前に、このコンバーターを登録しましょう。 コンバーターを登録するには2つの方法があります。
コンバーターが特定のアクションでのみ使用される場合、 '[action-class]' converstion.properties という名前を付ける必要があるプロパティファイルを作成する必要があります。
私たちの場合、次の登録エントリを持つ SystemDetails-converstion.properties というファイルを作成します-
上記の例では、「environment」は SystemDetails.java クラスのプロパティの名前であり、このプロパティとの間の変換に EnvironmentConverter を使用するようStrutsに指示しています。
ただし、これを行うのではなく、アプリケーション全体で使用できるように、このコンバーターをグローバルに登録します。 これを行うには、 WEBINF/classes フォルダーに次の行で xwork-conversion.properties というプロパティファイルを作成します
これはコンバーターをグローバルに登録するだけなので、 Struts は、Environmentタイプのオブジェクトに遭遇するたびに自動的に変換を実行できます。 今、あなたがプログラムを再コンパイルして再実行すると、次のようなより良い出力が得られます-
明らかに、結果はより良くなり、Strutsコンバーターは正常に動作しています。
これは、複数のコンバーターを作成し、要件に従って使用するためにそれらを登録する方法です。