2012-08-26 21 views
6

मैं Play2 के लिए नया हूं (मैंने पहले से ही Play1 का उपयोग कर एक प्रोजेक्ट विकसित किया है) और मुझे अनुरोध से बाध्यकारी फ़ॉर्म के साथ समस्याएं हैं। रूपों के बारे में प्रलेखन वास्तव में हल्का है।अनुरोध से फ्रेमवर्क 2 बाइंड फॉर्म

private final static Form<Estimation> estimationForm = form(Estimation.class); 

/** 
* Get an estimation by form 
* @return 
*/ 
public static Result estimation() { 
    return ok(views.html.rate.estimation.render(
     estimationForm, 
     City.findAll() 
    )); 
} 

/** 
* Display estimation results 
* @return 
*/ 
public static Result results() { 
    if (request().method().equals("POST")) { 
     Form<Estimation> form = estimationForm.bindFromRequest(); 
     if (form.hasErrors()) { 
      System.out.println(form.errorsAsJson().toString()); 
      return ok(views.html.rate.estimation.render(
       form 
       City.findAll() 
      )); 
     } 
     else { 
      System.out.println(form.get()); 
      return ok(views.html.rate.results.render(

      )); 
     } 
    } 
    else { 
     return estimation(); 
    } 
} 

मैं इस के रूप में एक चयन में शहरों प्रदर्शित:

<select id="city" name="city">  
    <option value="1">Paris, France</option> 
    <option value="2">Lyon, France</option> 
    <option value="3">Marseille, France</option> 
    <option value="4">Barcelona, Spain</option> 
    <option value="5">Berlin, Germany</option> 
</select> 

जब मैं फ़ॉर्म सबमिट करेंगे, मैं निम्नलिखित त्रुटि है: { "

यहाँ मेरी नियंत्रक के कोड है शहर ": [" अमान्य मूल्य "]}

तो मेरा प्रश्न यह है कि: बाइंडर सरल क्षेत्रों के साथ अच्छी तरह से काम करता प्रतीत होता है (उदाहरण के लिए मेरे मॉडल में एक स्ट्रिंग प्रॉपर्टी), लेकिन @Man के बारे में क्या ytoOne संबंध?

धन्यवाद।

उत्तर

9

चुनिंदा क्षेत्र का नाम name="city.id"

+0

उत्तर के लिए धन्यवाद। मैंने आपके कोड को संशोधित किया जैसा आपने कहा था लेकिन यह बेहतर नहीं है। जब मैं form.toString() को प्रिंट करता हूं, तो यह मेरे पास है: फॉर्म (= वर्ग मॉडल.एनालिटिक.एस्टिमेशन, डेटा = {राशि = 125, city.id = 1}, मान = कुछ (शून्य >> 125.0) , त्रुटियों = {}) लेकिन जब मैं ऑब्जेक्ट को सहेजने का प्रयास करता हूं (form.get()) मेरे पास सिटी फ़ील्ड पर NotNull बाधा के साथ एक सत्यापन त्रुटि है ... क्या आपके पास कोई विचार है? फिर से धन्यवाद;) – c4k

+0

अधिक जांच के बाद खेद है, आपका उत्तर मेरी समस्या को हल करता है। असल में, मैंने सीधे form.get() ऑब्जेक्ट को सहेजने की कोशिश की लेकिन मेरे पास बीन में एक फ़ील्ड है जो आवश्यक है और फॉर्म में नहीं है, इसलिए इसका मान हमेशा शून्य था। मैंने इकाई को सहेजने से पहले इस क्षेत्र को नियंत्रक में सेट करके तय किया है (यदि यह किसी और की मदद कर सकता है जिसकी समस्या है;)) – c4k