2012-08-26 39 views
6

Tôi mới dùng Play2 (Tôi đã phát triển một dự án bằng Play1) và tôi gặp vấn đề với việc ràng buộc biểu mẫu từ yêu cầu. Tài liệu về các biểu mẫu thật sự rất nhẹ.Chơi Khung 2 Hình thức liên kết theo yêu cầu

Đây là mã của bộ điều khiển của tôi:

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

tôi hiển thị các thành phố trong một lựa chọn như thế này:

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

Khi tôi gửi biểu mẫu, tôi có lỗi sau: {" thành phố ": [" Giá trị không hợp lệ "]}

Vì vậy, đây là câu hỏi của tôi: Chất kết dính dường như hoạt động tốt với các trường đơn giản (ví dụ: thuộc tính Chuỗi trong mô hình của tôi), nhưng về @Man yToOne mối quan hệ?

Cảm ơn bạn.

Trả lời

9

Đặt tên của trường chọn là name="city.id"

+0

Cảm ơn bạn đã trả lời. Tôi đã sửa đổi mã của tôi như bạn đã nói nhưng nó không tốt hơn. Khi tôi in form.toString(), đây là những gì tôi có: Biểu mẫu (của = class models.analytic.Estimation, data = {amount = 125, city.id = 1}, value = Some (null >> 125.0) , errors = {}) Nhưng khi tôi cố gắng lưu đối tượng (form.get()) Tôi có lỗi xác thực với ràng buộc NotNull trên trường Thành phố ... Bạn có ý tưởng gì không? Cảm ơn bạn một lần nữa;) – c4k

+0

Xin lỗi sau khi điều tra thêm, câu trả lời của bạn sẽ khắc phục được sự cố của tôi. Trong thực tế, tôi đã cố gắng lưu trực tiếp đối tượng form.get() nhưng tôi có một trường trong bean được yêu cầu và không có trong biểu mẫu để giá trị của nó luôn luôn rỗng. Tôi đã sửa nó bằng cách thiết lập trường này trong bộ điều khiển trước khi lưu thực thể (nếu nó có thể giúp người khác có vấn đề này;)) – c4k

Các vấn đề liên quan