struts2类型转换

url中传递的参数都是字符串,struts2自动进行简单的类型转换,但是当转换成特殊的类型时,struts往往不能很好进行转换。

 

java.util.Date类型:

  可以在actiong的结果jsp中写<s:date name="birthday" format="yyyy-mm-dd"/>

  然后action中定义个Date类型的属性birthday,当访问...action?birthday?birthday=1993-01-01时jsp中的标签就会输出1993-01-01.

 

List类型:

  有时候我们可能需要接受一个参数,这个参数可能有多个值,比如表单中的多选框。这时后台可以用list来接收。

 

Ponit类型:

  这时候需要自定义一个类型转换器:

package cn.orlion.converter;

import java.awt.Point;

import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;

public class MyPointConverter extends DefaultTypeConverter{
    
    public Object converterValue(Object value , Class toType){
        
        if (Point.class == toType) {
            Point p = new Point();
            String[] str = (String[])value;
            String[] xy = str[0].split(",");
            
            p.x = Integer.parseInt(xy[0]);
            p.y = Integer.parseInt(xy[1]);
            return p;
        }
        
        return super.convertValue(value , toType);
    }
}

下一步就是要绑定到struts2中,如果值绑定给用到的action只需要在该action的包下新建一个文件:DemoAction-conversion.properties,内容为p=cn.orlion.converter.MyPointConverter。其中DemoAction为action的名字(根据实际取名)p为action中定义的Point类型的属性名(private Point p;)cn.orlion.converter.MyPointConverter为转换器类名

 

如果要注册为全局的则需要在src目录下创建一个文件:xwork-conversion.properties内容为:java.awt.Point=cn.orlion.converter.MyPointConverter。

posted @ 2015-12-09 22:32  orlion  阅读(144)  评论(0编辑  收藏  举报