tag lib fmt jsp jstl el

jsp - lib - prefix jstl



Evaluar etiquetas c JSTL vacĂ­as o nulas (8)

¿Cómo puedo validar si una String es nula o está vacía usando las etiquetas c de JSTL ?

Tengo una variable de nombre var1 y puedo mostrarla, pero quiero agregar un comparador para validarlo.

<c:out value="${var1}" />

Quiero validar cuando está nulo o vacío (mis valores son cadenas).


¿Cómo puedo validar si una cadena es nula o está vacía usando las etiquetas c de JSTL?

Puede usar la palabra clave empty en un <c:if> para esto:

<c:if test="${empty var1}"> var1 is empty or null. </c:if> <c:if test="${not empty var1}"> var1 is NOT empty or null. </c:if>

O el <c:choose> :

<c:choose> <c:when test="${empty var1}"> var1 is empty or null. </c:when> <c:otherwise> var1 is NOT empty or null. </c:otherwise> </c:choose>

O si no necesita generar condicionalmente un grupo de etiquetas y, por lo tanto, solo puede verificarlo dentro de un atributo de etiqueta, entonces puede usar el operador condicional EL ${condition? valueIfTrue : valueIfFalse} ${condition? valueIfTrue : valueIfFalse} :

<c:out value="${empty var1 ? ''var1 is empty or null'' : ''var1 is NOT empty or null''}" />

Para obtener más información sobre esas cosas de ${} (el lenguaje de expresión , que es un tema aparte de JSTL ), marque aquí .

Ver también:


Aquí está el trazador de líneas.

Operador ternario dentro de EL

${empty value?''value is empty or null'':''value is NOT empty or null''}


Este código es correcto, pero si ingresó mucho espacio ('''') en lugar de una cadena vacía o nula, devuelva falso.

Para corregir este uso, use la expresión regular (este código a continuación verifica si la variable es nula o está vacía o en blanco igual que org.apache.commons.lang.StringUtils.isNotBlank):

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> <c:if test="${not empty description}"> <c:set var="description" value="${fn:replace(description, '' '', '''')}" /> <c:if test="${not empty description}"> The description is not blank. </c:if> </c:if>


Este es un ejemplo de cómo validar un int y una cadena que pasa del controlador de Java al archivo JSP.

MainController.java:

@RequestMapping(value="/ImportJavaToJSP") public ModelAndView getImportJavaToJSP() { ModelAndView model2= new ModelAndView("importJavaToJSPExamples"); int someNumberValue=6; String someStringValue="abcdefg"; //model2.addObject("someNumber", someNumberValue); model2.addObject("someString", someStringValue); return model2; }

importJavaToJSPExamples.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <p>${someNumber}</p> <c:if test="${not empty someNumber}"> <p>someNumber is Not Empty</p> </c:if> <c:if test="${empty someNumber}"> <p>someNumber is Empty</p> </c:if> <p>${someString}</p> <c:if test="${not empty someString}"> <p>someString is Not Empty</p> </c:if> <c:if test="${empty someString}"> <p>someString is Empty</p> </c:if>


Para comprobar también la cadena en blanco, sugiero seguir

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <c:if test="${empty fn:trim(var1)}"> </c:if>

También maneja nulos.


Puedes usar

${var == null}

alternativamente.


si solo marca nulo o está vacío, puede usar la opción predeterminada para esto: <c:out default="var1 is empty or null." value="${var1}"/> <c:out default="var1 is empty or null." value="${var1}"/>


In this step I have Set the variable first: <c:set var="structureId" value="<%=article.getStructureId()%>" scope="request"></c:set> In this step I have checked the variable empty or not: <c:if test="${not empty structureId }"> <a href="javascript:void(0);">Change Design</a> </c:if>