2011-03-24 71 views
1

假設我有兩個selectOneMenu標籤綁定到兩個不同的列表(讓我們說產品和部門)。互斥jsf selectOneMenu項目

我想阻止根據所選產品選擇一些部門,反之亦然。我可以把這個邏輯放在哪裏?

+0

你使用Seam發出Ajax請求

<h:selectOneMenu id="product" value="#{bean.selectedProduct}"> <f:selectItem itemLabel="Select Product" itemValue="" /> <f:selectItems value="#{bean.productList}"/> <!-- here is where I send out ajax request --> <p:ajax listener="#{bean.loadDepartmentById}" event="change" update="department" /> </h:selectOneMenu> <h:selectOneMenu id="department" value="#{bean.selectedDepartment}"> <f:selectItem itemLabel="" itemValue="" /> <f:selectItems value="#{bean.departmentList}"/> </h:selectOneMenu> 

這裏?你使用的是RichFaces還是類似的東西?這些可能會影響答案。 – 2011-03-24 19:51:45

回答

2

不知道這是否是你想要這樣做的方式。但是,您可以根據所選產品加載部門清單。爲此,您需要在選擇產品時發送Ajax請求以更新部門列表。爲了說明這一點,我將使用PrimeFaces是我的豆

@ManagedBean 
@ViewScoped 
public class bean{ 
    private List<SelectItem> productList = null; 
    private List<SelectItem> departmentList = null; 
    private Long selectedProduct = null; 
    private Long selectedDepartment = null; 

    @PostConstruct 
    public void init(){ 
     //Pre load product list 
     productList = new ArrayList<SelectItem>(); 
     productList.add(new SelectItem("value1", "label1")); 
     productList.add(new SelectItem("value2", "label2")); 
     productList.add(new SelectItem("value3", "label3")); 
     //The values are the keys passed to the selectItem property. 
     //The labels are those what you see on the menu. 
    } 

    public void loadDepartmentById(){ 
     if(selectedProduct != null){ 
      //Load the appropriate list of department. 
     } 
    } 

}