2010-11-18 2 views
11

JSFのドロップダウンにツリーのような構造を表示したいと思います。基本的には、選択項目は階層構造になっていて、ドロップダウンリストにはその項目が表示されます。ドロップダウンのJSFツリー

可能ですか?

+0

コンボボックス内のツリー。 –

+2

私は彼が実際に 'h:selectOneMenu'のようにドロップダウンを意味し、コンボボックス(編集可能なドロップダウンではありません)ではないと仮定します。 – BalusC

答えて

24

だから、あなたは基本的にHTML <optgroup>をしたいですか? SelectItemGroupを使用してください。

JSFビーン(私はJSF 1.1を想定):

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

+1のoptgroup! –

+1

selectManyMenuで動作しますか?私はselectManyMenuでこれを使用したいと思います。 – deepmoteria

+4

BalusC rocks !!! – arthur

1

私はあなたが何を求めているのか分かりません。メニューのサブカテゴリを少しインデントしたいとします。 その場合、「& nbsp」(スペース)または「 - 」ですでに解析された項目の配列をサーバー側/ハンドラから送信する方法はありますか?
つまり、javascriptを使用してカテゴリ階層を解析して理解することはできません。 2つのオプションがあります - JSFを介して再帰を実行するか(ページを設計する必要のあるUI担当者にとっては複雑で醜いです)、サーバ側で並べ替えを行い、JSFにぼんやりとインデントされたエントリを提供します。このことができます

希望、

Yishai

+0

はい、あなたは私の権利を得ました、私のオプションはカテゴリにグループ化され、それぞれのカテゴリにはいくつかのオプションもあります。 –

0

ただし、ネストされたグループは正しく表示されません。グループとして表示されない項目として表示されます。

関連する問題