Struts2类型转换
2010-09-12 21:06
323 查看
在HTML表单中的文本框里输入的不管是数值类型还是字符类型,最后都是以String类传到后台。如果后台bean的属性是int、double、Date等,struts2就会自动把字符类型转换成相应的类型。 一.局部类型转换 1.名称格式:action类名+-conversion.properties 2.位置:放在与之相对应action类的同包下 3.properties文件内容格式:转换属性=转换处理类 4.转换处理类:继承StrutsTypeConverter实现convertFromString方法和convertToString方法 5.具体处理流程: (1)输入:HTML表单提交—Action类处理—执行属性setter方法—如果需要类型转换—找到properties文件—按照properties设置找到对应的转换类,调用其中convertFromString转换方法-把返回值通过setter方法给action中属性赋值。 (2)输出:Action类处理—执行属性getter方法—如果需要类型转换—找到properties文件—按照properties设置找到对应的转换类,调用其中convertToString转换方法-把返回值通过getter方法输出到页面。 二.全局类型转换(页面中所有用到改bean的都会被类型转换) 1.名称格式:xwork-conversion.properties 2.位置:src根目录下 3.properties文件内容格式:bean类=转换处理类 三.主要代码 1、xwork-conversion.properties(全局) #com.test.bean.Point=com.test.converter.PointConverter 2.PointAction-conversion.properties(局部) #point=com.test.converter.PointConverter #point2=com.test.converter.PointConverter #point3=com.test.converter.PointConverter #point=com.test.converter.PointConverter3
Java转换代码:
PointConverter.Java
package com.test.converter; import java.util.Map; import ognl.DefaultTypeConverter; import com.test.bean.Point; /** * @author 作者:zlp E-mail: jxzlp123@163.com * @version 创建时间:2010-9-12 下午01:21:30 * 类说明 */ public class PointConverter extends DefaultTypeConverter { @Override public Object convertValue(Map context, Object value, Class toType) { 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; } return null; } }
PointConverter2.Java
package com.test.converter; import java.util.Map; import org.apache.struts2.util.StrutsTypeConverter; import com.test.bean.Point; /** * @author 作者:zlp E-mail: jxzlp123@163.com * @version 创建时间:2010-9-12 下午07:52:22 * 类说明 */ public class PointConverter2 extends StrutsTypeConverter { @Override public Object convertFromString(Map context, String[] values, Class toClass) { Point point=new Point(); String[] str=(String[])values; 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; } @Override public String convertToString(Map context, Object o) { Point point=(Point)o; int x=point.getX(); int y=point.getY(); String result="[ x = "+ x+", y ="+ y+"]"; return result; } }
PointConverter3.Java
package com.test.converter; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.apache.struts2.util.StrutsTypeConverter; import com.test.bean.Point; /** * @author 作者:zlp E-mail: jxzlp123@163.com * @version 创建时间:2010-9-12 下午08:39:35 * 类说明 */ public class PointConverter3 extends StrutsTypeConverter { @Override public Object convertFromString(Map context, String[] values, Class toClass) { List<Point> list=new ArrayList<Point>(); for (String value:values) { Point point=new Point(); String[] paramValues=value.split(","); int x=Integer.parseInt(paramValues[0]); int y=Integer.parseInt(paramValues[1]); point.setX(x); point.setY(y); list.add(point); } return list; } @SuppressWarnings("unchecked") @Override public String convertToString(Map context, Object o) { List<Point> list = (List<Point>) o; StringBuilder sb = new StringBuilder(); sb.append("[ "); int number = 0; for (Point point : list) { ++number; int x = point.getX(); int y = point.getY(); sb.append(number).append(" x=").append(x).append(",y=").append(y) .append(" "); } sb.append("]"); return sb.toString(); } }
在最后调用
<body> <h3><font color="red">用逗号将坐标分隔开</font></h3> <s:form action="pointConverter"> <s:textfield name="point.x" label="x"></s:textfield> <s:textfield name="point.y" label="y"></s:textfield> <s:textfield name="age" label="age"></s:textfield> <s:textfield name="username" label="username"></s:textfield> <s:textfield name="date" label="date"></s:textfield> <s:submit name="submit" label="submit"></s:submit> </s:form> </body>
时 在javabean中重写toString()方法
@Override public String toString() { return "x="+x+", y="+y; }
相关文章推荐
- struts2 用到类型转换时的验证问题
- Struts2学习笔记之类型转换 二
- Struts2:类型转换之批量封装Set集合类型的属性
- Struts2-->布尔值(boolean)类型转换注意问题
- Struts2的类型转换实例
- Struts2类型转换
- Struts2类型转换的说明及案例分析
- struts2自定义类型转换(2)基于StrutsTypeConverter
- 【Struts2】:基于OGNL的类型转换
- Struts2自定义类型转换,和处理类型转换错误
- Struts2 (动态调用、接收请求参数、类型转换、数据验证、拦截器)Day:2018/2/7
- Struts2(十一)---类型转换
- struts2中的类型转换
- 4.1.3: Struts2的类型转换---指定集合元素的类型
- Struts2学习笔记4:Struts2的类型转换【2】
- Struts2的类型转换及输入校验(自定义类型转换器)
- struts2类型转换失败后的处理
- 坠落凡间的struts2(3)---struts2的类型转换
- Struts2---->类型转换
- struts2初学笔记(一) 类型转换