2017-11-10 121 views
0

我有兩個模型。如何發送模型屬性,屬性在春天也是模型

@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,但春天不理解。

可以做到這一點嗎?

回答

0

那麼,你的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」 } }' –