2011-12-08 16 views
14

// index.jspCosa restituisce request.getParameter?

<form method="post" action="backend.jsp"> 
<input type="text" name="one" /> 
<input type="submit value="Submit" /> 
</form> 

In backend.jsp che cosa request.getParameter ("uno"); ritorno?

request.getParameter("one").getClass().getName();

rendimenti java.lang.String, quindi deve essere una stringa giusto?

Tuttavia non posso fare

String one = request.getParameter("one"); 
if (!"".equals(one)) {} 

o

if (one != null) {} 

Questo è ovvio, perché una variabile non restituisce nulla. È

if (one.length() > 0) {} 

solo modo di andare, o ci sono soluzioni migliori o un approccio migliore? Sto considerando entrambe le soluzioni per essere su jsp. Usare un servlet (sebbene jsp sia un servlet) è un caso d'uso diverso in questo scenario.

+1

vi consiglio di leggere i javadoc prima di fare domande come questa. Salva il tempo di tutti. In questo caso specifico sembra che tu abbia fatto supposizioni errate e che la lettura di javadoc sia stata corretta. –

+1

Grazie per aver rinforzato il mio intento. Tranne il mio ultimo paragrafo, sto essenzialmente dicendo la stessa cosa che ho letto javadoc prima di commentare, in modo che le persone non commentassero frettolosamente o fuori dal campo di applicazione del problema. Volevo indirizzare le persone al terzo paragrafo dopo aver conosciuto queste basi. Non l'ho fatto direttamente, mi dispiace per quello. Saluti!! – Pramod

+0

perché stai dicendo che non possiamo fare gli altri due casi? – Jus12

risposta

29

Per il Javadoc:

Restituisce il valore di un parametro richiesta come una stringa, oppure null se il parametro non esiste.

Si noti che è possibile inviare un parametro vuoto, in modo tale che il parametro esista, ma non abbia valore. Ad esempio, potrei includere &log=&somethingElse nell'URL per abilitare la registrazione, senza dover specificare &log=true. In questo caso, il valore sarà una stringa vuota ("").

1

Sia if (one.length() > 0) {} e if (!"".equals(one)) {} controllerò contro un parametro foo vuoto, e un parametro vuoto è quello che si otterrebbe se il il modulo viene inviato senza alcun valore nel campo di testo foo.

Se è possibile utilizzare il linguaggio di espressione per gestire il parametro, è possibile accedere a con empty param.foo in un'espressione.

<c:if test='${not empty param.foo}'> 
    This page code gets rendered. 
</c:if> 
+0

Grazie per avermelo ricordato. Questa è davvero una bella soluzione (lo userò, se non risolverò questo problema a modo mio), ma ero più desideroso di sapere come la gente ha aggirato questo problema nel senso tradizionale. E.g Se ci sono alcuni casi in cui è possibile compromettere o interrompere il codice (ad esempio NullPointerException), solo quando si controlla la lunghezza. Restituisce String, ma mi sono perso qualcosa? – Pramod

+0

È possibile ottenere una NullPointerException se il modulo manca perché il parametro sarebbe nullo. – jbindel

4
String onevalue; 
if(request.getParameterMap().containsKey("one")!=false) 
{ 
onevalue=request.getParameter("one").toString(); 
} 
Problemi correlati