Spring MVC @ModelAttribute Not Binding Form

时间:2014-10-14 16:58:10

标签: java jquery spring spring-mvc

我试图通过ajax POST到Spring MVC控制器方法。使用Chrome的开发人员工具,我可以告诉表单中的值正在发送,但在方法中,表单值为空。

这是jquery调用:

var form = $('#renegotiationForm').serialize();
$.ajax({

    method:'POST', 
    url:'/renegotiate/wizard/startRenegotiation', 
    data:{'renegotiationForm': form}, 
    success: function(data) { this.transitionTo(data); }

});

这是Spring MVC方法(意味着只返回一个字符串):

@RequestMapping(value="wizard/startRenegotiation", method = RequestMethod.POST)
public @ResponseBody String processStart(@ModelAttribute("renegotiationForm") RenegotiationForm form, BindingResult bindingResult) {

log.debug("Entered showStart(), method=POST");

RenegotiationType type = RenegotiationType.valueOf(form.getRenoType().trim().toUpperCase());
RenegotiationActivity activity = RenegotiationActivity.valueOf(form.getRenoActivity().trim().toUpperCase());

String result = "";
if (type == RenegotiationType.TYPE1 && activity == RenegotiationActivity.ACTIVITY1) {
    result = "deleteType1";
}

return result;
}

使用Spring Form taglib绑定值,并且我已确认表单标记的路径属性与RenegotiationForm的字段匹配。

2 个答案:

答案 0 :(得分:1)

我认为这是因为你试图从ajax发送一个“字符串”并且想要获取和Object(RenegotiationForm),尝试将其更改为服务器端的String和Format。我建议你也从客户端添加你发送的类型。

@RequestMapping(value = "wizard/startRenegotiation", method = RequestMethod.POST, produces="application/json")

答案 1 :(得分:0)

找到答案。在我的代码中,我有一个这样的函数:

var ajaxcall = function() { $.ajax({
     // ajax settings
    });
}

不幸的是,以这种方式设置它并不会使它作为延迟的jquery工作,特别是我不能使用.then()函数来处理ajax请求。

感谢您的帮助。