我正在開發一個簡單的Web應用程序,我想在下一個JSP頁面的HTML頁面中選擇下拉列表的選項標籤。我使用MVC模式,因此Servlet作爲控制器將重定向(轉發?)請求到JSP視圖。如何從下拉列表中選擇選項標籤?
request.getParameter()
僅給出了選項值。但在我的情況下,期權價值和標籤是不同的。我如何獲得選項標籤?
我正在開發一個簡單的Web應用程序,我想在下一個JSP頁面的HTML頁面中選擇下拉列表的選項標籤。我使用MVC模式,因此Servlet作爲控制器將重定向(轉發?)請求到JSP視圖。如何從下拉列表中選擇選項標籤?
request.getParameter()
僅給出了選項值。但在我的情況下,期權價值和標籤是不同的。我如何獲得選項標籤?
您需要在服務器端維護選項值和標籤的映射。例如。裏面的一些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>
非常感謝編輯和回答問題......我有點困惑如何把我的問題..我們不能寫一個單獨的下拉框POJO和訪問選定的值使用
這可以在不存儲在服務器端的東西來完成。
<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>
您無法從JSP中取回它。您必須按照BalusC的答案建議的方式維護一個映射。 – 2012-01-12 20:35:44
@XCoder:我們可以爲下拉框編寫一個單獨的POJO,並使用,,訪問在下一個JSP頁面上選擇的值。可能嗎?請回復..謝謝 –
2012-01-13 05:45:23