Struts 2でのデータ型変換


Struts 2は、データのタイプ変換1、Struts 2に含まれるタイプ変換ブロッカー付きStruts 2の内部に多数の変換器を提供し、データ型変換の問題を解決する.以下の*booleanとBoolean*charとCharacter*intとInteger*longとLong*floatとFloat*doubleとDouble*Dateがあり、yyyy-MM-dd形式文字列*配列を受信できます.複数の同名パラメータを配列に変換できます.*集合はリストまたはMap集合にデータを保存できます.タイプ変換エラーが発生した場合、エラーメッセージのプロンプトに従って、inputタイプの結果ビューをジャンプします.*説明プログラムに異常が発生した場合、input結果ビューにジャンプします.ラベルでinput結果ビューを構成できます.ジャンプしたページでも、固定されたラベルでエラーの情報を表示できます.*Struts 2のラベルライブラリを先に導入し、ラベルでエラーを表示する必要があります.<%@taglib prefix="s"uri="/struts-tags"%>*は、Struts 2が提供するラベルであり、エラーメッセージを表示するために使用されます.タイプ変換されたブロッカーでエラーが発生した場合、エラー情報はStruts 2エラー領域に格納されます(Struts 2のエラー領域は2つの部分に分かれており、一部はフィールドエラー、一部はActioncエラー)*など、最後のブロッカー(workflow)に実行されると、workflowブロッカーはStruts 2のエラー領域にエラーがあるかどうかを探します.*エラーが発生した場合はinputビューにジャンプします.*エラーがない場合は、ターゲットアクションクラスの具体的なメソッドを実行します.二、カスタムタイプ変換器特殊なデータ型が変換できない場合、データ型の変換器をカスタマイズする必要がある.カスタムタイプ変換を開発する具体的な方法は3つある:1、Type Converterインタフェースを実現し、1つの方法Object convertValue(Mapcontext,Object target,Member member,String propertyName,Object value,Class toType)を実現する.この方法は複雑すぎるため,このインタフェースを直接実現するのではなく,以下に継承する方法を採用するのが一般的である.
2、DefaultType Converterクラスを継承し、一つの方法を書き換える
Object convertValue(Mapcontext,Object value,Class toType)>双方向変換が可能>contextタイプ変換環境のコンテキスト>value変換が必要なパラメータ>toType ターゲットタイプ
3、StrutsType Converterクラスを継承し、二つの方法を書き換える
*Object convertFromString(Map context,String[]values,Class toClass)>文字列から特定のタイプ>values配列に変換します.格納される値は、ユーザーが入力した値>toClass変換するデータのタイプです.Date.class*String convertToString(Map context,Object o)>具体的なタイプを文字列に変換>oで表す変換するデータ型変換のコードは、1990/10/10を例に日付変換器をカスタマイズして変換を完了し、次のコードは2つ目の方法であり、DefaultType Converterクラスを継承している.
  public Object convertValue(Map<String, Object> context, Object value,
            Class toType) {
            //   toType                
            DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
            if (toType == Date.class) {
                //        (value    )
                String[] params = (String[]) value;
                String strVal = params[0]; //         
                try {
                    return dateFormat.parse(strVal);
                } catch (ParseException e) {
                    e.printStackTrace();
                }
            } else {
                //   (value  Date)
                Date date = (Date) value;
                return dateFormat.format(date);
            }
            return null;
        }

三、タイプ変換器の登録タイプ変換器のみが作成されている場合、strus 2はいつそれを使用するか分からないので、登録する必要があります.1、ローカル登録:フォーム内のフィールドに対して有効です!*属性駆動の方法:setメソッドを使用してデータを受信>構成方法:Actionが存在するパッケージの下にファイルを作成します.ファイル名のフォーマットはActionクラス名-conversion.propertiesファイルです.このファイルでは、データを変換するフィールドと対応する変換器のフルパスを構成します.たとえば、birthday=cn.cxk.demo 3.MyDateConverter*モデルドライバの方法:ModelDrivenインタフェースを実装する方法>構成方法:エンティティクラスがあるパッケージの下にファイルを作成します.ファイル名のグリッドは、エンティティクラス名-conversion.propertiesファイルです.このファイルでは、データを変換するフィールドと対応する変換器のフルパスを構成します.たとえば、birthday=cn.cxk.demo 3.MyDateConverter 2、グローバル登録:プロジェクト全体のすべての日付タイプで有効になります.*srcのディレクトリの下にxwork-conversion.properties(名前は固定)を作成します.コンテンツフォーマットは、タイプ変換の元のタイプ名=タイプ変換のターゲットタイプ名>例:java.util.Date=cn.zlq.demo 3.MyDateConverter