2011-12-08 66 views
14

// index.jsp¿Qué devuelve request.getParameter?

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

En backend.jsp lo que hace request.getParameter ("uno"); ¿regreso?

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

vuelve java.lang.String, por lo que debe ser una cadena correcta?

sin embargo no puedo hacer

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

o

if (one != null) {} 

Esto es obvio, debido a una variable no vuelve nula. ¿Es

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

único camino a seguir, o hay mejores soluciones o un mejor enfoque? Estoy considerando ambas soluciones estar en jsp. El uso de un servlet (aunque jsp es un servlet) es un caso de uso diferente en este escenario.

+1

Te recomendamos leer atentamente las javadocs antes de hacer preguntas como esta. Ahorra el tiempo de todos. En este caso particular parece que has hecho suposiciones que son incorrectas, y que la lectura del javadoc se habría corregido. –

+1

Gracias por reforzar mi intención. Excepto mi último párrafo, básicamente estoy diciendo lo mismo, es decir, leo javadoc antes de comentar, para que la gente no haga comentarios apresurados o fuera del alcance del problema. Quería dirigir a las personas al tercer párrafo después de conocer estos conceptos básicos. No lo hice directamente, lo siento por eso. ¡¡Aclamaciones!! – Pramod

+0

¿por qué dice que no podemos hacer los otros dos casos? – Jus12

Respuesta

29

por la Javadoc:

Devuelve el valor de un parámetro de la petición como una cadena, o null si el parámetro no existe.

Tenga en cuenta que es posible enviar un parámetro vacío, de manera que el parámetro existe, pero no tiene ningún valor. Por ejemplo, podría incluir &log=&somethingElse en la URL para habilitar el registro, sin la necesidad de especificar &log=true. En este caso, el valor será una cadena vacía ("").

1

Tanto if (one.length() > 0) {} y if (!"".equals(one)) {} comprobará contra un parámetro foo vacío, y un parámetro vacío es lo que se obtendría si el formulario se envía sin ningún valor en el campo foo texto.

Si existe la posibilidad de que pueda usar el Lenguaje de Expresión para manejar el parámetro, puede acceder a él con empty param.foo en una expresión.

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

Gracias por recordarme esto. Esta es realmente una buena solución (la usaré, si no soluciono este problema a mi manera), pero estaba más ansioso de saber cómo la gente solucionó este problema en el sentido tradicional. Por ejemplo, si hay algunos casos en los que podría comprometer o romper el código (por ejemplo, NullPointerException), solo al verificar la longitud. Devuelve String, pero ¿extrañé algo? – Pramod

+0

Puede obtener una NullPointerException si falta el formulario porque el parámetro sería nulo. – jbindel

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