局部类型转换——Point
这里用一个例子介绍局部类型转换:
1.先在MyEclipse里面新建一个WebApp文件,我这里取名为:struts_converter
2.导入struts2的jar包
3.配置web.xml过滤器Filter
4.新建一个input.jsp文件
5.新建一个PointAction类
?
5.com.zchen.struts.action包下面建一个"PointAction-conversion.properties"也就是和PointAction类在同一个目录下。
???在文件里面写: point=com.zchen.struts.converter.PointConverter
6.配置struts.xml文件
<body> point:<s:property value="point"/><br> age:<s:property value="age"/><br> username:<s:property value="username"/><br> birthday:<s:property value="birthday"/><br> </body>?
这里简要概述一下运行流程:
??????1.tomcat在运行过程中先根据input.jsp页面的action判断确认运行的是struts,找到web.xml—Filter—struts.xml
??????2.在struts.xml中找出要跳转到的类:PointAction
????? 3.根据set方法自动将jsp页面的表单属性name值赋值给对应的setter方法(所以命名要规范)
????? 4.发现有对象的时候Point,找出有没有对应的Converter即根据properties配置文件找到PointConverter类。
????? 5.DefaultTypeConverter判断目标类型是哪一种,由于jsp页面所填的都是String类型所以在这里调用的是if?????? (Point.class?== toType)方法,将字符串转换成Point对象并return point对象。
??????6.再次就已经将jsp页面的属性全部给队员的属性赋值。
??????7.调用execute()方法返回SUCCESS
????? 8.struts.xml根据返回类型跳转到:output.jsp页面
????? 9.输出显示(在栈中查找<s:dubug>模式可以看到)
??????10.当遇到对象类型的时候,重复第4步调用if(String.class == toType){}方法
????? 11.将对象类型转换成String
说明:struts内置的转换器会将String转换成int date...类型所以不必写转换器。