【发布时间】:2013-10-25 20:54:08
【问题描述】:
好的,如果我使用 @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);
}
用户类
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;
}
【问题讨论】:
-
您也可以使用
@Valid注释@RequestBody注释参数。 -
@Validjson 字符串? (@RequestBody@ValidString json)但我想要验证用户对象
标签: json spring validation annotations