我有一个freemarker页面,我需要从条目列表中发布条目。
为了克服spring.formInput和freemarker列表(see problem here)的问题,我按以下方式构造html表单:
<#list entries as entry>
<@form.form method="POST" commandName="receiver">
<@spring.formInput "entries.entry[${entry_index}].name"/>
<@spring.formInput "entries.entry[${entry_index}].value"/>
</@form.form>
</#list>
我的控制器看起来像这样:
@RequestMapping(method=POST, params="save")
public String save(@ModelAttribute(value="entries") @Valid Entries entries, BindingResult result, Model model){
/*notice, we always get the last item in the list, since the entries "carries" the index of the form through, and creates
* null-object in the first n places
*/
int index = entries.size()-1;
Entry entry = entries.get(index);
if (!result.hasErrors()) {
formService.save(entry);
}
return "";
}
不幸的是,每当我发布一个条目而不是列表中的第一个条目时,@ Valid注释会导致错误。
这是因为spring会自动使用空值填充我的列表,直到当前索引。