Struts 2のタイプ変換
Struts 2はStruts 1に対してかなり進歩しました。タイプ変換においては自動的にint、boot、double、Date(使う時は問題があります。)。Set、List、配列を変換します。
ここでは主にカスタムタイプの変換器について説明します。
1ローカル
Testアクションのために調製する。 ****-conversion.properties 形式の名前
TestAction-conversion.properties
2グローバル
xwork-conversion.properties
comp.isw 2.convert.Struts 2.onvert.java Struts Type Coverter(抽象類)クラスを継承しました。
TestAction.properties
導入する struts 2-dojo-plugin-2.18.jar
導入する <%@ taglib prefix=「sx」uri=「/struts-dojo-tags」%
に追加
<sx:datetimepicker name=「user.user Birthday」 displayFormat=「yyy-M-dd」lagge=「en_」プラス label=「user.userBirthday」value=「%{user.userBirthday]」/>
使っていますが、使う時だけあります。 sx:datetimepicker デフォルトの変換ができます。問題がどこにあるか分かりません。
リスト 試していません
コードの中にあるものです。興味があるものは自分で見てください。
ここでは主にカスタムタイプの変換器について説明します。
1ローカル
Testアクションのために調製する。 ****-conversion.properties 形式の名前
TestAction-conversion.properties
user.userName=com.isw2.convert.DefaultConvert
comp.isw 2.convert.Default Convert.javapackage com.isw2.convert;
import java.util.Map;
import ognl.DefaultTypeConverter;
public class DefaultConvert extends DefaultTypeConverter {
@Override
public Object convertValue(Map context, Object value, Class toType) {
System.out.println(" DateConvert.convertValue ---------------");
if (value instanceof String[]) {// Action
String[] strArr = (String[]) value;
return strArr[0] + "." + strArr[1];
}
return value;
}
}
ここではDefault Type Coverterを継承して、convertValue方法を書き換えました。2グローバル
xwork-conversion.properties
java.util.Date=com.isw2.convert.Struts2Convert
すべてのDateオブジェクトを変換します。comp.isw 2.convert.Struts 2.onvert.java Struts Type Coverter(抽象類)クラスを継承しました。
package com.isw2.convert;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Map;
import org.apache.struts2.util.StrutsTypeConverter;
public class Struts2Convert extends StrutsTypeConverter {
/**
* String[] , Action
*/
@Override
public Object convertFromString(Map arg0, String[] value, Class arg2) {
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
try {
if (null != value[0] && value[0].trim().length() > 0) {
return format.parse(value[0]);
} else {
return null;
}
} catch (ParseException e) {
e.printStackTrace();
return null;
}
}
/**
* Action String[]
*/
@Override
public String convertToString(Map arg0, Object value) {
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return format.format(value);
}
}
3変換エラーメッセージTestAction.properties
invalid.fieldvalue.user.userAge=\u5E74\u9F84\u6709\u8BEF.
message.propertiesxwork.default.invalid.fieldvalue={0}\u7C7B\u578B\u8F6C\u6362\u51FA\u9519.
4 sx:datetimepicker の使用導入する struts 2-dojo-plugin-2.18.jar
導入する <%@ taglib prefix=「sx」uri=「/struts-dojo-tags」%
に追加
<sx:datetimepicker name=「user.user Birthday」 displayFormat=「yyy-M-dd」lagge=「en_」プラス label=「user.userBirthday」value=「%{user.userBirthday]」/>
使っていますが、使う時だけあります。 sx:datetimepicker デフォルトの変換ができます。問題がどこにあるか分かりません。
リスト 試していません
コードの中にあるものです。興味があるものは自分で見てください。