Struts 2のタイプ変換


Struts 2はStruts 1に対してかなり進歩しました。タイプ変換においては自動的にint、boot、double、Date(使う時は問題があります。)。Set、List、配列を変換します。
ここでは主にカスタムタイプの変換器について説明します。
1ローカル
Testアクションのために調製する。  ****-conversion.properties  形式の名前
TestAction-conversion.properties 
user.userName=com.isw2.convert.DefaultConvert
 comp.isw 2.convert.Default Convert.java
package 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.properties
xwork.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  デフォルトの変換ができます。問題がどこにあるか分かりません。
 
 
リスト   試していません
 
コードの中にあるものです。興味があるものは自分で見てください。