Mac*_*zyk 3 java spring spring-mvc
我正在尝试PUT在Spring MVC中编写一个简单的请求方法.我得到以下内容:
@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;
}
Run Code Online (Sandbox Code Playgroud)
这显然是错误的,因为它返回以下内容:
User{id=1, name='null', email='null'}
Run Code Online (Sandbox Code Playgroud)
我也试过@RequestBody注释,但这也没有帮助.任何想法我在这里做错了将不胜感激.
ina*_*cao 16
您可以接收name和email蒙山的@RequestBody注释:
@RequestMapping(value = "/users/{id}", method = RequestMethod.PUT)
public @ResponseBody User updateUser(@PathVariable("id") long id,
@RequestBody User user) {}
Run Code Online (Sandbox Code Playgroud)
对于REST应用程序,这是一种更好的做法,因为您的URL变得更加干净和休息风格.您甚至可以在User其上放置@Valid注释并验证其属性.
在邮递员客户端上,您可以User在请求正文中发送作为JSON的内容,而不是URL.不要忘记您的User类应该与您发送的JSON对象具有相同的字段.
Ali*_*ani 12
您没有告诉spring如何绑定请求中的参数name和email参数.例如,通过添加@RequestParam:
public @ResponseBody User updateUser(@PathVariable("id") long id,
@RequestParam String name,
@RequestParam String email) { ... }
Run Code Online (Sandbox Code Playgroud)
name和email参数将从请求中的查询字符串填充.例如,如果您发出请求/users/1?name=Josh&email=jb@ex.com,您将收到以下回复:
User{id=1, name='Josh', email='jb@ex.com'}
Run Code Online (Sandbox Code Playgroud)
为了获得有关定义处理程序方法的更多信息,请查看spring 文档.
| 归档时间: |
|
| 查看次数: |
24354 次 |
| 最近记录: |