Jsf 2 如何在jsf中从selectOneMenu中获取所选项目值的id?
我有分类的下拉列表。在选择特定类别时,我已经呈现了该类别子类别的另一个下拉列表。我需要所选子类别的id。但我无法获取它。我的代码是:Jsf 2 如何在jsf中从selectOneMenu中获取所选项目值的id?,jsf-2,Jsf 2,我有分类的下拉列表。在选择特定类别时,我已经呈现了该类别子类别的另一个下拉列表。我需要所选子类别的id。但我无法获取它。我的代码是: <tr> <td align="right"> <h:outputText value="Select Main Category:"></h:outputText> </td> <td> <h:selectOneM
<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;
}
我的豆豆是:
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;
}
public int getCategoryID(){
返回类别ID;
}
public void setCategoryID(int CategoryID){
this.CategoryID=CategoryID;
}
公共字符串getCategoryName(){
返回类别名称;
}
公共无效setCategoryName(字符串CategoryName){
this.CategoryName=CategoryName;
}
公共集合getCategories(){
categories=abr.getAllCategory();
退货类别;
}
公共集合子类别ByCategory()
{
系统输出打印(“catid…”+类别ID);
子类别=abr.searchAllSubcategoriesByCategority(CategoryID);
返回子类别;
//+“大小…”+subcats.size());
}
公共字符串getSubCatName(){
返回子目录名;
}
public void setSubCatName(字符串SubCatName){
this.SubCatName=SubCatName;
}
public int getSubcategory id(){
系统输出打印(“子类别…”+子类别ID);
返回子类别ID;
}
public void setSubCategoryID(int SubCategoryID){
this.SubCategoryID=子类别ID;
}
公共集合getSubcats(){
返回子类别;
}
公共作废集合子类别(集合子类别){
this.subcats=子类别;
}
公共集合类别(集合类别){
这个。类别=类别;
}
您将属性获取程序与操作方法混为一谈。getter应该返回属性,而action方法应该是void
或返回String
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;
}
改变
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;
}
public Collection<Subcategory> SubcategoriesByCategory() {
..
}
并在ajax请求中调用此方法:
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;
}
<f:ajax .. listener="#{categoryBean.searchSubcats}"/>
然后,第二个drow down中的selectItems需要引用子类别的getter:
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;
}
<f:selectItems value="#{categoryBean.subcats}" ... />
我可以在的值中调用方法吗?value
属性采用一个ValueExpression(它是一个具有相应getter和setter的bean属性)。但不能将操作方法设置为值
。