2011-11-20 12 views
12

एक ऐप मैं Play का उपयोग करने पर काम कर रहा हूं! फ्रेमवर्क में एक ऑब्जेक्ट होता है जिसे बोलेन नामक बुलियन संपत्ति के साथ उपहार कहा जाता है। मैं अपने मूल्य पर चेकबॉक्स के रूप में इस मान की स्थिति कैसे दिखा सकता हूं? मैं कोशिश की है: -मैं प्ले में एक बुलियन के लिए एक चेकबॉक्स कैसे बांधूं! ढांचा

<input id="gift_Taken" class="" type="checkbox" name="gift.Taken" value="true" /> 
<input type="hidden" name="gift.Taken" value="false" /> 

उदाहरण मैं ऑटोजनरेटेड CRUD रूपों से देखा है पर आधारित है, लेकिन चेकबॉक्स चेक नहीं किया जाता है, जब संपत्ति, यह सच है, जो है जो मैं के लिए लक्ष्य कर रहा हूँ।

कोई भी इसे प्राप्त करने का सही तरीका जानता है?

+0

चेकबॉक्स पर बस 'value =' true 'सेट करें और अपने विधि हस्ताक्षर में एक पैरामीटर' बूलियन लिया 'जोड़ें, यह बाध्यकारी होगा। –

उत्तर

9

यदि मूल्य सही है, तो आपको चेकबॉक्स के विरुद्ध checked मान सेट करने की आवश्यकता है।

उदाहरण के लिए

(वस्तु देखने से में भेजा संभालने gift कहा जाता है, और बूलियन मान Taken कहा जाता है।

<input id="gift_Taken" type="checkbox" name="gift.Taken" ${gift.Taken ? 'checked':''} /> 
+0

परफेक्ट - मुझे टर्नरी ऑपरेटरों से प्यार है ;-) साइड नोट, उस पुस्तक को पाने के लिए –

+1

टर्नरी ऑपरेटर ग्रोवी में और भी शक्तिशाली है। एल्विस ऑपरेटर चेकआउट http://groovy.codehaus.org/Operators#Operators-ElvisOperator%28%3F%3A%29 – Codemwnci

+0

मैंने कोशिश की और यह काम नहीं किया। मैंने '<इनपुट प्रकार =" चेकबॉक्स "$ {true की कोशिश की? 'चेक किया गया': ''} /> 'इसलिए यह हर समय जांचना चाहिए था। लेकिन ऐसा नहीं है। कोई विचार क्यों? –

12

स्वीकार किए जाते हैं जवाब वास्तव में 100% सही नहीं इसे संभाल नहीं करता है के रूप में है । "अनियंत्रित" मामले दोनों ही मामलों आप एक छिपी हुई फ़ील्ड की जरूरत है संभाल करने के लिए:।

<input id="gift_Taken" type="checkbox" name="gift.Taken" ${gift.Taken ? 'checked':''} /> 
<input type="hidden" name="gift.Taken" value="false" /> 

नोट उसी प्लेसमेंट, महत्वपूर्ण होने के लिए तो छिपी हुई फ़ील्ड चेकबॉक्स के बाद होना चाहिए लगता है

, इस के लिए एक कस्टम टेम्पलेट टैग लेखन आसान बनाता है छिपे हुए इनपुट (में देखा गया/टैग/checkbox.html इस डाल) भूलना नहीं:

<input id="${_id}" type="checkbox" name="${_name}" value="true" #{if _checked} checked="checked" #{/if}> 
<input type="hidden" name="${_name}" value="false"> 

तो इस तरह इस टेम्पलेट फोन:

#{checkbox id:'gift_Taken', name: 'gift.Taken', checked: gift.Taken /} 

भी देखें खेलने ढांचे की सूची में संबंधित चर्चा: https://groups.google.com/forum/?fromgroups=#!topic/play-framework/HygQuYF3a8E

+0

हालांकि आदर्श नहीं है, दूसरा समाधान यह है कि मॉडल में गलत का डिफ़ॉल्ट मान उपयोग किया जाता है, सबमिट किए गए चेकबॉक्स मान की अनुपस्थिति को झूठी रूप में व्याख्या के रूप में व्याख्या किया जाएगा। लाल झंडे पूरे, लेकिन उल्लेख करने लायक है। – chris

+1

ऑर्डरिंग संकेत के लिए धन्यवाद (उदाहरण के लिए php एक ही समाधान का उपयोग करता है, लेकिन छुपा फ़ील्ड चेकबॉक्स से पहले रखा जाता है)! – Bachi

0

आप जावास्क्रिप्ट का उपयोग करने में सक्षम हैं, तो आप उपयोग कर सकते हैं:

$(document).ready(function() { 
    $(":checkbox").each(function() { 
     var name = $(this).attr("name"); 
     if(typeof(name) != "undefined") { 
      var checkboxString = ""; 
      checkboxString = '<input type="hidden" style="display:none;" name="'+ name +'" value="false" />' 
      $(this).after(checkboxString); 
     } 
    }); 
}); 
संबंधित मुद्दे