1

我是一个老 servlet/html 人。我知道这应该如此简单,但我找不到我正在尝试做的事情的例子。也许我的方法是错误的,但希望得到一些建议。

我可以使用 Spring 表单标记加载下拉列表,其中包含我从表中检索到的键和值的 List<>,但是当提交表单时,我得到一个 EMPTY List<> (size=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 属性的很多混淆,它具有完全不同的目的。

此外,您的帖子数据将仅包含与选择名称关联的选定值(例如:questionsList: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 回答