我正在开发spring mvc应用程序,在那里我应该基于Spring MVC验证器验证但是验证但是AJAX请求.因此,当我发送单个数据时,一切正常,Spring将数据从请求映射到对象并验证它.但是当我添加新的参数,即数组时,Spring会产生异常:
java.lang.NumberFormatException: For input string: ""
我的用户类:
public class User
{
@NotEmpty
private String login;
private List<Department> departments;
}
我的控制器:
@Controller
public class UserController
{
@RequestMapping(value = "/save")
public ModelAndView save(@Valid @modelattribute("user") final User user,
BindingResult result) throws Exception
{
// do action
}
}
我的AJAX请求(POST):
http://localhost:8080/myApp/user/save?departments%5B%5D=1&departments%5B%5D=3&id=&login=Test
我的JS(jQuery):
var form = $('.add-form');
var fields = form.find('input');
var data = {};
// get valud from input fields
for (var i = 0; i < fields.length; i++) {
var $item = $(fields[i]);
data[$item.attr('name')] = $item.val();
}
// get value from list as array
data['departments'] = form.find('#departmentsSelector').val();
$.ajax({
type: "POST",
url: "user/save",
data: data,
success: function(response){
// do something
}
})
看起来Spring试图将参数departments []的名称解析为带有值而不是使用此参数的值的参数.
谁能帮我这个?
解决方法:
所以,我发现了一个错误,问题出现在参数部门的[]中.如果你使用传统的:对于jQuery AJAX请求是真的,那么数组变量将不包含名称中的[]和Spring在POJO中的映射.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。