如何使用Java Play中的Form从JSON请求中解析Date对象

时间:2014-03-19 17:56:08

标签: java json date playframework-2.2

我遇到了在Java PLay 2.2.1中使用Form解析java.util.Date类型时出错的问题。我的示例类的模型是:

   @Entity
   public class SampleModel extends Model
  {      
  @Id
  Long id;

  @Temporal(javax.persistence.TemporalType.TIMESTAMP)
  @Required(message="endHour must be specified.")
  @Formats.DateTime(pattern="yyyyMMddhhmmss")

  private Date date;

  public setId(Long id){

    this.id = id;
  }

  public Long getId(){

    return this.id;
  }

  public setDate(Date date){

    this.date = date;
  }

  public Date getDate(){

      return this.date;
  }

}

在控制器中使用Form就像:

public class ControllerSample extends Controller{

   public static Result create(){

       JsonNode request = request().body().asJson();

       Form<SampleModel> form = Form.form(SampleModel.class).bind(request);

       if(form.hasErrors())
       {
          //It always get Errors with dates
       }
       ....

       return ok();
   }
}

最后,我发布的JSON就像这样:

{"date":"20140318120000"}

我找不到Form正确解析Date对象的方式。有人可以指导我吗?

1 个答案:

答案 0 :(得分:0)

您可以注册绑定表单和请求时将使用的custom databinder。 只需查看官方文档中的示例,您就可以安全地将LocalTime替换为Date

编辑:哦,不要忘记在格式&lt; - &gt;请求绑定之前注册数据透辑,以便它对绑定产生影响。