如何从JavaScript调用Spring MVC的?(How to call Spring MVC

2019-10-16 20:12发布

你如何从实例的请求PARAM自定义对象? (我曾经尝试都@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。

Answer 1:

我能得到这个用在Javascript以下调用工作(jQuery的)

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

不过,我还是真的想知道如何得到这个使用数组或列表的工作,即参数是Person[]List<Person>代替。



Answer 2:

@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());

我希望可以帮助你:)



文章来源: How to call Spring MVC from Javascript?