2013-02-10 47 views
6

मैं JSF पेज है, जो मैं जगह में कोड निम्नलिखित है एक चेकबॉक्स पर क्लिक करने के लिए उपयोगकर्ताओं की आवश्यकता है (लाइसेंस समझौते को स्वीकार करने के समान) लेखन:JSF selectBooleanCheckbox आवश्यक = सच की पुष्टि नहीं करता है, तो चेकबॉक्स चयनित है

<h:selectBooleanCheckbox value="#{checkBoxManagedBean.checkBoxValue}" required="true" id="jsfcheckBox" > 
</h:selectBooleanCheckbox> 
<h:outputLabel value="accept rule label" for="jsfcheckBox" /> 
<h:message for="jsfcheckBox"/> 
<br/> 
<h:commandButton id="loginButton" value="Submit" 
    action="#{checkBoxManagedBean.testAction}"/> 

मैं आवश्यक = सत्य सेट कर रहा हूं, लेकिन चेकबॉक्स के लिए कोई सत्यापन नहीं हो रहा है। मुझे चेकबॉक्स के लिए पृष्ठ में प्रदर्शित होने वाला कोई भी संदेश दिखाई नहीं देता है।

मैंने कोशिश की है f: validateRequired, यहां तक ​​कि यह काम नहीं कर रहा है।

<h:selectBooleanCheckbox value="#{checkBoxManagedBean.checkBoxValue}" required="true" id="jsfcheckBox" > 
     <f:validateRequired for="jsfcheckBox"></f:validateRequired> 
     </h:selectBooleanCheckbox> 
     <h:outputLabel value="CheckBox label" for="jsfcheckBox" /> 
     <h:message for="jsfcheckBox"/> 
     <br/> 
     <h:commandButton id="loginButton" value="Submit" 
        action="#{checkBoxManagedBean.testAction}"/> 

पेज does not को किसी भी समय इस मुद्दे को, चेकबॉक्स, बटन सब कुछ दिखाई दे रहा है, मेरी उम्मीद एक सत्यापन संदेश, इससे पहले कि बटन दबाया जाता है जब चेकबॉक्स चयनित नहीं है हो रही है।

बीटीडब्ल्यू, क्या यह जेएसएफ विनिर्देश है कि आवश्यक = सत्य वास्तव में किसी भी सत्यापन को निष्पादित नहीं करता है ??

+0

आवश्यक = सत्य मान्य है कि मान खाली नहीं है, दोनों 'सत्य' और 'झूठी' खाली मान नहीं हैं, इसलिए सत्यापन पास हो जाता है। यदि आप चेकबॉक्स को चेक करना चाहते हैं, तो किसी अन्य प्रकार के सत्यापनकर्ता का उपयोग किया जाना चाहिए। – Osw

उत्तर

17

required=true जेएसएफ इनपुट फ़ील्ड के लिए इसका मतलब है कि फ़ील्ड का मान खाली या शून्य नहीं होना चाहिए। यह जेएसएफ कार्यान्वयन में बग की तरह लगता है, लेकिन जब h:selectBooleanCheckbox चेक नहीं किया गया है, तो यह मान false है और खाली नहीं है या null है। तो यह सत्यापन को ट्रिगर नहीं करता है। BalusC has written a nice post about this here। उन्होंने इसके लिए एक वैधकर्ता लागू किया जो आपको स्थिति को दूर करने में मदद करता है। धन्यवाद BalusC

+3

यह ओमनीफेस में भी है: http://showcase.omnifaces.org/validators/RequiredCheckboxValidator – BalusC