Struts2中OGNL设置泛型属性值的问题

分类:Tech | 作者:Shoopman | 发表于2009/07/01 没有评论  

    有这么一个封装了CRUD操作的Action基类:

public abstract class CrudAction extends ActionSupport{

    protected T entity;

    protected PK id;

 

    public void setId(PK id) {
        this.id = id;
    }

    /** 显示新建或编辑页前的数据准备 */

    public String input() throws Exception {

    }

    /** other code */

}

    然后是一个继承此CrudAction的用户CRUD操作类:

public class UserAction extends CrudAction {

    @Autowired
    private UserManager userManager;

 

    @Override
    public String input() throws Exception {

        entity = userManager.get(id);

    }

}

    但是通过类似这样的连接http://localhost:8080/test/user!input.action?id=uid来访问时,在UserAction中得到的id值是一个长度为1的String数组,导致后面Hibernate查询报错了。不知道为什么获得的值是数组,一开始只好以最直接的办法来获取正确的id值:判断id是否为数组,如果是即取索引为0的值。

    后来,尝试在子类用实际的类型覆盖id的setter方法:

    @Override
    public void setId(String id) {
        this.id = id;
    }

结果是可以正确的获得值,而不需要经过上面那丑陋的转换。

日志信息 »

该日志于2009-07-01 09:08由 Shoopman 发表在Tech分类下, 你可以发表评论。除了可以将这个日志以保留源地址及作者的情况下引用到你的网站或博客,还可以通过RSS 2.0订阅这个日志的所有评论。
目前盖楼 (0)层:

发表评论 »

« »