2012-01-12 4 views
2

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

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

+0

Вы не можете вернуть его с JSP. Вы должны поддерживать отображение, как это было предложено в ответе BalusC. –

+0

@XCoder: можем ли мы написать отдельный POJO для раскрывающегося списка и получить доступ к значению, выбранному на следующей странице JSP, с помощью , , ? Является ли это возможным? Просьба ответить .. спасибо –

ответ

3

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

большое спасибо за редактирование и ответ на вопрос ... Я был немного смущен, как задать свой вопрос .. Разве мы не можем написать отдельный POJO для выпадающего списка и получить доступ к выбранному значению с помощью и на странице JSP? Пожалуйста, ответьте –

-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> 
Смежные вопросы