如何从播放框架中的表单中读取日期

时间:2014-01-06 21:02:56

标签: java playframework

我班上有Date expirationDate字段。我还在表单中选择了日期/月/年

的下拉菜单
<select class="form-control" value="@form("day")" >
            <option>dd</option>
            @for(a <- 1 to 31) {
            <option>@a</option>
            }
</select>
<select class="form-control" value="@form("month")" >
            <option>mm</option>
            @for(a <- 1 to 12) {
            <option>@a</option>
            }
</select>
<select class="form-control" value="@form("year")" >
            <option>yyyy</option>
            @for(a <- 2014 to 2100) {
            <option>@a</option>
            }
</select>

如何将此数据绑定到控制器中的java.util.Date类型?更具体地说

public static Result createScenarioPOST() throws ParseException {
    User user=User.find
            .where().eq("email", session("email")).findUnique();

    Form<Creation> createForm = Form.form(Creation.class)
            .bindFromRequest();
    if (createForm.hasErrors()) {
        return badRequest(createScenario.render(createForm, user));
    } else {
        return redirect(routes.Application.index());
    }
}

1 个答案:

答案 0 :(得分:0)

这里的困难来自于为日/月/年字段分别设置输入字段。由于Play的Form映射到单个值,因此您无法使用它们映射到单个值。

使用Form映射(并验证!)各个值,然后按照通常创建Date的方式构建Date

更简单的方法是将日期设为单个表单值,例如使用<input type="date">输入字段。如果你真的必须有单独的字段并且真的想将它绑定到单个字段,你可以考虑使用JavaScript将单独的字段连接到表单提交上的单个值。