尝试将过滤器表单添加到标准crud'list'页面。
// set filter defaults
ImageFilter defaultFilter = new ImageFilter();
defaultFilter.setYear(currentYear);
defaultFilter.setColor(user.getFavouriteColor());
// get filter for view
Form<ImageFilter> form = Form.form(ImageFilter.class).fill(defaultFilter).bindFromRequest();
ImageFilter filter = form.get()
设置默认值的适当方法是什么?
理想情况下,在索引页面上:
答案 0 :(得分:0)
检查是否存在默认值,然后选择流程。 如果不存在,则使用querystring params将其设置为过滤器或在UI上进行渲染。
答案 1 :(得分:0)
您可以通过将代码分成两个动作来实现您的目标。
在第一个表格中,您使用默认过滤器填写表格并将其显示给用户。
public static Result show() {
ImageFilter defaultFilter = new ImageFilter();
defaultFilter.setYear(currentYear);
defaultFilter.setColor(user.getFavouriteColor());
Form<ImageFilter> form = Form.form(ImageFilter.class).fill(defaultFilter);
return ok(index.render(form));
}
在第二个操作中,您只需绑定请求中的表单值即可。如果用户更改某些值,则表单将填充它们以及设置为默认值的未更改值。
public static Result handle() {
Form<ImageFilter> form = Form.form(ImageFilter.class).bindFromRequest();
ImageFilter filter = form.get();
return ok("TODO handle form");
}
修改强>
如果您想在用户输入后使用默认值填充缺少的字段而不在提交之前在视图中显示它们,我担心您必须在绑定后手动执行此操作。