播放2.0表单日期验证失败

时间:2012-06-22 09:47:42

标签: validation date model playframework-2.0

我正在使用“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的一个问题吗?

谢谢你。

干杯,

1 个答案:

答案 0 :(得分:0)

我认为你必须定义日期的格式。有关自定义格式化程序,请参阅Play Framework 2.0: Custom formatters。可能需要自定义绑定器,请参阅https://groups.google.com/d/topic/play-framework/Xi2xAiCnINs/discussion 正如一些暗示给你一个方向。希望有人可以给你一个更好的答案。