0

我有一个 freemarker 页面,我需要从条目列表中发布一个条目。

为了克服 spring.formInput 和 freemarker 列表的问题(请参阅问题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 自动使用 null 值填充我的列表,直到当前索引。

  • 我更愿意发布条目而不是条目,但我认为这不能做到。
  • 或者,如何停止对列表中的前 n-1 个条目进行验证?
  • 或者,我可以以某种方式测试列表(索引)中的哪个对象导致错误,这样我就可以避免前 n-1 个条目中的错误?
4

1 回答 1

0

几个月前我也遇到过类似的问题。但是我在使用LazyList时遇到了问题。也许你会在这个问题中找到你的答案。希望这对您有所帮助。

于 2012-10-31T12:50:58.113 回答