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")
我正在尝试在我的 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")