Как получить метку выбранного параметра из выпадающего списка? - PullRequest
2 голосов
/ 12 января 2012

Я занимаюсь разработкой простого веб-приложения, в котором я хочу использовать метку параметра раскрывающегося списка на странице HTML на следующей странице JSP. Я использую шаблон MVC и, таким образом, сервлет в качестве контроллера будет перенаправлять (пересылать?) Запрос в представление JSP.

request.getParameter() дает мне только значение опции. Но в моем случае значение параметра и метка разные. Как я могу получить метку опции?

Ответы [ 2 ]

3 голосов
/ 12 января 2012

Необходимо поддерживать сопоставление значений параметров и меток на стороне сервера. Например. внутри какой-то ServletContextListener или, возможно, сервлета 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:

<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>
0 голосов
/ 08 марта 2012

Это можно сделать, не сохраняя ничего на стороне сервера.

<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>
...