Play 框架中的时间字段

Time field in Play Framework

我正在尝试在我的 Java Play Framework 应用程序中创建简单的时间字段。我准备了 class:

public class Schedule extends AbstractEntity {

@Temporal(TemporalType.TIME)
public Date arrival;

@Temporal(TemporalType.TIME)
    public Date departure;

@Enumerated(EnumType.STRING)
    public Variant variant;

}

我尝试通过此模板获取一些出发和到达时间:

 <div class="modal-body">
                @helper.form(action = routes.TripTimesController.addSchedule(trip)) {
                    @helper.inputText(scheduleForm("arrival"), '_label -> "Arrival", '_type ->"time")

                    @helper.inputText(scheduleForm("departure"), '_label -> "Destination", '_type ->"time" )

                    <select name="variant">
                    @for(variant <- Variant.values()){
                        <option value="@variant.name()">@variant.name()</option>
                    }
                    </select>

                </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                <button type="submit" class="btn btn-primary">Save changes</button>
            </div>
            }

无论我输入什么,我都无法通过验证,而且总是得到表单错误的信息:

 Form<Schedule> form = Form.form(Schedule.class).bindFromRequest();
        if(form.hasErrors()) {
            ...
        }

Play 中正确的时间格式是什么?是否有任何可用于强制正确格式化的时间助手?

bindFromRequest 期待 yyyy-MM-dd 代表。要添加自定义表示(长转换或 "yyyy-MM-dd HH:mm:SS")的编组,您必须使用自定义 DataBinder。

几个月前我为它打开了一个ticket about a similar issue on GitHub,最后我把我的绑定贴在这里。

但是,正如已经指出的那样,如果您想支持来自 SimpleDateFormat 的特定日期格式,您可以只使用注释:@play.data.format.Formats.DateTime

所以在你的情况下,只有一次是 "HH:mm:ss":@Formats.DateTime(pattern = "HH:mm:ss")