如何发送模型属性,属性在春天也是模型
问题描述:
我有两个模型。如何发送模型属性,属性在春天也是模型
@Entity
class Product {
@Id
private String id;
private String name;
@ManyToOne(optional = false)
@JoinColumn(name = "category_id", referencedColumnName = "id")
@NotNull(groups = {CREATE.class, UPDATE.class})
private Category category;
...
}
@Entity
class Category {
@Id
private String id;
private String name;
...
}
@RestController
@RequestMapping(path = "/product")
class ProductController {
@RequestMapping(method = RequestMethod.POST)
public void create(@ModelAttribute Product product) {
...
}
}
我想发送请求ProductController的:
http POST http://localhost:8080/product name=='Product 1' category=1
帕拉姆类是分类到数据库的ID,但春天不理解。
可以做到这一点吗?
答
那么,你的entitiy类是可以的,但是看到POST请求中的参数真的很奇怪,尤其是在你放置在这里时。 这里是我的示例工作正常的
public class Product {
private String id;
private String name;
private Category category;
******
}
public class Category {
private String id;
private String name;
*******
}
@RestController
@RequestMapping(path = "/product")
public class ProductController {
@RequestMapping(method = RequestMethod.POST)
public void create(@ModelAttribute Product product) {
Product prd1 = product;
prd1.getId();
}
}
以防万一这里是一个AppConfig的:
@Configuration
@EnableWebMvc
public class AppConfig {
}
这是所有。现在您的控制器正在等待收到一条消息,即产品实例。 让我们继续。看到POST查询中的参数很奇怪。我已经进行了一些测试,他们都没问题 - 只需将数据作为请求主体传递即可!无论你是什么样的人。例如,让我们修改控制器就像下面这样:
@RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
public void create(@ModelAttribute Product product) {
Product prd1 = product;
prd1.getId();
}
}
现在你必须发送一个POST消息,其中包含一个JSON格式的产品数据的主体,即
{ "id": 1 }
和它的工作原理对于春季支持的所有其他格式
感谢您的回复。请告诉我如何在发送产品时发送类别。 –
好的,如果_Category_是_Product_的成员,那么在JSON表示法中,它会像这样记录: “{”id“:, ”name“:”productName“, ”category“:{ ”id“:1 , “name”:“categoryName” } }' –