Struts类型转换,如point
3.1定义一个转换类,extends DefaultTypeConverter
package org.lei.converter;
import java.util.Map;
import javax.sql.PooledConnection;
import org.lei.model.Point;
import ognl.DefaultTypeConverter;
public class PointConverter extends DefaultTypeConverter {
@Override
public ObjectconvertValue(Map context, Object value, Class toType) {
// TODO Auto-generatedmethod stub
//客户端到服务器
if(Point.class == toType)
{
Point point = new Point();
String []str = (String[])value ;
String[]paramValues = str[0].split(",");
int x = Integer.parseInt(paramValues[0]);
int y = Integer.parseInt(paramValues[1]);
point.setX(x);
point.setY(y);
return point;
}
//服务器到客户端
if(String.class == toType){
Point point = (Point)value;
int x = point.getX();
int y = point.getY();
String result = "[x="+x+",y="+y+"]";
return result;
}
//其他情况
returnnull;
}
}
3.2建立**-conversion.properties文件并配置
局部类型转换
在相应action的同一个包名下建立一个PointAction-conversion.properties文件,注意后缀名一般都是-conversion.properties,并在其中配置相应的要转换的类型
point =org.lei.converter.PointConverter
多个point时可以
point 2=org.lei.converter.PointConverter
point3 =org.lei.converter.PointConverter
3.3用struts标签呈现,自动调用action里面的get方法
点坐标:<s:propertyvalue="point"/><br>
日期:<s:propertyvalue="date"/>
3.4全局类型转换的配置
(能够去匹配多个action)
在src目录下建立一个xwork-conversion.properties文件
Org.lei.model.Point= org.lei.converter.PointConverter
文件名字必须固定
3.5 list类型的数据转换
3.5.1 extendsStrutsTypeConverter继承该类
package org.lei.converter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
importorg.apache.struts2.util.StrutsTypeConverter;
import org.lei.model.Point;
public class PointCoverter2 extendsStrutsTypeConverter{
@Override
publicObject convertFromString(Map context, String[] values, Class arg2) {
//TODO Auto-generated method stub
List<Point>list= new ArrayList<Point>();
for(Stringvalue:values){
Pointpoint = new Point();
String[]paramValues = value.split(",");
intx = Integer.parseInt(paramValues[0]);
inty = Integer.parseInt(paramValues[1]);
point.setX(x);
point.setY(y);
list.add(point);
}
returnlist;
}
@Override
publicString convertToString(Map context, Object o) {
//TODO Auto-generated method stub
List<Point>list = (List<Point>) o ;
//字符串拼接
StringBuildersb = new StringBuilder();
sb.append("[");
intnumber= 0;
for(Pointpoint :list){
++number;
intx = point.getX();
inty = point.getY();
sb.append(number).append("x=").append(x).append(",y=").append(y).append(" ");
}
sb.append("]");
returnsb.toString();
}
}
保证form中的标签的name都与所定义的list的变量名相同
如 name=”point” List<Point> point = new List<Point>();
在PointAction-conversion.properties进行配置。
3.6给action中的对象自动匹配,不用配置,通过反射功能
<s:textfieldname="point.x"label="坐标x"></s:textfield>
<s:textfieldname="point.y"label="坐标y"></s:textfield>
Point类必须有不带参数的构造方法才行
struts 学习笔记(二)类型转化
最新推荐文章于 2024-04-05 21:42:11 发布