2012-01-12 8 views
2

私は、次のJSPページのHTMLページにあるドロップダウンリストのオプションラベルを取りたい単純なWebアプリケーションを開発しています。私はMVCパターンを使用しているので、ServletはコントローラとしてリクエストをJSPビューにリダイレクト(転送?)します。ドロップダウンリストからオプションラベルを選択する方法は?

request.getParameter()は私にオプションの値のみを与えます。しかし、私の場合、オプション値とラベルは異なっています。オプションラベルはどのように入手できますか?

+0

JSPから戻す方法はありません。 BalusCの答えによって示唆されるようにマッピングを維持する必要があります。 –

+0

@XCoder:ドロップダウンボックスに別のPOJOを記述し、を使用して次のJSPページで選択した値にアクセスできますか?出来ますか?親切に返信..thanks –

答えて

3

サーバー側でオプション値とラベルのマッピングを維持する必要があります。例えば。内部の一部ServletContextListenerまたは多分サーブレットの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を書いて、選択した値におよびを使用します。親切に返信 –

-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> 
関連する問題