2017-11-10 5 views
0

私は2つのモデルがあります。モデルプロパティを送信する方法は、プロパティも春のモデルです

私はProductControllerに要求を送信したい
@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) { 
    ... 
    } 
} 

http POST http://localhost:8080/product name=='Product 1' category=1 

のparamカテゴリはDBにカテゴリーのIDですが、春はそれを理解していません。

これは可能ですか?

答えて

0

あなたのエンティティークラスは大丈夫ですが、ここに配置したように、POSTリクエストのパラメータを特にソートで見るのは本当に変です。すべてです

@Configuration 
@EnableWebMvc 
public class AppConfig { 

} 

: はここのAppConfigをここで念のために適切に

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(); 
    } 
} 

そして作業です、私のサンプルです。これで、あなたのContorllerはProductインスタンスであるメッセージを受け取ることを期待しています。 次へPOSTクエリのパラメータを見るのはかなり変です。私はいくつかのテストをしており、彼らは大丈夫です - ちょうどリクエストボディとしてデータを渡す!あなたが何をしても。例えばそれは、以下に示すようのコントローラを変更してみましょう:

@RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE) 
    public void create(@ModelAttribute Product product) { 
    Product prd1 = product; 
    prd1.getId(); 
    } 
} 

そして今、あなたはすなわち

{ "id": 1 } 

、JSON形式の製品データが含まれているボディとPOSTメッセージを送信する必要があり、それが動作します春にサポートされている他のすべての形式の場合

+0

ありがとうございました。私が商品を送るときに、カテゴリを送る方法を教えてください。 –

+0

_Category_が_Product_のメンバーでJSON表記の場合、次のようになります。 '{" id ":、 " name ":" productName "、 "カテゴリ ":{ " id ":1 、 "name": "categoryName" } } ' –

関連する問題