springside3.x里action用id查值的一个问题

在开发的过程,因为有一个栏目表的功能开发,用于作为整个系统的页面,栏目等等的一个标识记录之类的。表的设计好简单,就是平时的一样:
id bigint 7
pid bigint 7
code varchar(50)
title varchar(50)
....




数据库里有数据:
id    pid   code   title
1      0    index   首页


然后生成一个实体映射类TColumn.java,还有就是TcolumnAction.java继承actionsupper.java之类的,这些都与正常的一样。

JSP页面有一个新增子类,更改,删除之类的功能,新增子类及更改都是调用同一个javascript方法,然后传入一个标识符用作区是点击了新增还是更改。最终的javascript方法是下面这样:
function addModifNode(id,type){
    var url ='/admin/content/tcolumn!input.do?id='+id+'$type='+type;
    add(url,title);//打开一个窗口
}



TcolumnAction.java里的input方法为:

public TcolumnAction extends ActionSupper {
    private Long id;
    private TColumn entity;
    ...
    public String input() throws Exception {
       System.out.println("#######id: "+entity.getId());
       System.out.println("#######pid: "+entity.getPid());
       System.out.println("#######code: "+entity.getCode());
       System.out.println("#######title: "+entity.getTitle());
    }

    ...
}



大致就是以上这些代码吧,因为ID里已经传入,所以在执行input方法就会根据ID是否为null来确定是否查询数据库来取值的。页面传入了一个id,所以得到的值应该是数据的。打印出来的也应该是数据库里的数据才是正常的。

但实际上打印出来的并不是这样的,其实所有的都正常,就只的一个pid的值是不正确的。于是就查数据库,dutbug,后来连pid的字段名也改了。还是不行,所得到的值与数据库中的值就是不一致。试了很久,也浪费了很久时间。后来无意中在jsp页面中将&pid=+id删除去后,再测试,一切正常了。


发现问题就好办了。猜想了一下:当提交请交到action里,再到input方法前,就已经取得了一个以ID为准的TComun的pojo对象了。还没有到input方法前,Entity.get()还是正常的。但当进入到input方法后,就会将提交过来的值填充到entity去,此时如果再打印的话就会将传过来的值打印出来。






你可能感兴趣的:(JavaScript,java,jsp)