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