2013-02-12 35 views
5

का चयनित मान प्राप्त करना मैं एक जेएसएफ पृष्ठ पर घटक "SelectOneMenu" का परीक्षण कर रहा हूं। मैं इस घटक को द्विपक्षीय रूप से पॉप्युलेट कर रहा हूं हालांकि मेरा प्रबंधनबीन (जो डेटाबेस से सभी पशु प्राप्त करेगा)।एक SelectOneMenu

मैं जानना चाहता हूं कि उपयोगकर्ता को "SelectOneMenu" (combobox) के चयनित आइटम को देखना संभव है, मैं मूल्य = "# {animalsManage.animalSelect}" के साथ प्रयास कर रहा हूं लेकिन इसे केवल शुरुआत में ही कहा जाता है पृष्ठ का साथ ही, मैं "SelectOneMenu" के चयनित अंतर के मान को देखने के लिए इनपुट टेक्स्ट का उपयोग कर रहा हूं।

मैं क्या गलत कर रहा हूं?

JSF:

<body> 
    <ui:component> 
     <h:form> 
        <h:outputText value="Select one Mets File" /> 
        <h:selectOneMenu id="combo" value="#{animalsManage.animalSelected}"> 
         <f:selectItem itemLabel="Select..." noSelectionOption="true"/> 
         <f:selectItems value="#{animalsManage.allAnimals}" /> 
        </h:selectOneMenu> 
        <h:inputText id="textbox" value="#{animalsManage.animalSelected }" /> 
     </h:form> 
    </ui:component> 
</body> 

ManageBean:

@ManagedBean 
    @ViewScoped 
    public class AnimalsManage implements Serializable { 

    @EJB 
    private AnimalsFacadeREST animalsFacadeREST; 
    private String animalSelected; 
    private List< SelectItem> selectAnimals; 

    public List<SelectItem> getAllAnimals() { 
      List<Animals> al = animalsFacadeREST.findAll(); 
      selectAnimals = new ArrayList< SelectItem>(); 
      int i = 0; 
      for (Animals animal: al) { 
       selectAnimals.add(new SelectItem(i, animal.getName())); 
       i++; 
      } 
      return selectAnimals; 
    } 

    public String getAnimalSelected() { 
     return animalSelected; 
    } 

    public void setAnimalSelected(String animalSelected) { 
     this.animalSelected = animalSelected; 
    } 
} 
+0

आप केवल के साथ "f" के रूप में एक f: AJAX जोड़ सकते हैं और "@form" के साथ एक रेंडर विशेषता भी प्रदान कर सकते हैं। यह आपके चयनित मान को टेक्स्टबॉक्स में दिखा सकता है। इस तरह कुछ ** <एफ: AJAX घटना = "परिवर्तन" रेंडर = "@ फॉर्म"> **। कोशिश करो। –

+0

'# {fileManage.fileName}' क्या है? वैसे, एक '' एक ड्रॉपडाउन प्रस्तुत करता है, एक combobox नहीं। अपनी शर्तों को सीधे प्राप्त करें। आखिरी लेकिन कम से कम नहीं, एक गेटर में व्यवसाय तर्क प्रदर्शन खराब है। '' का उपयोग करने के तरीके के बारे में कुछ संकेतों के लिए, अपने विकी पेज को चेक करें (अपने माउस को '[selectonemenu]' टैग के शीर्ष पर रखें जिसे आपने प्रश्न पर रखा है जब तक कि एक काला बॉक्स दिखाई न दे और फिर उस पर क्लिक करें * जानकारी * लिंक)। – BalusC

+0

धन्यवाद हेमंथ ने मदद की। इसके अलावा, धन्यवाद बलुससी मैंने पाठ को संपादित किया आशा है कि यह ठीक है। – iGoDa

उत्तर

12

प्रस्तुत समस्या के लिए कई समाधान कर रहे हैं। मैं यहां दो बुनियादी विचार प्रस्तुत करता हूं।

  1. सर्वर-साइड समाधान। सीधे शब्दों में, चयनित मूल्यों और rerender उपयोगकर्ता की पसंद अद्यतन करने के लिए की तरह में

    <h:selectOneMenu id="combo" value="#{animalsManage.animalSelected}"> 
        <f:selectItem itemLabel="Select..." noSelectionOption="true"/> 
        <f:selectItems value="#{animalsManage.allAnimals}" /> 
        <f:ajax execute="combo" render="textbox" /> 
    </h:selectOneMenu> 
    <h:inputText id="textbox" value="#{animalsManage.animalSelected }" /> 
    

    आप चाहें, तो आप भी कुछ कस्टम तर्क चयनित तत्व के साथ ajax श्रोता में <f:ajax> टैग की listener="#{animalsManage.performCustomAjaxLogic}" निर्दिष्ट करके ऐसा कर सकते हैं अपने <h:selectOneMenu> अंदर <f:ajax> टैग देते हैं।

  2. क्लाइंट-साइड समाधान। बुनियादी परिवर्तन घटना पर आईडी = "टेक्स्टबॉक्स" के साथ बस तत्व अपडेट करें। इसलिए, यदि आप jQuery का उपयोग करते हैं तो समाधान

    $('#combo').change(function() { 
        $('#textbox').val($('#combo').val()); 
    }); 
    

    सोचा था कि क्लाइंट-साइड समाधान आपके इनपुट घटक के केवल टेक्स्ट मान को बाध्य करेगा।

+0

धन्यवाद यह काम किया! मैं जो चाहता था उसे प्राप्त करने के लिए एजेक्स के साथ श्रोता का उपयोग करने के लिए पसंद किया। इसके अलावा, मुझे mojarra में कोई समस्या नहीं थी जिसे सर्वर को रोकने के लिए बनाया गया था और मेरा कोड नहीं चला सका। – iGoDa

+0

खुशी है कि यह आपकी मदद की। – skuntsel

+0

वैसे, आप जिस उत्तर को सबसे उपयोगी पाते हैं उसे स्वीकार कर सकते हैं। – skuntsel