@ModelAttributeSpring MVC 的目的和用途是什么?
我是Spring的新手,并注册了一个用户.我确实喜欢这个.
@RequestMapping("/register")
public String register(@ModelAttribute User user,BindingResult result){
if(!result.hasErrors()){
userSerive.register(user);
}
return "welcome";
}
Run Code Online (Sandbox Code Playgroud)
这很好用,但这里的问题是我user在welcome.jsp页面中不需要这个对象,所以为什么要让模型对象更重.所以我试过没有@ModelAttribute,这对我来说也适用于下面.
@RequestMapping("/register")
public String register(User user,BindingResult result){
if(!result.hasErrors()){
userSerive.register(user);
}
return "welcome";
}
Run Code Online (Sandbox Code Playgroud)
所以我只想知道两者的优点和缺点,如果我真的不需要user对象,那么这是最佳实践jsp.是@ModelAttribute做除了增加对象模型的任何其他事情,这春天隐式绑定不does.Is @ModelAttribute结合或者更安全的方法是什么?
我想在以下4种类型的请求中对我的查询进行分类.@ModelAttribute如果我不需要在视图中发送数据并且我的请求是 -
@RequestBody是必须的.我是否理解正确,为了在 Spring MVC 应用程序中捕获/数据绑定 HTTP 请求的主体,有人可以使用...
@RequestBody
application/json对于编码为?的请求
@PostMapping(consumes = "application/json")
public String handleUpload( @RequestBody UploadCommand command ) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
@ModelAttribute
x-www-form-urlencoded对于编码为或multipart/form-data?的请求
@PostMapping(consumes = "multipart/form-data")
public String handleUpload( @ModelAttribute UploadCommand command ) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
问题:
为什么Spring需要有这两个不同的注解呢?
这些注释还有其他用例吗?
注意: 经过深入研究:这个 stackoverflow 答案深入阐述了 @ModelAttribute: @ModelAttribute 注释,何时使用它?