2012-03-26 12 views
9

Sto tentando di compilare automaticamente un elenco a discesa in base a un parametro di richiesta. Sono abbastanza nuovo per JSP quindi perdonami per la semplice domanda.Request.getParameter con JSP

Di seguito funziona bene e visualizza l'avviso correttamente:

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

quindi so quello che sto cercando di fare è abbastanza facile. Ma quando aggiungo questa stessa logica con la mia dichiarazione prescelta utilizzando:

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

ottengo un'eccezione dicendo "La getParameter funzione deve essere utilizzata con un prefisso quando un namespace predefinito non è specificato".

Sono un po 'confuso sul motivo per cui questo non funziona qui ...

Grazie in anticipo

+0

avete dichiarato la vostra taglib ('<% @ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>')? –

+0

Sì, in realtà avevo. Buona risposta sotto – Fraser

risposta

12

request.getParameter() non risolti da EL. È possibile accedere ai parametri di richiesta utilizzando la variabile implicita param. cioè, ${param.lang}

Modificare questa

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

a

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

Grazie. Molto nuovo per JSP quindi non lo sapevo. – Fraser

+1

a cosa serve

+0

sì! perché '' invece di '$ {inglese}'? – tusar

3

un altro modo:

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

    English 
</option> 

Assicurarsi di aver aggiunto c-taglibs URI in cima alla JSP.

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