2010-11-18 18 views
11

मैं जेएसएफ में अपने ड्रॉपडाउन में संरचना जैसे पेड़ को प्रदर्शित करना चाहता हूं। असल में चुनिंदा आइटम पदानुक्रम में हैं और मैं ड्रॉपडाउन में यह स्पष्ट होना चाहता हूं।जेएसएफ ट्री ड्रॉपडाउन

क्या यह संभव है?

+0

पेड़। मैं इसका उपयोग कल्पना नहीं कर सकता, क्या आप विस्तृत कर सकते हैं] –

+2

मुझे लगता है कि वह वास्तव में 'एच: selectOneMenu' में ड्रॉपडाउन का मतलब है, combobox नहीं (जो एक संपादन योग्य ड्रॉपडाउन है)। – BalusC

उत्तर

24

तो, आप मूल रूप से एक एचटीएमएल <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> 

जनरेट किया गया एचटीएमएल उदाहरण:

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

+1

क्या यह selectManyMenu के लिए काम करता है ??? मैं इसे selectManyMenu में उपयोग करना चाहता हूं। – deepmoteria

+4

बलुस चट्टानों !!! – arthur

1

मुझे यकीन नहीं है कि मैं समझ रहा हूं कि आप क्या पूछ रहे हैं। मान लीजिए कि आप मेनू में उप श्रेणियों को थोड़ा इंडेंट करना चाहते हैं? यदि ऐसा है, सर्वर-साइड/हैंडलर से पहले से ही "& nbsp" (स्पेस) या "-" के साथ पार्स किए गए आइटमों की सरणी से भेजने के बारे में।
दूसरे शब्दों में, आप श्रेणी पदानुक्रम को पार्स और समझने के लिए जावास्क्रिप्ट का उपयोग नहीं कर सकते हैं। आपके पास 2 विकल्प हैं - या तो जेएसएफ के माध्यम से रिकर्सन चलाएं (यूआई व्यक्ति के लिए बदसूरत और बदसूरत लगता है, जो पेज को डिज़ाइन करने की ज़रूरत है), या सर्वर पक्ष पर सॉर्टिंग करें, जेएसएफ को अशिष्ट इंडेंट प्रविष्टियों के साथ प्रदान करें।

आशा इस मदद करता है,

Yishai

+0

हाँ आपने मुझे सही पाया है, मेरे विकल्प श्रेणियों में समूहित हैं और प्रत्येक श्रेणी में उनके अंतर्गत कुछ विकल्प भी हैं। Optgroup के लिए –

0

लेकिन नेस्टेड समूहों को सही ढंग से कल्पना नहीं की जाती है। वे आइटम के रूप में नहीं समूह के रूप में दिखाई देते हैं। कॉम्बो बॉक्स में