Strutでのコンバータの使用
Struts1.xで変換できるタイプのデフォルトでは、次のことがサポートされています.
BigDecimal、BigInteger、Boolean、Byte、Character、Double、Float、Integer、Long、Short、java.sql.dateといういくつかのタイプ.
通常、フォームを介してActionFormにデータを渡すのは文字列Stringタイプであり、Strutはフォームをコミットしたデータに基づいて自動的にActionFormで定義されたデータ型に変換されます.
たとえば、ActionFormでNumber整数型のプロパティを定義し、フォームを介して数値を渡し、フォームを文字列に渡します.Strutsは自動的に対応するデータ型--整数型に変換し、ActionFormに値を割り当てます.
上記のタイプのStrutsを渡すと、自動的に完了します.
ActionFormでjavaを定義するとutil.Dateタイプのデータ行では、Strutsはこのタイプに変換できず、異常を放出します.
次のように変換器を定義する必要があります.
方法1:
1、実現org.apache.commons.beanutils.Converterインタフェース、そのconvert方法を実現して、この方法体の中で変換を実行して、この方法は1つのObjectタイプを返して、2つのパラメータを伝達して、1つはClassタイプtypeで、1つはObjectタイプ値valueで、Object値valueは私達が伝達して変換する必要があるパラメータで、コードは以下の通りです:
2、convertメソッドが書き終わったら、新しいサーブレット継承Httpサーブレットを作成し、彼の初期化メソッドinit()を複写して登録します.コードは以下の通りです.
3、それからwebを配置する.xmlプロファイル、コードは次のとおりです.
これにより、カスタムコンバータ全体の手順が完了します.
方法2:
1、同様にorgを実現する.apache.commons.beanutils.Converterインタフェースは,そのconvertメソッドを実現し,このメソッド体クラスで変換を行い,コードはメソッドと同じである.
2、登録方法、PlugInインタフェースを実現し、彼女の初期化方法init()に変換器を登録し、コードは方法と同じである.
3、struts-configを配置する.xmlファイル、コードは次のとおりです.
これでStrut 1が完成する.xカスタムコンバータ
メソッド1とメソッド2の実行の効果は同じで,登録実装の方法が異なるだけである.
Strutsフレームワークで開発する場合は、2つ目を使うことをお勧めします.個人的には良い感じがするはずです.結局、PlunInはStrutsのクラスなので、結合は緊密にしなければなりません.
BigDecimal、BigInteger、Boolean、Byte、Character、Double、Float、Integer、Long、Short、java.sql.dateといういくつかのタイプ.
通常、フォームを介してActionFormにデータを渡すのは文字列Stringタイプであり、Strutはフォームをコミットしたデータに基づいて自動的にActionFormで定義されたデータ型に変換されます.
たとえば、ActionFormでNumber整数型のプロパティを定義し、フォームを介して数値を渡し、フォームを文字列に渡します.Strutsは自動的に対応するデータ型--整数型に変換し、ActionFormに値を割り当てます.
上記のタイプのStrutsを渡すと、自動的に完了します.
ActionFormでjavaを定義するとutil.Dateタイプのデータ行では、Strutsはこのタイプに変換できず、異常を放出します.
次のように変換器を定義する必要があります.
方法1:
1、実現org.apache.commons.beanutils.Converterインタフェース、そのconvert方法を実現して、この方法体の中で変換を実行して、この方法は1つのObjectタイプを返して、2つのパラメータを伝達して、1つはClassタイプtypeで、1つはObjectタイプ値valueで、Object値valueは私達が伝達して変換する必要があるパラメータで、コードは以下の通りです:
//
if (value == null) {
return value;
}
// java.util.Date
if (value instanceof Date) {
return value;
}
// Date( java.util.Date , sql )
Date date = null;
// , Date
if (value instanceof String) {
// ,
SimpleDateFormat sFormat = new SimpleDateFormat("yyyy-MM-dd");
try {
date = sFormat.parse((String)value);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return date;
2、convertメソッドが書き終わったら、新しいサーブレット継承Httpサーブレットを作成し、彼の初期化メソッドinit()を複写して登録します.コードは以下の通りです.
ConvertUtils.register(new UtilDateConvert(), Date.class);
3、それからwebを配置する.xmlプロファイル、コードは次のとおりです.
<servlet>
<servlet-name>Servlet </servlet-name>
<servlet-class>Servlet </servlet-class>
<!-- Servlet tomcat ( )
<load-on-startup>3</load-on-startup>
</servlet>
これにより、カスタムコンバータ全体の手順が完了します.
方法2:
1、同様にorgを実現する.apache.commons.beanutils.Converterインタフェースは,そのconvertメソッドを実現し,このメソッド体クラスで変換を行い,コードはメソッドと同じである.
2、登録方法、PlugInインタフェースを実現し、彼女の初期化方法init()に変換器を登録し、コードは方法と同じである.
3、struts-configを配置する.xmlファイル、コードは次のとおりです.
<plug-in className=" PlugIn " />
これでStrut 1が完成する.xカスタムコンバータ
メソッド1とメソッド2の実行の効果は同じで,登録実装の方法が異なるだけである.
Strutsフレームワークで開発する場合は、2つ目を使うことをお勧めします.個人的には良い感じがするはずです.結局、PlunInはStrutsのクラスなので、結合は緊密にしなければなりません.