1.类型转换器
基于WEB工作的B/S结构开发与传统的C/S结构开发不同,数据是基于HTTP传输的,这决定数据传输参数中不可能有 丰富的数据类型,而后台数据处理中又需要丰富的数据类型,因些必须进行数据类型转换
实现TypeConverter接口
继承DefaultTypeConverter类
继承StrutsTypeConverter类
(1)创建实体类
public class PointBO {
private float x;
private float y;
public float getX() {
return x;
}
public void setX(float x) {
this.x = x;
}
public float getY() {
return y;
}
public void setY(float y) {
this.y = y;
}
}
(2)创建测试类
@ParentPackage("javastruts")
@Namespace("point")
public class PointAction{
@Actions({
@Action(value="/addPoint",results={
@Result(name="success",location="/point.jsp"),
@Result(name="input",location="/input.jsp"),
}
)
})
public String addPoint()
{
System.out.println("X:"+point.getX()+" Y:"+point.getY());
return "success";
}
private PointBO point;
public PointBO getPoint() {
return point;
}
public void setPoint(PointBO point) {
this.point = point;
}
}
(3)自定义类型转换器
public class PointConverter extends StrutsTypeConverter{
@Override
public Object convertFromString(Map arg0, String[] val, Class arg2) {
PointBO pointBO = new PointBO();
String []strPoint = val[0].split(",");
pointBO.setX(Float.parseFloat(strPoint[0]));
pointBO.setY(Float.parseFloat(strPoint[1]));
return pointBO;
}
@Override
public String convertToString(Map arg0, Object obj) {
PointBO pointBO = (PointBO)obj;
return "X:"+pointBO.getX() + "Y:"+ pointBO.getY();
}
}
(4)在PointAction的同一目录下创建PointAction-conversion.properties
代码为:point = net.study.conversion.PointConverter
(5)创建jsp(访问的页面)
<body>
<form action="point/addPoint" method="post">
点1的X坐标:<input type="text" name="point.x"><br />
点1的Y坐标:<input type="text" name="point.y"><br />
<input type="submit" value="提交"/>
</form>
<form action="point/addPoint" method="post">
点1的坐标:<input type="text" name="point">样式:(x,y)<br />
<!-- 点2的坐标:<input type="text" name="point">样式:(x,y)<br /> -->
<input type="submit" value="提交"/>
</form>
</body>
(输出的页面 struts标签<%@ taglib prefix="s" uri="/struts-tags"%>)
<body>
点1:<s:property value="point"/>
</body>