2012-03-26 7 views
9

Próbuję automatycznie wypełnić listę rozwijaną na podstawie parametru żądania. Jestem całkiem nowy w JSP, więc wybacz mi proste pytanie.Request.getParameter z JSP

Następujące działa prawidłowo i wyświetla alert poprawnie:

alert('<%=request.getParameter("lang") %>'); 

Więc wiem co próbuję zrobić, to dosyć proste. Ale kiedy dodać tę samą logikę w moim select używając:

<option <c:if test="${request.getParameter(\"lang\")=='En'}"> selected="selected" </c:if> value="<c:out value="${english}"/>">English</option> 

uzyskać wyjątek mówiący „Funkcja getParameter musi być używany z przedrostkiem gdy domyślna przestrzeń nazw nie jest określony”.

jestem trochę zdezorientowany, dlaczego to nie działa tutaj ...

góry dzięki

+0

pan ogłosił swoją TagLib ('<% @ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>')? –

+0

Tak, rzeczywiście. Dobra odpowiedź poniżej – Fraser

Odpowiedz

12

request.getParameter() nie zostaną rozwiązane przez EL. Do parametru żądania można uzyskać dostęp za pomocą domyślnej zmiennej param. tj, ${param.lang}

Zmiana ta

<option <c:if test="${request.getParameter(\"lang\")=='En'}"> selected="selected" </c:if> value="<c:out value="${english}"/>">English</option> 

do

<option <c:if test="${param.lang == 'En'}"> selected="selected" </c:if> value="${english}">English</option> 
+0

Dzięki. Bardzo nowość w JSP, więc nie wiedziałem o tym. – Fraser

+1

Jaki jest pożytek z

+0

tak! dlaczego '' zamiast '$ {english}'? – tusar

3

inny sposób:

<option <c:if test='${param[lang] == "En"}'> selected="selected" </c:if> 
    value="${english}"> 

    English 
</option> 

Upewnij się, że zostały dodane c-taglibs URI na górze JSP.

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>