我需要将收到的json
对象转换为自定义实体类型Product
并进行验证。之后我需要坚持下去。有没有办法使用注释和Spring框架支持RESTful Web服务来使用注释和控制器的方法签名?
控制器
@RestController
@RequestMapping("/")
public class pController {
@RequestMapping(value = "/addProduct", method = RequestMethod.POST)
@ResponseBody
public String addProduct(Model model, @Valid Product product ,
BindingResult result){
// somehow get converted json as Product, should be already validated
}
实体
@Table(name = "product")
@Entity
public class Product implements Serializable {
@Id
@Column(name = "product")
@GeneratedValue
private int product;
@Column(name = "name")
@Basic
@NotEmpty
private String name;
...
}
答案 0 :(得分:1)
如果您使用的是Spring 3.1或更高版本,则可以轻松完成。只需将consumes
属性放在@RequestMapping
中,并在@RequestBody
参数之前提供Product
,如下所示:
@RequestMapping(value = "/addProduct", method = RequestMethod.POST, consumes="application/json")
@ResponseBody
public String addProduct(Model model, @RequestBody Product product ,
BindingResult result){
// you get your desired product object!
}
最重要的是,将 jackson 作为项目的依赖项。
<mvc:annotation-driven />
@EnableWebMvc
放在配置类那就是它!
修改强>
是的,您必须在@Valid
之前使用@RequestBody
注释,因为@RequestBody
只是将Json转换为您期望的Class对象,它不会针对您的休眠验证对象验证配置。为此,您必须将@Valid
注释与@RequestBody
放在一起。