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>