总结2:Struts2类型转换

   在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
3.转换类
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;

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;
    }

    @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();
    }
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值