比如我们只提供一个输入框,但是需要将一个对象的值都传入进去,比如我有一个Point类,类有x,y 而我在界面只提供一个输入框 输入x,y方式
而action层,接收的还是一个实体类
Point类
package com.asiainfo.struts.pojo;
public class Point {
private int i;
private int j;
public int getI() {
return i;
}
public void setI(int i) {
this.i = i;
}
public int getJ() {
return j;
}
public void setJ(int j) {
this.j = j;
}
}
action类:这里我接受一个对象,而不是一个字符串,所以这里我们就需要做类型转换
package com.asiainfo.struts.action;
import com.asiainfo.struts.pojo.Point;
public class ConvertAction {
private Point point;
public Point getPoint() {
return point;
}
public void setPoint(Point point) {
this.point = point;
}
public String execute() {
System.out.println(point.getI()+"..."+point.getJ());
return "success";
}
}
定义转换器:继承StrutsTypeConverter类
package com.asiainfo.struts.convert;
import java.util.Map;
import org.apache.struts2.util.StrutsTypeConverter;
import com.asiainfo.struts.pojo.Point;
public class PointConvert extends StrutsTypeConverter{
public Object convertFromString(Map context, String[] values, Class toClass) {
Point point =null;
String[] value = values[0].split(",");
if(value!=null&&value.length>0){
point=new Point();
point.setI(Integer.parseInt(value[0]));
point.setI(Integer.parseInt(value[1]));
}
return point;
}
public String convertToString(Map context, Object o) {
return null;
}
}
配置文件:文件名xwork-conversion.properties 这个格式是固定的
com.asiainfo.struts.pojo.Point=com.asiainfo.struts.convert.PointConvert
这里的意思,就是实体类point通过转换器PointConvert来转换