我用表单想后台发送请求:
ExtJs代码:
form.getForm().submit({
method:'POST',
params:{
username:username,
password:password,
checkCode:checkCode
},
success:function(form,action){

},
failure:function(form,action){

}
});
在Action中定义了username,password,checkCode三个变量可以接收到数据现在我想把这三个变量放在user类中,并只定义user一个变量,那么在ExtJs中要如何定义请求才能在Action中直接把user对应上呢?
我做了以下的尝试:
对params修改为:
params:{
   user:"{username:'aaa',password:'bbb'}"
}
但是一直有错误:
WARN com.opensymphony.xwork2.ognl.OgnlValueStack:60 - Error setting expression 'user' with value '[Ljava.lang.String;@1fc8df5'
ognl.MethodFailedException: Method "setUser" failed for object myevernote.server.LoginAction@1a71c79 [java.lang.NoSuchMethodException: myevernote.server.LoginAction.setUser([Ljava.lang.String;)]请问应该怎么改呢?

解决方案 »

  1.   


    params:{
      username:user[username],
      password:user[password],
      checkCode:user[checkCode]
    }
      

  2.   


    params:{
      user[username]:username,
      user[password]:password,
      user[checkCode]:checkCode
    } 这个是对的,上面的错误!
      

  3.   


    这个有测试通过的吗?我这里显示user[username]语法错误啊~~
      

  4.   

    你的后台采用什么?我理解你的意思是要把前台的参数封装到user里传到后台,我上面的代码就做这个事,但是后台怎么解析这个与Ext无关,你用firebug看看post到后台是不是这样的格式。
      

  5.   

    后台我用Java,用struts2框架,user我做成了一个类,在action中定义了user
    private User user;
    public void setUser(User user){
    this.user = user;
    }
    前台Ext我按你的写了,但是有错误啊,这种写法是对的吗?
      

  6.   

    试试这样写
    params:{
       user:{username:'aaa',password:'bbb'}
    }
      

  7.   

    语法可能没问题~但还是不行!!我看了错误信息,ext端发过去的是始终是字符串,但是在但是在后台我的setUser是类类型的,应该是对应不上~~可能还需要什么配置吧~~
      

  8.   

    呵呵~其实就是为了图个方便!现在已经解决了~struts2接收类似"user.username"的字串会创建对象,所以Ext可以这样写:
    form.getForm().submit({
    method:'POST',
    params:{
    'user.username':'aaa',
    'user.password,:'bbb'
    },
    success:function(form,action){},
    failure:function(form,action){}
    });
    但是Ext的form的提交是会自动把表单的字段发送的,所以其实只要在设置字段的时候把name属性设为类似'user.username'即可