0

カテゴリのドロップダウンがあります。特定のカテゴリを選択する際に、そのカテゴリのサブカテゴリの別のドロップダウンをレンダリングしました。選択したサブカテゴリのIDが必要ですが、取得できません。コードは次のとおりです。

 <tr>
     <td align="right">
          <h:outputText value="Select Main Category:"></h:outputText>
     </td>
     <td>
          <h:selectOneMenu id="cmbcategory" value="#{categoryBean.categoryID}" required="true" requiredMessage="Select Category" >
               <f:selectItem itemLabel="--Select Category--" itemValue="0"></f:selectItem>
               <f:selectItems value="#{categoryBean.categories}" var="item" itemLabel="#{item.categoryName}" itemValue="#{item.categoryID}"></f:selectItems>
               <f:ajax event="valueChange" render="cmbsubcategory"  immediate="true" listener="#{categoryBean.SubcategoriesByCategory()}"/>
          </h:selectOneMenu>
     </td>
     <td><h:message for="cmbcategory"></h:message></td>
 </tr>
 <tr>
      <td align="right">
          <h:outputText value="Select Sucategory:"></h:outputText>
      </td>
      <td>
           <h:selectOneMenu id="cmbsubcategory" value="#{categoryBean.subCategoryID}" required="true" requiredMessage="Select Subcategory">
                <f:selectItem itemLabel="--Select Subcategory--" itemValue="0"></f:selectItem>
                <f:selectItems value="#{categoryBean.SubcategoriesByCategory()}" var="item" itemLabel="#{item.subcategoryID}" itemValue="#{item.subcategoryID}"></f:selectItems>

           </h:selectOneMenu>
      </td>
      <td><h:message for="cmbsubcategory"></h:message></td>
 </tr>    

そして私の豆は:

public int getCategoryID() {
        return CategoryID;
    }

    public void setCategoryID(int CategoryID) {
        this.CategoryID = CategoryID;
    }


    public String getCategoryName() {
        return CategoryName;
    }

    public void setCategoryName(String CategoryName) {
        this.CategoryName = CategoryName;
    }

    public Collection<Category> getCategories() {
        categories=abr.getAllCategory();
        return categories;
    }

    public Collection<Subcategory> SubcategoriesByCategory()
    {
        System.out.print("catid...... "+CategoryID);
        subcats= abr.searchAllSubcategoriesByCategory(CategoryID);

        return subcats;

//            +"size....."+ subcats.size());
     }

    public String getSubCatName() {
        return SubCatName;
    }

    public void setSubCatName(String SubCatName) {
        this.SubCatName = SubCatName;
    }

    public int getSubCategoryID() {
        System.out.print("subcatid...... "+SubCategoryID);
        return SubCategoryID;
    }

    public void setSubCategoryID(int SubCategoryID) {
        this.SubCategoryID = SubCategoryID;
    }

    public Collection<Subcategory> getSubcats() {
        return subcats;
    }

    public void setSubcats(Collection<Subcategory> subcats) {
        this.subcats = subcats;
    }



    public void setCategories(Collection<Category> categories) {
        this.categories = categories;
    }
4

1 に答える 1

0

プロパティ ゲッターとアクション メソッドを混同しています。ゲッターはプロパティを返す必要があり、アクション メソッドは であるvoidか、 を返す必要がありStringます。

変化する

public Collection<Subcategory> SubcategoriesByCategory() {
  ..
}

public void searchSubcats() {
  subcats= abr.searchAllSubcategoriesByCategory(CategoryID);
}

ajax リクエストでこのメソッドを呼び出します。

<f:ajax .. listener="#{categoryBean.searchSubcats}"/>

2 番目のドローダウンの selectItems は、サブキャットの getter を参照する必要があります。

<f:selectItems value="#{categoryBean.subcats}" ... />
于 2012-06-14T11:49:22.347 に答える