2012-08-26 12 views
6

Sono nuovo a Play2 (ho già sviluppato un progetto utilizzando Play1) e ho problemi con il binding di moduli da richiesta. La documentazione sui moduli è davvero leggera.Play Framework 2 Bind da richiesta

Ecco il codice del mio regolatore:

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

visualizzo città in un prescelto come questo:

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

Quando ho inviato il modulo, ho il seguente errore: {" city ​​": [" Valore non valido "]}

Quindi, ecco la mia domanda: Il raccoglitore sembra funzionare bene con campi semplici (ad esempio una proprietà String nel mio modello), ma per quanto riguarda @Man Sì alle relazioni?

Grazie.

risposta

9

Impostare il nome del campo di selezione come name="city.id"

+0

Grazie per la risposta. Ho modificato il mio codice come hai detto ma non è migliore. Quando stampo form.toString() questo è quello che ho: Form (of = class models.analytic.Estimation, data = {amount = 125, city.id = 1}, value = Some (null >> 125.0) , errori = {}) Ma quando provo a salvare l'oggetto (form.get()) ho un errore di convalida con il vincolo NotNull nel campo Città ... Hai qualche idea? Grazie ancora;) – c4k

+0

Ci scusiamo dopo ulteriori indagini, la tua risposta risolve il mio problema. Infatti, ho provato a salvare direttamente l'oggetto form.get() ma ho un campo nel bean che è richiesto e non nella forma quindi il suo valore era sempre nullo. L'ho risolto impostando questo campo nel controller prima di salvare l'entità (se può aiutare qualcun altro che ha questo problema;)) – c4k