我是一个老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>
我在想它可能与??
有关非常感谢任何帮助!
答案 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) {