如何发送模型属性,属性在春天也是模型

问题描述:

我有两个模型。如何发送模型属性,属性在春天也是模型

@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 } 

和它的工作原理对于春季支持的所有其他格式

+0

感谢您的回复。请告诉我如何在发送产品时发送类别。 –

+0

好的,如果_Category_是_Product_的成员,那么在JSON表示法中,它会像这样记录: “{”id“:, ”name“:”productName“, ”category“:{ ”id“:1 , “name”:“categoryName” } }' –