struts页面对象向action中传递

   在Struts2的提供实例中,将查询出来的数据对象封装在list中,并通过iterator遍历显示在页面中,选中其中的一条数据,并希望能够单独显示在一个页面时,官方提供的方式是传递ID过去,并通过ID查询数据后显示在页面上。

   能否将iterator遍历后的对象作为参数,直接传到的新的action中,并显示在跳转后的页面中,以此来减少对数据库的查询操作。

 

     在struts中,页面向后台传递对象时,系统将报错,错误原因是将对象从页面传递到action时,其类型被转换为了String类型,因此不能将其赋值给对象数据。需要进行的处理就是对String类型做处理将其转换为对象类型。

 

    第一步。在对象pojo中重写toString方法。因为在页面传递对象到action过程中,转换为String类型调用的是对象的toString方法,重写toString方法可以保存对象中的数据。

 public Class  User{

 

private String id;

private String name;

private String password;

 

......./get & set 方法/.........

 

@Override

public String toString(){

return this.getId()+","+this.getName+"," + .... ;   //在每一字段中使用“,”分隔,是为了方便转换时对字符的判断,也可以采用其他数据

}

}

   第二步。编写类型转换类。具体的编写可参考官方站点http://struts.apache.org/2.1.8.1/docs/type-conversion.html。

 public Class  UserConvert extends StrutsTypeConverter{

 将字符串转换为对象

  @Override

      public Object convertFromString(Map arg0, String[] arg1, Class arg2) {
        User u=null ;
        if(arg2 == User.class){
            u = new User();
            String[] sts = arg1[0].split(",");//根据","分隔字符串
            u.setId(sts[0]);
            u.setName(sts[1]);
            u.setPassword(sts[2]);
          }
        return u;
      }

  将对象转换为字符串

    @Override
    public String convertToString(Map arg0, Object arg1) {
       
        return arg1.toString();
    }

 

}

   第三步,编写数据转换的配置文件。

  局部转换,在action所在的文件夹中新建actionName-conversion.properties文件,文件内容 user  = xxx. UserConvert  // user代表action中User对象的命名,即private  User user; 根据实际命名调整,XXX代表UserConvert对象所在的包名。

 全局转化, 在Struts.xml同一目录下新建xwork-conversion.properties文件, 文件内容 XXX.User = XXX.UserConvert .

如此,这可以在页面中传递User对象到action中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值