`

Struts2学习笔记2-类型转换

阅读更多
第一种:使用DefaultTypeConverter转换
JSP页面
<s:textfield name="point" label="point"></s:textfield>
<s:textfield name="age" label="ages"></s:textfield>
<s:textfield name="username" label="usernames"></s:textfield>
<s:textfield name="date" label="birthdays"></s:textfield>

提交到相应的Action之后会读取和Action同目录的文件
ConverterAction-conversion.properties
point=com.langhua.converter.PointConverter

这样就会找到这个转换器
package com.langhua.converter;

import java.util.Map;

import com.langhua.bean.Point;

import ognl.DefaultTypeConverter;

public class PointConverter extends DefaultTypeConverter {

	@Override
	public Object convertValue(Map context, Object value, Class toType) {
		//从页面转到服务器 toType表示要转化的类型
		if(Point.class == toType){
			//有可能收集的是数组所以是个String的数组
			String[] values = (String[]) value;
			String[] args = values[0].split(",");
			Point point = new Point();
			point.setX(Integer.parseInt(args[0]));
			point.setY(Integer.parseInt(args[1]));
			return point;
		}
		//从服务器转到页面
		if(String.class == toType){
			Point p = (Point) value;
			return "["+p.getX()+","+p.getY()+"]";
		}
		return null;
	}
	
}

调用里面的方法
然后跳转到相应的页面再调用里面的方法
<action name="pointconverter" class="com.langhua.action.ConverterAction">
			<result name="success">/output.jsp</result>
	</action>

最后在页面输出
	point:<s:property value="point"/><br/>  
   	age:<s:property value="age"/><br/>
   	username:<s:property value="username"/><br/>
   	brithday:<s:property value="date"/><br/>

第二种,全局转换
和struts.xml同目录下面加入这样一个文件
xwork-conversion.properties
里面指定
com.langhua.bean.Point=com.langhua.converter.PointConverter1

这样只要遇到Point类,就会使用后面的转换器转换

第三种使用struts2提供的类StrutsTypeConverter extends DefaultTypeConverter来转换
如下
package com.langhua.converter;

import java.util.Map;

import org.apache.struts2.util.StrutsTypeConverter;

import com.langhua.bean.Point;

public class PointConverter1 extends StrutsTypeConverter {

	@Override
	public Object convertFromString(Map context, String[] values, Class toClass) {
		Point p = new Point();
		String[] parms = values[0].split(",");
		p.setX(Integer.parseInt(parms[0]));
		p.setY(Integer.parseInt(parms[1]));		
		return p;
	}

	@Override
	public String convertToString(Map context, Object o) {
		Point p = (Point)o;
		return p.toString();
	}

}


第四种可以在页面写成这样
<s:textfield name="point.x" label="x"></s:textfield>
		<s:textfield name="point.y" label="y"></s:textfield>

这样的话就不要什么配置文件了
分享到:
评论

相关推荐

    struts2学习笔记3数据类型转换

    struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换

    struts2学习笔记!

    struts2学习笔记!因为还没有全部学完,所以分部分分享!主要内容:struts.xml配置,web.xml配置 Action要点!全局类型转换,部分类型转换,类型转换文件 类型装换错误的处理问题局部使用,把中文汉字转换为编码 struts2对...

    Struts2 学习笔记

    01 Struts2-Action 5 一、 Struts作用: 5 二、 搭建Struts2的运行环境: 5 三、 Namespace 6 四、 标签 6 五、 Action 6 六、 路径问题的说明 8 七、 Action的动态调用方法 8 八、 Action通配符(wildcard)的配置 9 ...

    struts2学习笔记

    Struts2环境搭建 Struts2类型转换 Struts2输入校验 拦截器 文件的上传与下载 Struts2的国际化 深入探析 struts2与servlet API耦合方法

    struts2学习笔记三(第3讲.Struts2的类型转换)

    NULL 博文链接:https://zhaolianyang.iteye.com/blog/859890

    struts2笔记

    struts2学习笔记,详细说明了struts2框架的执行流程,类型转换,输入校验和国际化等等

    struts2学习笔记四(第4讲.Struts2的类型转换续)

    NULL 博文链接:https://zhaolianyang.iteye.com/blog/861529

    struts2学习笔记十(第10讲.Struts2的核心 拦截器)

    NULL 博文链接:https://zhaolianyang.iteye.com/blog/870600

    struts学习笔记(2)

    11.拦截器 interceptor(和之前学的filter很类似) ...可以帮我们丰富action的功能,比自动类型转换(页面传一个String类型的id,接收的时候id为我们自己定义long类),或者自动帮我们把值放入到action里面对应的属性中等等

    Struts学习笔记

    Struts学习笔记,struts2的配置,类型转换

    JavaEE5学习笔记11-JSF转换器验证器使用经验总结

    JavaEE5学习笔记11-JSF转换器验证器使用经验总结。

    struts2的学习笔记+测试源代码

    类型转换 博文链接:https://wuzhaohuixy-qq-com.iteye.com/blog/710102

    Java学习笔记-个人整理的

    {1.6}数据类型转换}{26}{section.1.6} {1.7}方法}{26}{section.1.7} {1.8}运算符}{27}{section.1.8} {1.8.1}自增运算}{28}{subsection.1.8.1} {1.8.1.1}Postincrement}{28}{subsubsection.1.8.1.1} {1.8.1.2}...

    FreeMark学习笔记

    为了访问数据模型中名为struts2的书的作者的名字,可以使用如下语法: book.author.name //全部使用点语法 book["author"].name book.author["name"] //混合使用点语法和方括号语法 book["author"]["name"] //全部使用...

    整理后java开发全套达内学习笔记(含练习)

    int 32bit, -2^31~2^31-1 (2147483648,20亿,10位有效数字) long 64bit, -2^63~2^63-1 (900亿亿,20位有效数字) float 32bit, 9位有效数字,含小数(四舍五入)(小数点算一位,正负号不算) double 64bit, 18位...

    Struts2.1讲义

    Struts2.X的学习讲义 适合入门者进一步的提高对Struts的认识。

    精通Struts(Word版)

    精通Struts,非扫描版,学习总结笔记,并有颜色区分,通过Word版本手写后转换而得.绝对是网上最清晰版本.

    收集的常见的专业问题解决办法.rar

    2009-02-24 08:42 165165 37065 常见的专业问题解决办法\Java核心技术学习笔记--异常和调试_Believe ┭┮ YourSelf.mht 2009-03-20 16:36 142683 39110 常见的专业问题解决办法\JR - 专题论坛问题 - eclipse??如何...

Global site tag (gtag.js) - Google Analytics