Spring MVC的形式不是从下拉列表中返回值(Spring MVC form not retur

2019-10-17 18:06发布

我是一个老的servlet / HTML的家伙。 我知道这应该是如此直截了当,但我无法找到什么,我试图做一个例子。 也许我的做法是错误的,但希望得到一些建议。

我能够加载一个下拉列表中使用Spring的表单标签与我从一个表中检索键和值的列表<>,但表单提交时,我得到一个空的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>    

我想可能有一些做的?

任何帮助将不胜感激!

Answer 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) {


文章来源: Spring MVC form not returning value from dropdown list