p=org.convert.Converter01
2.继承StrutsTypeConverter
StrutsTypeConverter是DefaultTypeConverter的子类,DefaultTypeConverter的类型转换器是在一个函数中进行双向转换,而继承StrutsTypeConverter的类型转换器则是将两个方向分别用两个函数实现:
@Override
public Object convertFromString(Map context, String[] values, Class toClass) {
}
@Override
public String convertToString(Map context, Object o) {
}
将DefaultTypeConverter中的Converter01换成如下代码就可以完成StrutsTypeConverter的类型转换器;
package org.converter;
import java.util.Map;
import org.apache.struts2.util.StrutsTypeConverter;
import org.person.Person;
public class Converter02 extends StrutsTypeConverter {
@Override
public Object convertFromString(Map context, String[] value, Class toClass) {
String params[] = (String[])value;
String[]values = params[0].split("\\,");
Person p = new Person();
p.setGender(values[1]);
p.setSalary(Double.parseDouble(values[0]));
return p;
}
@Override
public String convertToString(Map context, Object o) {
return p.getSalary()+","+p.getGender();
}
}
xwork-conversion.properties
orgorg.person.Person=org.converter.Converter02
四、错误处理机制
客户输入错误信息是很正常的事,因此需要对此种行为进行处理,Struts2提供了很好的错误处理机制,是由conversionError拦截器自动完成,我们只需要配置输出什么错误信息即可;
当发生类型转换错误时,conversionError拦截器拦截此错误,并封装成fieldError,将此错误信息放入ActionContext中,并返回input逻辑视图;当然在
而为了显示错误信息,则在jsp页面中使用
注意:类型转换的Action在struts.xml中配置所在包需要extends="struts-default",因此在此文件中包含conversionError拦截器;
这时我们需要配置显示的错误信息,错误信息配置方式有两种:
1.配置默认提示信息
在国际化资源文件中配置形如:
xwork.default.invalid.fieldvalue={0},错误;
{0}代表类型转换错误的属性名称;
2.配置Action特定属性错误信息
在Action范围的国际化资源文件中配置形如:
invalid.fieldvalue.attributeName= 内容
attributeName是Action中的属性名称;
我们在上面的程序中添加类型转换错误的消息:
在Conversion04Action_zh_CN.properties中添加:
invalid.fieldvalue.p=person类型转换错误;
意思是对p属性配置了特定的错误提示信息,当p属性类型转换错误后就会显示此信息;
摘自xiazdong的专栏