<a href="javascript:editPage('<ww:property value="userid" />');" >修改</a>
---------------------------------------------------------
function editPage(userid){
document.delForm.action="<%=request.getContextPath() %>/user!editPage.action?userid="+userid;
document.delForm.submit();
}
--------------------------------------- public String editPage() throws Exception {
User uu = (User) userService.queryById(User.class, user.getUserid());
return "editPage";

}
这么写个修改怎么会空指针呢有谁知道么

解决方案 »

  1.   

    action中的代码不全,你是怎么从action中取得userid这个参数的?
      

  2.   

    一步一步查咯~~~先确定 <%=request.getContextPath() %>/user!editPage.action?userid="+useriduserid有值然后确定userid传递到action中怀疑userid="+userid; 
    这个没有传递到ACTION  变量名不对
      

  3.   

    在网页上都能看到
    function editPage(1932139217)userid的具体值,报错是User uu = (User) userService.queryById(User.class, user.getUserid()); 有 错,但是我不知道action这么写为啥会错
      

  4.   

    我没猜错的话你在action中是不是定义一个变量
    private User user;  然后生成了get set的方法?如果是的话修改如下代码:document.delForm.action=" <%=request.getContextPath() %>/user!editPage.action?user.userid="+userid; 
      

  5.   

    userid="+userid在action中对应的应该是userid
    不是在user下的userid你应该是ACTION中没有获取到id
      

  6.   

    User uu = (User) userService.queryById(User.class, user.getUserid()); 
    那这个应该怎么改?我在action中声明一个userid么
      

  7.   

    我晕,整个action的代码也不贴,我问的问题也没有回答,让我凭空想象吗?其它的先不用改,就这样运行试试
      

  8.   


    你在action中没有绑定传值,页面怎么去接收呢???
      

  9.   

    public String edit() throws Exception
    {
    userService.update(user);
    return "requery";

    }

    public String editPage() throws Exception {
    User uu = (User) userService.queryById(User.class, user.getUserid());  System.out.println("1111111111"+uu.getUserid());
    return "editPage";

    }我现在喷uu.userid已经能接到正确的id了
      

  10.   

    你在action中不是已经根据id查询出user这一条记录来了吗?然后把这个user的对象绑定到request或session作用域中就可以在页面获取到你要的内容
      

  11.   

    public String edit() throws Exception
    {
    userService.update(uu);
    return "requery";

    }这个我改了但是只能接到id没有其他的值
      

  12.   

    你是这个action就是用来修改页面传递过来的数据的吗?
      

  13.   

    现然没取到userid的值啊。要么改后台取值的方式,要么改前台传值的属性。
      

  14.   

    是啊现在就只能传到userid别的都没接到
      

  15.   

    public String editPage() throws Exception {
    User uu = (User) userService.queryById(User.class, user.getUserid());  System.out.println("1111111111"+uu.getUserid());
    System.out.println("33333333"+uu.getTel());
    return "editPage";

    }这里喷出来的其他属性都是null只有id,是我User uu = (User) userService.queryById(User.class, user.getUserid()); 有错么,uu是不是应该接到所有user里的属性呢
      

  16.   

    没看出什么毛病来,如果查询不出来就应该是你service方法写的有问题
      

  17.   

    public Object queryById(Class cla, String id) { return dao.queryById(cla, id);
    }
      

  18.   


    建议改成如下方法:public User queryById(String id) {return (User)dao.queryById(User.class, id);
    }在action中调用此方法的时候只传userid即可
      

  19.   

    在action使用 user.getUserId() 是肯定获取不到 userid=xxx的,可以使用 user.userid=xxx:
    document.delForm.action=" <%=request.getContextPath() %>/user!editPage.action?user.userid="+userid; 
    document.delForm.submit(); 
      

  20.   

    java.lang.IllegalArgumentException: id to load is required for loading
      

  21.   

    25楼的我没看懂,你就说
    public String editPage() throws Exception {
    User uu = (User) userService.queryById(User.class, user.getUserid()); 
    return "editPage";

    }
    这个怎么改吧
      

  22.   

    那就改成DAO中默认的方法public User queryById(String id) {return (User)dao.get(User.class, id);
      

  23.   

    改完之后报这个错
    java.lang.IllegalArgumentException: id to load is required for loading
      

  24.   

    没明白,这是dao中默认的方法 public Object queryById(Class cla, String id) { return this.getHibernateTemplate().get(cla, id);
    }
      

  25.   

    java.lang.IllegalArgumentException: id to load is required for loading报这个错的原因是因为你传的userid的值是null你打印一下看看能不能输出userid的值
      

  26.   

    public String editPage() throws Exception {
    User uu = (User) userService.queryById(userid);
    System.out.println(userid);
    return "editPage";
    根本就没走这个打印就报错了
      

  27.   


    你这句话把我误导了。我以为你userid能在action中打印出值来document.delForm.action=" <%=request.getContextPath() %>/user!editPage.action?user.userid="+userid; 
    这里的代码改了吗?再次验证你<a href="javascript:editPage(' <ww:property value="userid" />');" >修改 </a> 这里写的正确?
    红色部分能打印出值来吗?
      

  28.   

    public String editPage() throws Exception {
    User uu = (User) userService.queryById(User.class, user.getUserid()); 
    // User uu = (User) userService.queryById(userid);
    System.out.println(userid);
    return "editPage";
    我这么写只能接到userid的值倒是显示在修改页面上只有userid其他的都没有
      

  29.   

    你打印错参数了
    System.out.println(user.getUserid());
      

  30.   

    在你action中有没有这个全局的user呢
    如果有就要你的这个
    User uu = (User) userService.queryById(User.class, user.getUserid()); 
    换成怎样
    user  = (User) userService.queryById(User.class, user.getUserid()); 
      

  31.   

    看了这么长 都没看懂你是userid传到后台,后台取不到值呢还是 后台的user传值到前台,前台的文本域没接收到值
    略看了下,如果是userid传到后台,后台取不到值,是因为你JS里传参的时候传的是userid,而你在后台接收值的时候呢却用user.userid,这样肯定是接不到的,你可以在后台声明一个全局的userid,为它生成get和set,然后前台传值按你现有的传输方法不变,这样userid就可以在后台接收到
     如果是你查询出来了而在前台展示时,文本框里面没值呢是你S2的标签有问题,你的是
     <ww:property value="user.userid"/>,正规的应该是<s:property value='#request.user.userid'/>这样才对..
    不晓得你是哪种方式...........
      

  32.   

    把通过ID查到的值重新赋值给user