package com.test.Type;import java.util.*;import com.opensymphony.xwork2.ActionSupport;public class PointAction2 extends ActionSupport {
private List<Point> list;
private String msg; public List<Point> getList() {
return list;
} public void setList(List<Point> list) {
this.list = list;
} public String getMsg() {
return msg;
} public void setMsg(String msg) {
this.msg = msg;
} @Override
public String execute() throws Exception {
for (Point point : list) {
System.out.println("x=" + point.getX() + ",y=" + point.getY());
}
return SUCCESS;
}}类型转换类package com.test.Type;import java.util.Map;
import java.util.*;import org.apache.struts2.util.StrutsTypeConverter;public class PointConverter2 extends StrutsTypeConverter { @Override
public Object convertFromString(Map arg0, String[] arg1, Class arg2) {
if(arg1.length>1)
{
List<Point> list=new ArrayList<Point>();
for(int i=0;i<arg1.length;i++)
{
Point point=new Point();
String[]str=arg1[i].split(",");
point.setX(str[0]);
point.setY(str[1]);
list.add(point);
}
return list;
}
else{
Point point=new Point();
String[]str=arg1[0].split(",");
point.setX(str[0]);
point.setY(str[1]);
return point;
}
} @Override
public String convertToString(Map arg0, Object arg1) {
if(arg1 instanceof Point)
{
Point point=(Point)arg1;
return "<"+point.getX()+","+point.getY()+">";
}
else if(arg1 instanceof List)
{
List<Point> list=(List<Point>)arg1;
String result="[";
for(Point point:list)
{
result+="<"+point.getX()+","+point.getY()+">";
}
return result+"]";
}
else{
return null;
}

}}当我用局部类型转换时,在文件PointAction2-conversion.properties中定义list=com.test.Type.PointConverter2 时转换一切正常
但是当我用全局类型转换时,在xwork-conversion.properties文件中定义com.test.Type.Point=com.test.Type.PointConverter2却出现下面这样的错误,不知道哪里搞错了,请教javax.servlet.ServletException: java.lang.ClassCastException: java.lang.String cannot be cast to com.test.Type.Point
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)