0

我对 play2 中的表格有疑问。

模型:

@Id private ObjectId id;

形式

<input name="id" id="id" type="hidden" value="@guidesForm.field("id").value()">

我无法初始化 id 字段,bindFromRequest()它总是为空的。而且我只能使用 ObjectId 而不是字符串进行查询。

ObjectId id = new ObjectId(form().bindFromRequest().get("id"));

这是 objectid 的正确构造函数。如您所见,这是我不使用的解决方法,guideForm.bindFromRequest();我只需要直接绑定它。

这感觉有点hacky。是我可以使用正常绑定的解决方案吗?

Form<Myclass> guideForm = form(Myclass.class);
Form<Myclass> filledForm = guideForm.bindFromRequest();
4

1 回答 1

1

尝试在全局对象的 onStart() 中注册一个自定义 DataBinder :

Formatters.register(ObjectId.class, new SimpleFormatter<ObjectId>() {

    @Override
    public ObjectId parse(String input, Locale l) throws ParseException {

        return ...; // create the object from the input of the form
    }

    @Override
    public String print(ObjectId objectId, Locale l) {
        return String.valueOf(objectId.id);
    }

});

该文档位于本页末尾:http ://www.playframework.org/documentation/2.0.3/JavaForms

于 2012-09-10T11:45:06.377 回答