2012-01-12 2 views
2

다음 JSP 페이지의 HTML 페이지에서 드롭 다운 목록의 옵션 레이블을 가져 오려는 간단한 웹 응용 프로그램을 개발 중입니다. MVC 패턴을 사용하고 있으므로 Servlet이 컨트롤러로 요청을 JSP보기로 리디렉션 (전달) 할 것입니다.드롭 다운 목록에서 옵션 레이블을 선택하는 방법은 무엇입니까?

request.getParameter()은 나에게 옵션 값만 제공합니다. 하지만 제 경우에는 옵션 값과 레이블이 다릅니다. 옵션 레이블은 어떻게 얻을 수 있습니까?

+0

JSP에서 다시 가져올 방법이 없습니다. BalusC의 대답에 따라 맵핑을 유지해야합니다. –

+0

@XCoder : 드롭 다운 상자에 대해 별도의 POJO를 작성하고 , , 를 사용하여 다음 JSP 페이지에서 선택한 값에 액세스 할 수 있습니까? 가능한가? 친절 하 게 회신. 감사합니다 –

답변

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> 
관련 문제