Soy nuevo en Play2 (ya he desarrollado un proyecto con Play1) y tengo problemas con el enlace de formulario a petición. La documentación sobre formularios es muy liviana.Play Framework 2 Enlace desde solicitud
Aquí está el código de mi controlador:
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();
}
}
muestro ciudades en un selecto como esto:
<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>
Cuando envío del formulario, tengo el siguiente error: {" city ": [" Valor inválido "]}
Así que aquí está mi pregunta: La carpeta parece funcionar bien con campos simples (por ejemplo, una propiedad String en mi modelo), pero ¿qué pasa con @Man yToOne relaciones?
Gracias.
Gracias por la respuesta. Modifiqué mi código como dijiste, pero no es mejor. Cuando imprimo form.toString() esto es lo que tengo: Formulario (de = class models.analytic.Estimation, data = {amount = 125, city.id = 1}, value = Some (null >> 125.0) , errors = {}) Pero cuando intento guardar el objeto (form.get()) tengo un error de validación con la restricción NotNull en el campo Ciudad ... ¿Tiene alguna idea? Gracias de nuevo;) – c4k
Lo siento después de más investigación, su respuesta corrige mi problema. De hecho, traté de guardar directamente el objeto form.get() pero tengo un campo en el bean que se requiere y no en el formulario por lo que su valor siempre fue nulo. Lo arreglé estableciendo este campo en el controlador antes de guardar la entidad (si puede ayudar a alguien más que tenga este problema;)) – c4k