Play Framework 2根据请求绑定表单

时间:2012-08-26 18:55:18

标签: forms binding playframework-2.0

我是Play2的新用户(我已经使用Play1开发了一个项目),我遇到了来自请求的表单绑定问题。 关于表单的文档非常简单。

这是我的控制器的代码:

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

我在选择中显示城市:

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

当我提交表单时,出现以下错误: {“city”:[“无效的值”]}

所以这是我的问题:绑定器似乎适用于简单字段(例如我的模型中的String属性),但是@ManyToOne关系呢?

谢谢。

1 个答案:

答案 0 :(得分:9)

将选择字段的名称设置为name="city.id"