如何使用java spring从select输入选项中检索文本

时间:2016-09-21 19:25:45

标签: java spring jsp http spring-mvc

我有一个带有表单中选择输入的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传递给控制器​​,该怎么办?我该如何检索?

1 个答案:

答案 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