Struts2开发--类型转换(三)

2014-11-24 07:11:42 · 作者: · 浏览: 1
on.properties

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) {
Person p = (Person)o;
return p.getSalary()+","+p.getGender();
}
}

xwork-conversion.properties


orgorg.person.Person=org.converter.Converter02


四、错误处理机制

客户输入错误信息是很正常的事,因此需要对此种行为进行处理,Struts2提供了很好的错误处理机制,是由conversionError拦截器自动完成,我们只需要配置输出什么错误信息即可;
当发生类型转换错误时,conversionError拦截器拦截此错误,并封装成fieldError,将此错误信息放入ActionContext中,并返回input逻辑视图;当然在元素中必须配一个类似于/1.jsp的子元素,以应对类型转换错误;
而为了显示错误信息,则在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的专栏