我有一个带有表单中选择输入的JSP,如下所示:
<form method="post" action="/confirm">
<select id="dropdown" name="dropdown">
<option value="1">1st choice</option>
<option value="2">2nd choice</option>
<option value="3">3rd choice</option>
</select>
<input type="submit" value="submit" name="submit" />
</form>
我有一个弹簧控制器,可以按如下方式处理这个表格:
@RequestMapping(value = "/confirm", method = RequestMethod.POST)
public ModelAndView confirm(@RequestParam int dropdown,
HttpServletRequest request,
Model model)
{
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("selection", dropdown);
modelAndView.setViewName("confirm");
return modelAndView;
}
在我的确认视图中,如果我想显示下拉选项的值,那么我可以这样做:
<div id="dropselection">${selection}</div>
例如,如果用户选择了第一个选项“第一选择”,则传递给确认页面的值将为1
。
但是,如果我想传递select标签选项中的文本值怎么办?如果用户选择了第一个选项并且我需要将值1st choice
传递给控制器,该怎么办?我该如何检索?
答案 0 :(得分:1)
您无法检索该值。在表单提交中,它只传递select,input标签的值属性。
有两个选项
1.您可以将值字段文本更改为描述
如果您的硬代码只是将其更改为
<option value="3rd choice">3rd choice</option>
如果你有动态代码,那么你可以使用这种方法
List<Answer> answerList=new ArrayList<Answer>();
Answer answer=new Answer();
answer.setAnswerId(3);
answer.setDescription(3rd choice);
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("answerList", answerList);
<select id="dropdown" name="dropdown">
<option value="">Select</option>
<c:forEach items="${answerList}" var="answer" varStatus="answerStatus">
<option value="${answer.description}" label="${answer.description}"/>
</c:forEach>
</select>
或保持选项不变,在控制器级别,您可以从下拉请求参数中获取该值(例如:3)
然后你可以循环回答列表(answerList)并在控制器级别找到值。
<c:forEach items="${answerList}" var="answer" varStatus="answerStatus">
<option value="${answer.answerId}" label="${answer.description}"/>
</c:forEach>
请注意
answer.answerId=3
answer.description=3rd choice