2010-11-18 54 views
11

我想在JSF的下拉菜單中顯示樹狀結構。基本上選擇的項目是在一個層次結構中,我希望在下拉列表中顯而易見。JSF樹在下拉列表中

可能嗎?

+0

組合框中的樹。我無法想象它的用途,你能否詳細說明] – 2010-11-18 11:45:05

+2

我假定他實際上是指在'h:selectOneMenu'下的下拉菜單,而不是組合框(這是一個可編輯的下拉菜單)。 – BalusC 2010-11-18 11:56:19

回答

24

所以,你基本上要一個HTML <optgroup>?使用SelectItemGroup

JSF豆(我假設JSF 1.x中):

private String option; // +getter +setter 
private List<SelectItem> options; // +getter 

public Bean() { 
    options = new ArrayList<SelectItem>(); 

    SelectItemGroup group1 = new SelectItemGroup("Group 1"); 
    group1.setSelectItems(new SelectItem[] { 
     new SelectItem("Group 1 Value 1", "Group 1 Label 1"), 
     new SelectItem("Group 1 Value 2", "Group 1 Label 2"), 
     new SelectItem("Group 1 Value 3", "Group 1 Label 3") 
    }); 
    options.add(group1); 

    SelectItemGroup group2 = new SelectItemGroup("Group 2"); 
    group2.setSelectItems(new SelectItem[] { 
     new SelectItem("Group 2 Value 1", "Group 2 Label 1"), 
     new SelectItem("Group 2 Value 2", "Group 2 Label 2"), 
     new SelectItem("Group 2 Value 3", "Group 2 Label 3") 
    }); 
    options.add(group2); 
} 

JSF視圖:

<h:selectOneMenu value="#{bean.option}"> 
    <f:selectItems value="#{bean.options}" /> 
</h:selectOneMenu> 

生成的HTML例子:

<select name="j_idt6:j_idt7" size="1"> 
    <optgroup label="Group 1"> 
     <option value="Group 1 Value 1">Group 1 Label 1</option> 
     <option value="Group 1 Value 2">Group 1 Label 2</option> 
     <option value="Group 1 Value 3">Group 1 Label 3</option> 
    </optgroup> 
    <optgroup label="Group 2"> 
     <option value="Group 2 Value 1">Group 2 Label 1</option> 
     <option value="Group 2 Value 2">Group 2 Label 2</option> 
     <option value="Group 2 Value 3">Group 2 Label 3</option> 
    </optgroup> 
</select> 

它是如何看起來像在瀏覽器中:

alt text

+2

爲optgroup +1! – 2011-07-22 09:03:45

+1

它適用於selectManyMenu?我想在selectManyMenu中使用它。 – deepmoteria 2012-07-10 10:54:04

+4

BalusC巖!!! – arthur 2013-01-22 15:35:20

1

我不知道我明白你在問什麼。假設您希望菜單中的子類別稍微縮進? 如果是這樣的話,那麼如何從服務器端/處理程序發送已經使用「空格」或「 - 」分析的項目數組。
換句話說,您不能使用JavaScript來分析和理解類別層次結構。您有2個選項 - 通過JSF運行遞歸(對於需要設計頁面的用戶界面來說聽起來很複雜和醜陋),或者在服務器端進行排序,爲JSF提供阿里阿迪縮進條目。

希望這有助於

伊沙伊

+0

是的,你讓我的權利,我的選項分爲不同類別,每個類別也有一些選項。 – 2010-11-18 12:01:37

0

但嵌套組無法正確顯示。他們顯示爲不是組的項目。