我在代码中实现 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”字段存在于“产品”类型的对象中,并且是字符串类型。
正如我试图描述的那样;我想将 ProductCategory.getName() 保存到 Product 中的“productCategory”字段,而不是整个 ProductCategory 对象。换句话说:我想将“test1”保存到 Product.productCategory,但它却保存了 com.test.webapp.domain.ProductCategory@1。
谁能告诉这是如何完成的?
任何帮助深表感谢。