我正在尝试用Spring MVC编写一个简单的PUT请求方法。我得到了以下信息:
@RequestMapping(value = "/users/{id}", method = RequestMethod.PUT)
public @ResponseBody User updateUser(@PathVariable("id") long id,
String name,
String email) {
User user = repository.findOne(id);
user.setName(name);
user.setEmail(email);
System.out.println(user.toString());
repository.save(user);
return user;
} 这显然是错误的,因为它返回以下内容:
User{id=1, name='null', email='null'}我也尝试过@RequestBody注解,但也没有用。我在这里做错了什么,如果有任何想法,我将不胜感激。
发布于 2016-03-09 05:32:56
您没有告诉spring如何从请求中绑定name和email参数。例如,通过添加一个@RequestParam
public @ResponseBody User updateUser(@PathVariable("id") long id,
@RequestParam String name,
@RequestParam String email) { ... }name和email参数将从请求中的查询字符串中填充。例如,如果你向/users/1?name=Josh&email=jb@ex.com发出一个请求,你会得到这样的响应:
User{id=1, name='Josh', email='jb@ex.com'}为了更深入地了解如何定义处理程序方法,请查看spring documentation。
发布于 2016-03-09 08:00:14
您可以使用@RequestBody注释接收name和email:
@RequestMapping(value = "/users/{id}", method = RequestMethod.PUT)
public @ResponseBody User updateUser(@PathVariable("id") long id,
@RequestBody User user) {}当涉及到REST应用程序时,这是一个更好的实践,因为您的URL变得更加整洁和rest风格。您甚至可以在User上添加@Valid注释并验证其属性。
在您的邮递员客户端上,您以JSON的形式在请求正文上发送User,而不是在URL上。不要忘记,您的User类应该具有与发送的JSON对象相同的字段。
请看这里:

https://stackoverflow.com/questions/35878351
复制相似问题