1

私は古いサーブレット/html のやつです。私はこれがとても簡単であることを知っていますが、私がやろうとしていることの例を見つけることができません. 私のやり方が間違っているかもしれませんが、アドバイスをいただければ幸いです。

テーブルから取得したキーと値の List<> を持つ Spring フォーム タグを使用してドロップダウン リストをロードできますが、フォームが送信されると EMPTY List<> (サイズ = 0) が返されます。フォームから回答 (入力 = テキスト) を取得できます。

私のコントローラー:

    @RequestMapping(value = "/getQuestions", method = RequestMethod.GET)
public ModelAndView getQuestionsPage() {
    List<Question> questionsList = questionDAO.getAll();
    return new ModelAndView("questions", "questionsList", questionsList);
}

    @RequestMapping(method = RequestMethod.POST)
public ModelAndView processForm(@ModelAttribute("answer1") String answer1, @ModelAttribute("questionsList") java.util.ArrayList question) {
    ModelAndView model = new ModelAndView("home");
    return model;
}

jsp のフォーム セクション:

<form action="questions" method="post" modelAttribute="questionsList">

<table>
    <tr>
        <td>Questions :</td>
        <td><form:select path="questionsList">
            <form:option value="0" label="Select" />
            <form:options items="${questionsList}" itemValue="id" itemLabel="question" />
            </form:select>
        </td>
    </tr>
    <tr>
        <td>Answer :</td>
        <td><input type="text" name="answer1"></td>
    <tr>
        <td><input type="submit" /></td>
    </tr>   
</table>    

私はそれが??と関係があるのではないかと考えています。

どんな助けでも大歓迎です!

4

1 に答える 1

1

nameの属性がありませんform:select。それが動作する@ModelAttribute("questionsList")ためには、次のようなものでなければなりません:

<form:select path="questionsList" name="questionsList">

これは本当にお勧めできませんが、目的がまったく異なる path 属性と多くの混乱を招くためです。

さらに、投稿データには選択名 (例: questionList:1) に関連付けられた選択値のみが含まれるため、これをリストに設定してもあまり意味がありません。

次のように試すことができます。

JSP:

<form:select path="questionsList" name="questionId">

コントローラ:

public ModelAndView processForm(@ModelAttribute("answer1") String answer1, @ModelAttribute("questionId") Integer questionId) {
于 2013-02-28T20:57:03.500 に答える