好的,首先,如果我使用的是@Valid并且传入的是User实例而不是json字符串,我可以使用户有效。这很好用,例如:
@RequestMapping(value = "/add", method = RequestMethod.POST)
public String addUser(@Valid @ModelAttribute("user") User user, BindingResult result) {
userRep.save(user);
return "redirect:/";
}所以问题是,我如何创建某种API,传入的是Json字符串,并自动验证注释,例如,@Email、@NotEmpty?最佳实践是什么?
@RequestMapping(method = RequestMethod.POST, headers = "Accept=application/json")
public ResponseEntity<String> createFromJson(@RequestBody String json) {
User user = User.fromJsonToUser(json);
return new ResponseEntity<String>(user.toJson(),header,HttpStatus.CREATED);
}User.class
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@NotEmpty
@Length(max = 30)
private String firstName;
@Email
@NotEmpty
@Length(min = 3 , max = 50)
private String primaryEmail;
}发布于 2013-10-26 04:59:51
只需让Spring为用户解析字符串,并使用相同的@Valid注释对其进行注释:
@RequestMapping(method = RequestMethod.POST, headers = "Accept=application/json")
public ResponseEntity<String> createFromJson(@RequestBody @Valid User user) {
return new ResponseEntity<String>(user.toJson(), header, HttpStatus.CREATED);
}甚至是
@RequestMapping(method = RequestMethod.POST, headers = "Accept=application/json")
public ResponseEntity<User> createFromJson(@RequestBody @Valid User user) {
return new ResponseEntity<User>(user, header, HttpStatus.CREATED);
}https://stackoverflow.com/questions/19599280
复制相似问题