2012-01-25 15 views
21

¿Se puede hacer una instrucción if-then-else dentro de una expresión JSP?If-then-else dentro de una expresión JSP?

EDIT: En concreto, estaba buscando una solución JSP, no una solución JSTL. Pero algunas de las soluciones de JSTL a continuación tienen una calificación alta y son bienvenidas. Solo por favor no me vote por una pregunta duplicada porque a uno ya le han preguntado sobre JSTL.

+2

Sí. http://stackoverflow.com/questions/4587397/how-to-use-if-else-option-in-jstl –

+0

@Simon, estaba pidiendo JSP no JSTL. (No estoy seguro si estoy utilizando la terminología adecuada.) – Xonatron

Respuesta

22

Si está utilizando JSTL puede elegir -cuando-de otro modo.

<c:choose> 
    <c:when test="condition"></c:when> 
    <c:when test="condition2"></c:when> 
    <c:otherwise></c:otherwise> 
</c:choose> 

Para obtener más información sobre JSTL tratar here.

+0

Gracias por esto, pero estaba buscando una solución JSP, no una solución JSTL. Finalmente no estoy seguro si importa o no para mi proyecto, pero todavía no estoy familiarizado con JSTL. – Xonatron

+1

JSTL agrega mucha funcionalidad ... si está haciendo su UI con JSPs, probablemente valga la pena examinarla. Es muy simple comenzar. – Michael

+0

Gracias por esto. Puede que tenga que investigarlo. Parece que maneja cadenas de escape basadas en web fácilmente también. Parece que está diseñado muy bien para aplicaciones web. Como dije, nunca lo he usado, así que esto es lo que parece. De hecho, estoy un poco confundido entre JSP Scriptlets y JSP Expressions y JSTL. A medida que los uso, espero conocer el propósito y el lugar de cada uno. La elección entre uno y otro hasta ahora parece ser de elegancia. Cuál es el propósito de mi pregunta en realidad. – Xonatron

28

En JSP EL 2.0, puede hacerlo utilizando el operador ternario. Por ejemplo:

<option value="1" ${param.number == 1 ? 'selected' : ''}>First option</option> 

Lo que hace es que comprueba la variable numberparam 's de JSP. Si es 1, entonces el seleccionado es sustituido. de lo contrario, nada.

+0

Me gusta esto. Pero no estoy seguro de qué se trata. No es una Expresión JSP. ¿Puedo acceder a las variables desde mi Scriptlet JSP aquí? (Estoy intentando en este momento y estoy fallando.) – Xonatron

+0

El 'param' contiene todas las variables del scriptlet. 'param.number' simplemente accederá al valor del' número'. –

+0

Tengo 'boolean even' en mi JSP Scriplet, pero' param.even' no parece tener acceso a él. 'even' cambia de' true' a 'false' en cada fila, y cuando uso' $ {param.even == true? 'par': 'impar'} 'o' $ {param.even? 'par': 'impar'} 'todo lo que obtengo es 'impar' para la salida una y otra vez. – Xonatron

11

se puede envolver el código HTML con etiquetas JSP como esto:

<% if (condition) { %> 
<div>Condition is true!</div> 
<% } else { %> 
<div>Condition is false</div> 
<% } %> 
+0

Me gusta esto también. Esta es en realidad mi solución actual! Pero está usando scriptlets JSP, no expresiones JSP. Solo quería la solución más elegante. – Xonatron

0

hay una manera diferente, porque yo uso Eclipse me dicen que no puede resolver una variable que está llegando desde el servlet mientras ejecución que se encuentra por debajo (PD: Soy nuevo en JSP):

${if(var != null)"text to print"} 
${if(var != null)var} to print a variable 
${if(var != null)"text to print"} 

el resultado será como

texto para imprimir < var valor aquí > texto para imprimir

Cuestiones relacionadas