2011-06-02 12 views
16

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 usando y etiquetas, pero eso implicaría una gran cantidad de código if else else else en toda la página. ¿Alguien puede sugerirme una solución más limpia para este problema?
Verificación condicional de JSTL

<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> 

Respuesta

17

Puede tener varias 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 se puede utilizar la palabra clave empty hacer tanto un nullcheck y lengthcheck.

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

Eso es lo mejor que puede obtener, 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> 
+0

BalusC , Gracias por la respuesta. t0mcat

+0

En realidad acaba de darse cuenta, esto sigue siendo el mismo c: si. Para implementar c: elegir, todavía tenemos que pasar por la misma cantidad de declaraciones. ¿Derecha? – t0mcat

+0

Sí, básicamente. Esa es la recompensa. Si usabas un framework MVC como JSF, entonces podrías guardar el '' s usando el atributo 'rendered' en los componentes. P.ej. ''. – BalusC

0

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

"El nivel de la interfaz es relativamente libre de procesamiento de aplicaciones, ventanas o páginas web solicitud de tarea adelante a nivel medio" Graig Larman, Aplicación de UML y Patrones, tercera edición página 575 - Sistemas de información: la clásica arquitectura de tres niveles.

También hacer el control/validación a nivel del cliente antes de la persistencia de los datos ... pero supongo que si se heredados y páginas web son las únicas cosas que se pueden tocar ... esto hace sens