3

フォームに同じタイプのフィールドを可変量配置する必要があります。コマンドオブジェクトがあるとしましょう

public class Person
  String name;
  String surname;

// getters and setters

とjsp

<form:form command="personCommand">
  <form:input path="name"/>
  <form:input path="surname"/>
</form:form>

これは、静的な数のフィールドがある場合の標準的な方法です。しかし、次のようなものがある場合はどうなりますか

<form:form command="personCommand">
  <c:forEach items="${persons}">
    <form:input path="name"/>
    <form:input path="surname"/>
  </c:forEach>
</form:form>

(これはもちろん間違っています)人数が事前にわからない場合は?Spring でフィールドを配列またはリストにバインドする方法はありますか? または、ある種の回避策(現在、フィールドをjavascriptで連結し、プログラムでそれらを分離していますが、これは醜いです)。

4

1 に答える 1

1

クラス(PersonWrapper)を作成し、そのクラスの変数として人物のリストを含めることができます。次に、JSPでは、次の構文を使用できます

<c:forEach items="${personWrapper.persons}" varStatus="i">
  <form:input path="persons[${i.index}].name"/>
  <form:input path="persons[${i.index}].surname"/>
</c:forEach>

次に、コントローラーで、リストの値を取得できます

于 2012-12-06T08:54:38.637 に答える