2012-01-12 115 views
2

我正在開發一個簡單的Web應用程序,我想在下一個JSP頁面的HTML頁面中選擇下拉列表的選項標籤。我使用MVC模式,因此Servlet作爲控制器將重定向(轉發?)請求到JSP視圖。如何從下拉列表中選擇選項標籤?

request.getParameter()僅給出了選項值。但在我的情況下,期權價值和標籤是不同的。我如何獲得選項標籤?

+0

您無法從JSP中取回它。您必須按照BalusC的答案建議的方式維護一個映射。 – 2012-01-12 20:35:44

+0

@XCoder:我們可以爲下拉框編寫一個單獨的POJO,並使用訪問在下一個JSP頁面上選擇的值。可能嗎?請回復..謝謝 – 2012-01-13 05:45:23

回答

3

您需要在服務器端維護選項值和標籤的映射。例如。裏面的一些ServletContextListener或者是servlet的init()

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

這樣,您就能夠獲得:

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},那麼你可以用下列方式顯示它在服務器側標記如下:

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頁面上的 ??請回復 – 2012-01-13 05:42:45

-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> 
相關問題