一尘不染

Spring MVC表单未从下拉列表中返回值

spring-mvc

我是servlet / html的老家伙。我知道这应该很简单,但是我找不到我想做的事的例子。也许我的方法是错误的,但希望您能提供一些建议。

我能够使用Spring表单标签加载一个下拉列表,其中包含从表中检索的键和值的List <>,但是提交表单时,我得到了一个EMPTY List <>(大小=
0)。我能够从表单中检索答案(输入=文本)。

我的Contoller:

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

我认为这可能与??有关

任何帮助将不胜感激!


阅读 257

收藏
2020-06-01

共1个答案

一尘不染

您缺少的name属性form:select。要使其正常工作,@ModelAttribute("questionsList")它必须类似于:

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

尽管我确实不鼓励这样做,但是由于它与path属性引起了很多混淆,而path属性的目的却完全不同。

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

您可以这样尝试:

JSP:

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

控制器:

public ModelAndView processForm(@ModelAttribute("answer1") String answer1, @ModelAttribute("questionId") Integer questionId) {
2020-06-01