2012-08-26 32 views
6

Play2'de (Play1'i kullanarak zaten bir proje geliştirdim) yeniyim ve formun formüle bağlanmasında sorun yaşıyorum. Formlarla ilgili belgeler gerçekten çok açık.Play Framework 2 İstek formu formu ile gönder

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(); 
    } 
} 

Ben bu kadar seçkin bir şehirler görüntüler:

<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> 

Ben formu gönderdiğinizde, aşağıdaki hata var: {" İşte

benim kumandanın kodudur şehir ": [" Geçersiz değer "]}

İşte benim sorum şu: Bağlayıcı basit alanlar (örneğin modelimde bir String özelliği) ile iyi çalışıyor gibi görünüyor, ama @Man hakkında ne hakkında yToOne ilişkileri?

Teşekkür ederiz.

cevap

9

Seçim alanının adını name="city.id"

+0

olarak ayarlayın. Yanıtınız için teşekkür ederiz. Kodumu dediğin gibi değiştirdim ama daha iyi değil. Form.toString() yazdırdığımda, sahip olduğum şey: Form (= sınıf model.analytic.Estimation, data = {amount = 125, city.id = 1}, value = Bazı (boş değer 125.0) , error = {}) Nesneyi kaydetmeyi denediğimde (form.get()) City alanında NotNull kısıtlaması olan bir doğrulama hatası var ... Herhangi bir fikrin var mı? Tekrar teşekkür ederim;) – c4k

+0

Daha fazla araştırmadan sonra üzgünüm, cevabım sorunumu düzeltir. Aslında, form.get() nesnesini doğrudan kaydetmeyi denedim ancak değerin her zaman boş olması için formda değil, gerekli olan bir alanda fasulye var. Bu alanı, kurumu kaydetmeden önce denetleyicide ayarlayarak düzelttim (bu soruna sahip başka birine yardımcı olabilirse;)) – c4k