si...si no dentro de JSP o JSTL
Quiero generar un código HTML basado en alguna condición en un archivo JSP.
if (condition 1) {
Some HTML code specific for condition 1
}
else if (condition 2) {
Some HTML code specific for condition 2
}
¿Cómo puedo hacer eso? ¿Debería utilizar JSTL?
Aceptado
¿Debería utilizar JSTL?
Sí.
Puede usar etiquetas <c:if>
y <c:choose>
para realizar renderizado condicional en jsp usando JSTL.
Para simular if , puedes usar:
<c:if test="condition"></c:if>
Para simular if...else , puedes usar:
<c:choose>
<c:when test="${param.enter=='1'}">
pizza.
<br />
</c:when>
<c:otherwise>
pizzas.
<br />
</c:otherwise>
</c:choose>
Si solo desea generar texto diferente, un ejemplo más conciso sería
${condition ? 'some text when true' : 'some text when false'}
Es mucho más corto que c:choose .
La construcción para esto es:
<c:choose>
<c:when test="${..}">...</c:when> <!-- if condition -->
<c:when test="${..}">...</c:when> <!-- else if condition -->
<c:otherwise>...</c:otherwise> <!-- else condition -->
</c:choose>
Si la condición no es costosa, a veces prefiero simplemente usar dos <c:if
etiquetas distintas, ya que hace que sea más fácil de leer.
En caso de que quieras comparar cadenas , escribe el siguiente JSTL:
<c:choose>
<c:when test="${myvar.equals('foo')}">
...
</c:when>
<c:when test="${myvar.equals('bar')}">
...
</c:when>
<c:otherwise>
...
</c:otherwise>
</c:choose>
<%@ taglib prefix='c' uri='http://java.sun.com/jsp/jstl/core' %>
<c:set var="val" value="5"/>
<c:choose>
<c:when test="${val == '5'}">
Value is 5
</c:when>
<c:otherwise>
Value is not 5
</c:otherwise>
</c:choose>