第七天:struts2中的拦截器

1、自定义类型转换器:

经典错误提示:(HTTP Status 404 - No result defined for action com.liu.action.PointAction and result input)

原因:(1)类型转换有问题;(2)数据校验有问题   (当所需要的数据转换不是在基本数据类型中,就要自己定义转换器)

2、案例(从一个文本框中输入 12,52 将得到的值赋值在实体对象上)

jsp页面:
<form action="point.action" method="post">
     请输入坐标<input type="text" name="myPoint" />(x,y)<br/>
     <input type="submit" value="提交"/>
</form>
实体类:
public class MyPoint {
      private int x;
     private int y;
     ...setter() getter()
}
action类:
public class PointAction extends ActionSupport {
    private MyPoint myPoint;
    public String execute() throws Exception {
    System.out.println("横坐标:"+myPoint.getX()+",纵坐标:"+myPoint.getY());
    return this.SUCCESS;
}
    public MyPoint getMyPoint() {
       return myPoint;
   }
   public void setMyPoint(MyPoint myPoint) {
      this.myPoint = myPoint;
   }
}

3、自定义拦截器转换:

方式一:

/**
 * 转换器的定义:
 * 1、实现 TypeConverter
 * 2、继承 DefaultTypeConverter
 * 3、实现 StrutsTypeConverter
 * @author Administrator
 *
 */
public class MyPointConverter extends DefaultTypeConverter {
        public Object convertValue(Map context, Object value, Class toType) {
             if(toType==MyPoint.class){
                    String[] params=(String[]) value;//得到客户端传过来的值
                    String[] param=params[0].split(",");//获取一个文本框里面的值,按需求进行处理(如按照    ,分开)
                    int x=Integer.parseInt(param[0]);
                    int y=Integer.parseInt(param[1]);
                    MyPoint myPoint=new MyPoint();
                    myPoint.setX(x);
                    myPoint.setY(y);
                    return myPoint;//返回转换好的结果
              }
            return "转换出错";
         }
}

方式二:

public class ColorConverter extends StrutsTypeConverter {
        public Object convertFromString(Map arg0, String[] arg1, Class arg2) {
               Color color=new Color();
               String[] param=arg1[0].split(",");
               int red=Integer.parseInt(param[0]);
               int green=Integer.parseInt(param[1]);
               int blue=Integer.parseInt(param[2]);
               color.setRed(red);
               color.setGreen(green);
               color.setBlue(blue);
               return color;
       }
       public String convertToString(Map arg0, Object arg1) {
               return null;
       }
}

4、配置转换器:

4.1(局部)针对那个action的实体类转换,放在action同包下

  myPoint(实体类命)=com.liu.converter.MyPointConverter(转换全类名)

4.2(全局)所有的都可以使用,放在src

com.liu.entity.MyPoint=com.liu.converter.MyPointConverter

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值