1

登録フォームを作成しようとしています。このフォームには、いくつかのフィールド (ユーザー名、パスワードなど) とドロップダウン リストボックスがあります。私の問題はこのリストボックスにあります.リストボックスに追加されるすべてのアイテムをサーバーから正常に取得できましたが、それをこのフォームに入れることを知りたいです.

より具体的には、リストボックスに追加したいアイテムを含む lista というリストがあります。

JSP:

<c:url var="attinto" value="/reg" />
<form:form modelAttribute="attribute" method="POST" action="${attinto}">
<table>
    .
            .

    <tr>
        <td><form:label path="researchareas">Research area:</form:label></td>
        <td>    
          <select multiple="multiple">   
            <c:forEach items="${researchareas}" var="researcharea">     
              <option value="${researcharea}">  ${researcharea} </option>                   
            </c:forEach>
          </select>    
        </td> 
    </tr>

コントローラ:

    @RequestMapping(value = "/reg", method = RequestMethod.GET)
    public String getform(Model model) {

        getAll(model);
        model.addAttribute("attribute", new Reg());

        return "reg";
    }

この時点で、getAll(model) は次のような void メソッドであることを言及する必要があります。

      model.addAttribute("researchareas",lista);

次に、このデータを送信する POST メソッドを作成します。

質問:リストのデータをフォームに追加するにはどうすればよいですか (リストボックスに)?ユーザーが選択する値を取り戻すにはどうすればよいですか?

4

2 に答える 2

2

まず、次のform:selectように使用します。

<form:select path="researchareas" items="${researchareas}" multiple="true" />

次に、Spring は登録オブジェクトの対応する属性を自動的にバインドできます。

@RequestMapping(value = "/registration", method = RequestMethod.POST)
public String getRegistrationForm( //
    @ModelAttribute("registrationAttribute") Registration registration, //
    BindingResult result, Model model) {
  ...
  return ...
}

登録クラスには次のものがあると仮定します。

public class Registration {
  String username;
  String password;
  List<String> researchareas;

  ... corresponding getters and setters here
}

属性にクラスと同じ名前を付けますが、そうしないと、メソッドパラメーターの注釈で明示的な名前を指定する必要があります。

于 2012-05-14T18:03:16.963 に答える
2

jsp のフォームにpostメソッドを指定し、コントローラーにもmethod=RequestMethod.POSTを指定してください。

もう一つ。

登録クラスの researchareas のデータ型としてリストがあってはなりません。データ型をString[]として指定してみてください

これがうまくいくことを願っています。乾杯。

于 2012-05-15T09:43:40.093 に答える