我是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>
我认为这可能与??有关
任何帮助将不胜感激!
您缺少的name属性form:select。要使其正常工作,@ModelAttribute("questionsList")它必须类似于:
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) {