0

如何从请求参数中实例化自定义对象?(我已经尝试过@ModelAttribute 和@RequestParam)

@RequestMapping(method = RequestMethod.POST)
public String newPerson(@ModelAttribute(value = "personModel") 
                          Person person, BindingResult result) {
// Person has just firstname and lastname fields
 }

我尝试使用以下代码使用 jQuery 调用它:

var PersonText = '["firstname":"John", "lastname":"Someone"]';
$.ajax({
type : 'POST',
url : "/addnewperson.do",
data : {'personModel' : personText},
datatype : 'json',
success : function(data) {
    var obj = jQuery.parseJSON(data);
}
});

事实上,我最初的计划是将整个人员对象列表发送到控制器,但由于这不起作用,我恢复为单个对象,但现在这也不起作用。

编辑:参数不必是 JSON,我只是认为将 Javascript 对象序列化为 JSON 到 Spring Controller 是有意义的。

4

2 回答 2

0

我能够让它与来自 Javascript (jquery) 的以下调用一起工作

$.post("/modifylist.do",{ firstname: "John", lastname: "Doe" } );

但是,我仍然很想知道如何让它与数组或列表一起使用,即参数是Person[]or List<Person>

于 2012-06-14T07:24:50.830 回答
0
@RequestMapping(method = RequestMethod.POST)
public String newPerson(@RequestParam("personModel") String person,    BindingResult result) {
Gson gson = new Gson();
Person finalObject = gson.fromJson(person, Person.class);
// Person has just firstname and lastname fields
 }

你可以像这样使用它。对于列表,您可以使用以下内容:

Gson gson = new Gson();
List<Person> finalObjectList = gson.fromJson(Person, new TypeToken<List<Person>>() {
    }.getType());

我希望对你有帮助:)

于 2017-01-21T12:11:47.773 回答