Ajax在Spring中使用@modelAttribute调用param

时间:2016-01-11 08:41:10

标签: javascript ajax spring spring-mvc parameters

我正在使用ajax调用来提交表单。 但是我无法将该参数作为模式分发来访问。

Ext.Ajax.request({
                url: 'url',
                headers: { 'Content-Type': 'application/json' },
                params : Ext.JSON.encode(form.getValues()), //this is the parameter in jason pattern

                success: function(response, options) {
                    var result = Ext.JSON.decode(response.responseText, true);

                    if (result.success) {

                        Ext.Msg.show({
                            title:'DataBase',
                            msg: result.message,
                            buttons: Ext.Msg.OK,
                            icon: Ext.Msg.INFO
                        });

我怀疑是否可以将此参数作为modelattribute访问,如下面的给定代码所示。 ?

@RequestMapping(value="/employee/new", method = RequestMethod.POST )
@ResponseBody public String doAddEmp(@RequestBody String Str){
    try{
        empServ.setError();
        if(empServ.addEmp(Str)){
            return "{success:true, message:'Insertion Successfull'}";
        }else
            return "{success:false, message:\""+empServ.returnError()+"\"}";

    }
    catch(Exception e){
        e.printStackTrace();
        return "{success:false, message:'SQL ERROR'}";

    }

}

我非常感谢听到一个对我怀疑的好建议。 如果这是一个错误的模式(对于参数),请建议我正确的模式。

1 个答案:

答案 0 :(得分:0)

你让@ModelAttribute与@RequestBody混淆:你说你想要访问modelattribute而你正在使用requestbody(两者都是绑定数据机制,一个来自params,另一个来自正文)。

使用Ajax请求时,最好像在代码中一样使用@RequestBody。

确保:

  • Ext.Ajax.request有"方法:' POST'"
  • 您的控制器使用@RestController注释
  • 更改" @RequestBody String Str" to" @RequestBody员工员工"
  • 确保您的表单元素名称与员工对象字段匹配