当我们在 REST 请求方法上使用 @RequestParam 注释时,我们可以指定是否需要该值,以及它的默认值。但是当我们让Spring映射请求参数到某个复杂对象时,如何实现呢?是否可以注释该对象的字段?
答案 0 :(得分:3)
我认为对于复杂的对象,你可以使用@ModelAttribute注释。或者你可以使用bean验证API给出的注释。对于ex @Valid(JSR注释),然后你可以添加必要的验证,如空,范围检查或复杂对象的字段中的默认值。
答案 1 :(得分:0)
这就是你正在寻找的东西
9 @Controller
10 public class ModelAttributeExampleController {
11 @Autowired
12 private UserDetails userDetails;
13 @RequestMapping(value="/modelexample")
14 public String getMethod(@ModelAttribute UserDetails userDetails){
15 System.out.println("User Name : " + userDetails.getUserName());
16 System.out.println("Email Id : " + userDetails.getEmailId());
17 return "example";
18 }
19
20 //This method is invoked before the above method
21 @ModelAttribute
22 public UserDetails getAccount(@RequestParam String user, @RequestParam String emailId){
23 System.out.println("User Value from Request Parameter : " + user);
24 userDetails.setUserName(user);
25 userDetails.setEmailId(emailId);
26 return userDetails;
27 }
28 }