エントリのリストからエントリを投稿する必要がある freemarker ページがあります。
spring.formInput および freemarker リストに関する問題を克服するために (ここで問題を参照)、次の方法で 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 注釈によってエラーが発生します。
これは、春が現在のインデックスまで null 値をリストに自動的に入力するために発生します。
- エントリーではなくエントリーを投稿したいのですが、これはできないと思います。
- または、リストの最初の n-1 エントリで検証が行われないようにするにはどうすればよいですか?
- または、リスト (インデックス) 内のどのオブジェクトがエラーを引き起こしたのかを何らかの方法でテストして、最初の n-1 エントリからのエラーを回避できるようにすることはできますか?