如何从下拉列表中选择选项标签?

时间:2012-01-12 18:55:15

标签: jsp servlets drop-down-menu label

我正在开发一个简单的Web应用程序,我希望在下一个JSP页面上的HTML页面中获取下拉列表的选项标签。我正在使用MVC模式,因此Servlet作为控制器将请求重定向(转发?)到JSP视图。

request.getParameter()只给我选项值。但在我的情况下,选项值和标签是不同的。我如何获得选项标签?

2 个答案:

答案 0 :(得分:3)

您需要在服务器端维护选项值和标签的映射。例如。在一些ServletContextListener或者servlet的init()中:

Map<String, String> countries = new LinkedHashMap<String, String>();
countries.put("CW", "Curaçao");
countries.put("NL", "The Netherlands");
countries.put("US", "United States");
// ...

servletContext.setAttribute("countries", countries);

当您将其作为${countries}放入应用程序范围时,您可以按如下方式显示它:

<select name="country">
  <c:forEach items="${countries}" var="country">
    <option value="${country.key}">${country.value}</option>
  </c:forEach>
</select>

这样您就可以在服务器端获取标签,如下所示:

Map<String, String> countries = (Map<String, String>) getServletContext().getAttribute("countries");
// ...

String countryCode = request.getParameter("country");
String countryName = countries.get(countryCode);
// ...

或者在JSP中显示plain:

<p>Country code: ${param.country}</p>
<p>Country name: ${countries[param.country]}</p>

或预先选择下拉列表:

<select name="country">
  <c:forEach items="${countries}" var="country">
    <option value="${country.key}" ${param.country == country.key ? 'selected' : ''}>${country.value}</option>
  </c:forEach>
</select>

答案 1 :(得分:-3)

这可以在不在服务器端存储任何内容的情况下完成。

<select name="menu" id="menu">
<option value="1">label 1</option>
<option value="2">label 2</option>
</select>

<button onclick='show()'>Click me</button>

<script type="text/javascript">
function show(){
var theContents = document.getElementById('menu')[document.getElementById('menu').selectedIndex].innerText;
window.alert(theContents);
}
</script>