gpt4 book ai didi

jquery - 使用 jQuery 调用 Spring REST WebService

转载 作者:行者123 更新时间:2023-12-01 06:52:24 25 4
gpt4 key购买 nike

我想使用 JQuery 调用 Spring REST WebService。

我的 Controller 中有两种方法:

@RequestMapping(value="/{id}", method=RequestMethod.GET)
public @ResponseBody User getUser(@PathVariable long id, Model model){
return new User("TestUser");
}

@RequestMapping(value="/{id}", method=RequestMethod.PUT)
@ResponseStatus(HttpStatus.NO_CONTENT)
public void updateUser(@PathVariable long id, @Valid User user){
user.getName();
}

User 类看起来像这样:

public class User {

private String name;

public User(){};
public User(String name){this.name = name;}

public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
};

}

现在,当我调用 http://localhost:8080/demo/user/2 时,结果是 {"name":"TestUser"} 正如预期的那样。

但是当尝试修改资源时,我尝试这样:

$.ajax({
url: "http://localhost:8080/demo/user/2",
dataType: "json",
data: '{"name":"NewTestUser"}',
type: "PUT",
success: function(){alert('success');}
});

我可以在 Debug模式中看到调用了正确的方法(updateUser),但 User 对象的实例变量名称始终为 null。谁能告诉我我做错了什么?谢谢!

最佳答案

您还必须使用 @RequestBody 注释 User 参数,这将触发使用 Spring MVC 注册的 httpmessageconverters 将 http body 转换为您的 User 类型,如下所示:

@RequestMapping(value="/{id}", method=RequestMethod.PUT)
@ResponseStatus(HttpStatus.NO_CONTENT)
public void updateUser(@PathVariable long id, @RequestBody @Valid User user){
user.getName();
}

关于jquery - 使用 jQuery 调用 Spring REST WebService,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12691980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com