2017-07-25 21 views
0

私はフォームオブジェクトをサーバ側でサポートする、オブジェクトのコレクションに対応するネストされたフィールドセットのリストを持つフォームを持っています。フィールドセットは、クライアント側で追加または削除できます。私はコマンドオブジェクトにオブジェクトインデックスやスパースリストを気にせずにフォームを提出したい。Spring MVCフォームで配列フィールドを簡単に送信する方法は?

ここに私のコントローラメソッドのコードです:

<input name="prop[]"> 

、それが自動的にすべての値を$_POST["prop"]を移入します:PHP、Railsのなどで

@PostMapping("/foobar") 
public String doPost(FoobarForm form) { 
    //... 
} 

は、それは非常に簡単です。春のMVCでの作業

は、私はこれらの事を試してみました:

  1. <input name="prop[]"> - Invalid property 'prop[]' of bean class [...]: Invalid index in property path 'prop[]'; nested exception is java.lang.NumberFormatException: For input string: ""

  2. <input name="prop">を言っては動作しません - 場合でも、複数のリストに型指定されたBeanのプロパティにバインドしませんフィールドは存在する。

  3. <input name="prop[${i}]"> - クライアント側とサーバー側の両方で、疎なリストとインデックスの処理が面倒です。パワフルなWebフレームワークで作業するときは、確かに正しいことではありません。

私は、なぜ私は、プロパティ名に[]を使用し、春には、自動的にリストを作成させることはできません思ったんだけど?合理的な回答なしに、Spring JIRAのthree timesに尋ねられました。

+0

ビューリゾルバには何を使用していますか? Thymeleaf、JSP? –

+0

SpEl( '$ {prop}')を使う必要があります。 'prop'はどこから来ていますか?より良いヘルプを得るための完全なコードを表示する –

答えて

0

スプリングフォームバインディングを使用すると、これがより簡単になります。 BeanにListオブジェクトを追加し、jspでバウンドフォームを使用してそれをバインドする必要があります。 JSPで

class FoobarForm { 
    List<String> prop; 
} 

、あなたは一つ一つが、その後、インデックス<form:input path="prop[0]" />を使用見せたい.IF一旦<form:input path="prop" /> で/編集値すべてを表示する必要がある場合。フォームに適切なCommandNameを使用します。それが動作します。

関連する問題