package com.wbean;
import java.util.Locale;
import java.util.Map;
public class LocaleConverter extends ognl.DefaultTypeConverter {
@Override
public Object convertValue(Map context, Object value, Class toType) {
/**
* convertValue 重载了 ognl.DefaultTypeConverter中的该方法,
*toType表示希望得到的类型
* 转换器会自动检查jsp页面提交的Key=value 如果对应Action 中有getKey(),且方法的参数不是String会自动执行转换
*value 是传入的字符串数组
*/
if (toType == Locale. class ) { //当 希望得到一个 Locale 类型 的对象时
String locale = ((String[]) value)[ 0 ]; //获取传入的第一个字符串
return new Locale(locale.substring( 0 , 2 ), locale.substring( 3 ));
//取得传入的第一个字符串的前两个字符,和第三个3到最后的字符。假设传入zh_CN 则 返回 Locale(zh,CN) 即返回了一个Locale类型
/**
* java.util.Locale.Locale(String language, String country)
*
* 参数:
language lowercase two-letter ISO-639 code.
country uppercase two-letter ISO-3166 code.
抛出:
NullPointerException thrown if either argument is null.
*/
} else if (toType == String. class ) {
//反之,若希望获得一个String 则 将Locale转化为string类
Locale locale = (Locale) value;
return locale.toString();
}
return null ;
}
}
一个自定义转换器的模板。
最新推荐文章于 2024-03-31 15:45:30 发布