コードにdropdownchoiceを実装する際に問題が発生しました。ProductCategoryタイプのオブジェクトのリストを表示したい。これはすべて問題ありませんが、フォームを保存しようとすると、選択リストに表示されているオブジェクトのフィールドだけでなく、ProductCategoryオブジェクト全体が保存されます。
私のコードは次のようになります。
IModel categories = new LoadableDetachableModel() {
public List<ProductCategory> load() {
List<ProductCategory> l = categoryService.findAllProducts();
return l;
}
};
IChoiceRenderer renderer = new IChoiceRenderer() {
public Object getDisplayValue(Object obj) {
ProductCategory category = (ProductCategory) obj;
return category.getName();
}
public String getIdValue(Object obj, int index) {
ProductCategory category = (ProductCategory) obj;
return category.getName();
}
};
DropDownChoice<ProductCategory> listCategories = new DropDownChoice<ProductCategory>(
"productCategory",
categories,
renderer
);
add(listCategories);
生成されたHTMLは次のようになります。
<select wicket:id="productCategory" name="productCategory">
<option selected="selected" value="">Vælg en</option>
<option value="test1">test1</option>
<option value="test2">test2</option>
</select>
「productCategory」フィールドは「Product」タイプのオブジェクトに存在し、Stringタイプです。
私が説明しようとしたように; ProductCategoryオブジェクト全体ではなく、ProductCategory.getName()をProductの「productCategory」フィールドに保存したいと思います。つまり、「test1」をProduct.productCategoryに保存したいのですが、代わりにcom.test.webapp.domain.ProductCategory@1を保存します。
誰かがこれがどのように行われるか教えてもらえますか?
どんな助けでも大歓迎です。