2010-11-18 14 views
11

JSF'de benim açılanmda ağaç benzeri bir yapı görüntülemek istiyorum. Temel olarak, seçilen öğeler bir hiyerarşi içerisindedir ve bunun, açılır menüde belirgin olmasını isterim.JSF Tree bir açılır kapanır içinde

Mümkün mü?

+0

ağaç. Bunun kullanımını görselleştiremiyorum, ayrıntılandırır mısınız?] –

+2

Aslında "h: selectOneMenu" ifadesinde olduğu gibi açılan kutucukta olduğu gibi (ki bu da düzenlenebilir bir açılır menüdür) farz ediyorum. – BalusC

cevap

24

Yani, temelde bir HTML <optgroup> ister misin? SelectItemGroup'u kullanın.

MTU fasulye (ben JSF 1.x varsayalım):

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); 
} 

MTU görünümü:

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

Oluşturulmuş HTML örneği:

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

tarayıcıda benziyor nasıl

alt text

+2

+1! –

+1

selectManyMenu için çalışıyor mu ??? Bunu selectManyMenu'da kullanmak istiyorum. – deepmoteria

+4

BalusC kayalar !!! – arthur

1

Ne istediğini anladığımdan emin değilim. Menüdeki alt kategorilerin biraz girintili olmasını istediğinizi varsayarsak? Böyle bir durumda, sunucu tarafı/işleyiciden, zaten bir "& nbsp" (boşluk) veya bir "-" ile ayrıştırılan öğe dizisini gönderme hakkında.
Başka bir deyişle, kategori hiyerarşisini ayrıştırmak ve anlamak için javascript'i kullanamazsınız. 2 seçeneğiniz var: ya JSF ile özyinelemeyi çalıştırın (sayfayı tasarlamak için ihtiyaç duyan kullanıcı arayüzü için karmaşık ve çirkin sesler) ya da sunucu tarafında sıralama yapın, JSF'yi girintili girintili girişlerle sağlayın. Bu yardımcı olur

Umut,

Yishai

+0

Evet, beni doğru yaptın, seçeneklerim kategoriler halinde gruplandırıldı ve kategorilerin her biri de altında bazı seçenekler var. Optgroup için –

0

Ancak iç içe geçmiş gruplar doğru şekilde görüntülenemiyor. Grup olarak değiller. Combo kutusunda