문제

내 코드에서 DropDownChoice를 구현하는 데 문제가 있습니다.ProductCategory 유형의 객체 목록을 표시하고 싶습니다.이것은 모두 훌륭하고 괜찮을지 만 양식을 저장하려고하면 전체 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 ()을 제품의 "ProductCategory"필드에 저장하고 전체 ProductCategory 객체가 아닙니다. 즉, "test1"을 product.productCategory에 저장하지만 대신 com.test.webapp.domain.ProductCategory@1. 를 저장합니다.

누구든지 이것이 어떻게 완료되었는지 알려주십시오.

도움이 많이 많이 감사합니다.

도움이 되었습니까?

해결책

문제는 DDC의 모델 객체가 ProductCategory 유형입니다.저장할 때 이는 형식 뒤의 모델 객체에 정의 된 문자열 유형으로 캐스팅됩니다.

코드가 선택한 목록에있는 문자열 만 변경합니다.

    public List<String> load() {
        List<String> pcChoices = new ArrayList<String>();
        for(ProductCategory pc : categoryService.findAllProducts()) {
            pcChoices.add(pc.getName());
        }
        return pcChoices;
    }
.

선택한 렌더러를 제거 할 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top