1

検索して検索しても、まだ解決策を見つけることができませんでした。

Spring 3.1 の使用

ユーザーが複数の連絡先 (poc) を追加できるようにしたいフォームがあります。私の JSP には、poc を追加するための送信ボタンがあります。Spring Controller に移動し、ドメイン オブジェクト (最初は空) から現在の poc のリストを取得し、poc をリストに追加してから、同じビューに戻る前にドメイン オブジェクトをモデルに戻します。次に、ユーザーは最終的にページ全体を送信します。これはコントローラーに送られ、オブジェクト全体が永続化されます。

私はさまざまな試みを試みましたが、新しい poc を 1 つだけ追加して既存の poc を上書きできることから、入力した poc をフォームに表示できないことまで、さまざまな結果が得られました。現在持っているコードを載せておきます。

JSP:

<form:form method="post" commandName="request">

   ...

   <h2>POC:</h2>
   <input type="text" name="newPoc"/>
   <input type="submit" name="addPoc" value="Add POC"/>

   <table>
        ...
        <c:forEach items="${request.pointOfContacts}" var="poc" varStatus="vs">
             <tr>
                 <td><form:label path="pointOfContacts[${vs.index}].name/></td>
                  .....
        </c:forEach>

        ......

    </table>

</form:form>

スプリング コントローラー:

@RequestMapping(value="/request", method=RequestMethod.POST, param="addPoc")
public Sring addPoc(@RequestParam String newPoc, MyRequest req, Model model) {
   PointOfContact poc = new PointOfContact();
   poc.setName(newPoc);
   List<PointOfContact> pocs = req.getPointOfContacts();
   pocs.add(poc);
   req.setPointOfContacts(pocs);
   model.addAttribute("request", req);
   return "requestForm";
}

ドメイン オブジェクト

@Entity
public class MyRequest {
   ...

   @OneToMany(Cascade=CascadeType.ALL)
   private List<PointOfContact> pointOfContacts = new ArrayList<PointOfContact>();

   .....
}

@Entity
public class PointOfContact {
   ...

   private String name;

  ....
}

誰にも解決策はありますか?AutoPopulatingList に関するさまざまな投稿を見てきましたが、これは解決策ですか? もしそうなら、この例でどのように使用しますか。

4

1 に答える 1

5

はい、例AutoPopulatingList を使用する必要があります。これには、MyRequest エンティティの変更が必要になります。

于 2012-07-13T14:51:19.363 に答える