2012-08-26 28 views
6

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.

Respuesta

9

Establezca el nombre del campo de selección como name="city.id"

+0

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

+0

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