Spring MVC表单不从下拉列表返回值

时间:2013-02-28 19:21:01

标签: forms spring spring-mvc

我是一个老servlet / html人。我知道这应该是如此直截了当,但我无法找到我想要做的例子。也许我的方法是错误的,但我会很感激一些建议。

我可以使用带有List<>的Spring表单标记加载下拉列表我从表中检索到的键和值,但是当提交表单时,我得到一个EMPTY列表<> (大小= 0)。我能够从表单中检索答案(input = text)。

我的控制器:

    @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>    

我在想它可能与??

有关

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

您错过了name上的form:select属性。要使它与@ModelAttribute("questionsList")一起使用,它必须是:

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

虽然我真的不鼓励这一点,因为它会导致很多与路径属性的混淆,路径属性的目的完全不同。

此外,您的帖子数据将仅包含与选择名称相关联的选定值(例如:questionsList:1),因此将其设置为列表并没有多大意义。

你可以这样试试:

JSP:

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

控制器:

public ModelAndView processForm(@ModelAttribute("answer1") String answer1, @ModelAttribute("questionId") Integer questionId) {