在模板中渲染填充的表单

时间:2013-01-08 17:23:40

标签: java playframework-2.0

我正在玩Play! java项目上的框架20,我将表单传递给视图时遇到问题。

在控制器中,我有以下代码:

Filter filter = new Filter();
//add some state to the filter object
Form<Filter> filterForm = form(Filter.class).fill(filter);
Logger.info("FilterForm: " + filterForm.get().toString()); // So far so good
return ok(filterView.render(filterForm));

在模板中:

@filterForm.hasErrors() // renders false
@filterForm.data().isEmpty() // renders true!!
@*  @filterForm.get().toString()  *@ throws an Exception: No Value

如果在控制器中我通过Map填充过滤器状态,我也会得到相同的错误:

filterForm = filterForm.bind(aMapWithTheState);

仅当在代码中填充过滤器时才会出现此行为。当我在其他方法中filterForm.bindFromRequest()时,一切正常。

谢谢!

1 个答案:

答案 0 :(得分:0)

解决。

我必须使用表单的bind方法,使用我之前使用状态的地图。但正确的方法是传递属性名称:

Map<String, String> formState = new HashMap<String, String>();
formState.put("name", name);
formState.put("birthDate", birthDate);
formState.put("address", address);

filterForm = filterForm.bind(formState, "name", "birthDate", "address");

尽管documentation表示属性名称不是强制性的。