when test tag switch multiple examples else choose jsp jstl el

jsp - test - jstl if else



JSTL condicional comprueba (2)

Intento poner la menor lógica posible en mis páginas web,

"El nivel de interfaz es relativamente libre de procesamiento de aplicaciones; las ventanas o páginas web envían la solicitud de tarea al nivel intermedio" Graig Larman, Aplicación de UML y patrones tercera edición página 575 - Sistemas de información: la arquitectura clásica de tres niveles.

También realice el control / validación en el nivel del cliente antes de conservar los datos ... pero supongo que si es heredado y las páginas web son las únicas cosas que puede tocar ... esto hace que sea sensato.

En mi página actual, estoy usando JSTL para verificar si hay datos disponibles para mi formulario. El problema al que me enfrento es "si no hay datos, tampoco veo los campos de texto". Puedo resolverlo utilizando etiquetas y etiquetas, pero eso implicaría mucho, si no, más o menos una especie de código a lo largo de la página. ¿Alguien puede sugerirme una solución mejor limpia para este problema?

<c:if test="${salesData!=null}"> <c:if test="${fn:length(salesBundle.salesArea) > 0}"> <input type="text" id="sales_area" class="salesManagerStyle"> </c:if> </c:if>


Puedes tener múltiples condiciones en una test .

<c:if test="${salesData != null && fn:length(salesBundle.salesArea) > 0}"> <input type="text" id="sales_area" class="salesManagerStyle"> </c:if>

Pero también puede utilizar la palabra clave empty para realizar una comprobación nula y una comprobación de longitud.

<c:if test="${not empty salesData.salesArea}"> <input type="text" id="sales_area" class="salesManagerStyle"> </c:if>

Eso es lo mejor que puedes conseguir, ahora. Si necesita reutilizar la misma condición en otra parte de la página, también puede guardarla en <c:set> .

<c:set var="hasSalesData" value="${not empty salesData.salesArea}" /> ... <c:if test="${hasSalesData}"> <input type="text" id="sales_area" class="salesManagerStyle"> </c:if> ... <c:if test="${hasSalesData}"> Foo </c:if>