0

我正在使用播放!java项目上的framework 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()用其他方法做的时候一切正常。

谢谢!!

4

1 回答 1

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");

尽管文档说属性名称不是强制性的。

于 2013-01-09T16:02:55.367 回答