2010-11-18 3 views
11

Desidero visualizzare una struttura ad albero nel mio menu a discesa in JSF. Fondamentalmente gli elementi selezionati sono in una gerarchia e mi piacerebbe che fosse evidente nel menu a discesa.Albero JSF in un menu a discesa

È possibile?

+0

nella casella combinata. Non riesco a visualizzarne l'utilizzo, puoi elaborare] –

+2

Suppongo che in realtà intenda il menu a discesa come in "h: selectOneMenu', non in combobox (che è un menu a discesa modificabile). – BalusC

risposta

24

Quindi, si vuole fondamentalmente un HTML <optgroup>? Utilizzare SelectItemGroup.

JSF fagioli (presumo 1.x JSF): vista

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> 

Generated esempio 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> 

Come sembrare in del browser:

alt text

+2

+1 per optgroup! –

+1

Funziona per selectManyMenu ??? Voglio usarlo in selectManyMenu. – deepmoteria

+4

BalusC rocce !!! – arthur

1

Non sono sicuro di aver capito cosa stai chiedendo. Supponendo che vuoi che le sottocategorie nel menu siano leggermente rientrate? In questo caso, per quanto riguarda l'invio dal lato server/gestore della matrice di elementi già analizzati con "& nbsp" (spazio) o con un "-".
In altre parole, non è possibile utilizzare javascript per analizzare e comprendere la gerarchia delle categorie. Hai 2 opzioni: o esegui la ricorsione tramite JSF (sembra complicato e brutto per la persona dell'interfaccia utente che ha bisogno di progettare la pagina), oppure esegui l'ordinamento sul lato server, fornendo al JSF le voci con indentazione aleardy.

Spero che questo aiuti,

Yishai

+0

sì, mi hai capito bene, le mie opzioni sono raggruppate in categorie e ognuna delle categorie ha anche alcune opzioni sotto di esse. –

0

Ma i gruppi nidificati non sono visualizzati correttamente. Appaiono come articoli non come gruppo.

albero