我正在使用“Play 2.0”-Framework(v.2.0.1)并遇到日期值表单验证的麻烦。
我的模型代码的和平:
@Entity
public class Appointment extends Model {
public Date start;
public Date end;
}
我的模板代码的和平:
<input type="text" id="start" name="start" placeholder="yyyy-mm-dd" />
<!-- ALSO tested with chrome beta v. 20 with html5 support-->
<input type="date" id="end" name="end" placeholder="yyyy-mm-dd" />
我的控制器:
public class Appointment extends Controller {
static Form<Appointment> appointmentForm = form(Appointment.class);
//on calling form page
public static Result create() {
return ok(create.render("create", appointmentForm));
}
//called on saving form data
public static Result save() {
Form<Appointment> filledForm = appointmentForm.bindFromRequest();
if (filledForm.hasErrors()) {
return badRequest(
create.render("create", filledForm)
);
} else {
Appointment.create(filledForm.get());
return redirect(routes.Appointment.index());
}
}
}
如果我通过jquery ui datepicker选择日期或以“yyyy-mm-dd”格式输入自己或者无关紧要,但必须是正确的格式我在控制器中遇到验证错误save() -method检查“filledForm.hasErrors()”和错误消息“错误的日期格式”。
我认为它会自动转换为播放,所以我不需要自己添加转换。我该怎么做才能解决这个问题?它仍然是Play 2.0的一个问题吗?
谢谢你。
干杯,
马
答案 0 :(得分:0)
我认为你必须定义日期的格式。有关自定义格式化程序,请参阅Play Framework 2.0: Custom formatters。可能需要自定义绑定器,请参阅https://groups.google.com/d/topic/play-framework/Xi2xAiCnINs/discussion 正如一些暗示给你一个方向。希望有人可以给你一个更好的答案。