2012-02-16 18 views
5

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

<h:selectOneMenu /> 
<h:inputText /> 
<h:inputText /> 

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

मैं इसे कैसे प्राप्त कर सकता हूं?

उत्तर

8

बस ड्रॉपडाउन को दृश्य में बाध्य करें और सीधे required विशेषता में अपना मान देखें।

<h:selectOneMenu binding="#{menu}" value="#{bean.item}"> 
    <f:selectItem itemValue="first" itemLabel="First item" /> 
    <f:selectItem itemValue="second" itemLabel="Second item" /> 
</h:selectOneMenu> 

<h:inputText value="#{bean.input1}" required="#{menu.value eq 'first'}" /> 
<h:inputText value="#{bean.input2}" required="#{menu.value eq 'first'}" /> 

ध्यान दें कि binding उदाहरण जैसा है। पूरी तरह से इसे एक बीन संपत्ति में सेट न करें। यह भी देखें How does the 'binding' attribute work in JSF? When and how should it be used?

यह भी ध्यान रखें कि घटकों का क्रम महत्वपूर्ण है। यदि मेनू पेड़ में इनपुट के नीचे स्थित है, तो इसके बजाय #{menu.submittedValue eq 'first'} का उपयोग करें। या यदि आप उससे स्वतंत्र होना चाहते हैं, तो इसके बजाय #{param[menu.clientId] eq 'first'} का उपयोग करें।

+0

जब फ़ॉर्म सबमिट किया जाता , चयनऑनमेनू मान में सत्यापन होने पर नया मान लागू नहीं होगा। चयन पर 'तत्काल' विशेषता उस दौर में हो सकती है। – McDowell

+0

या घटक बाध्यकारी द्वारा, उपर्युक्त उदाहरण मानता है कि घटक इनपुट से पहले स्थित है। – BalusC

+0

ऐसा लगता है कि यह एक आसान समाधान है लेकिन दुर्भाग्यवश यह काम नहीं करता है। "Menu.value" पूरी तरह से "तत्काल" विशेषता है जो इसे selectOneMenu – user1213679

4

आप यह मानते हुए JSF 2.0 का उपयोग कर रहे हैं: अपने SelectOneListBox ajax के साथ निष्पादित करते हैं और सूची बॉक्स के परिवर्तन पर इनपुट फ़ील्ड फिर से प्रस्तुत करना:

एक त्वरित स्केच:

<h:selectOneMenu value="#{myBean.myMenuValue}"> 
    <f:ajax render="input1"/> 
    .. 
</h:selectOneMenu> 

<h:inputText id="input1" value="#{myBean.myInputValue}" 
      required="#{myBean.myMenuValue == 'firstEntry'}" />