Reputation: 4283
How can I validate if a String
is null or empty using the c
tags of JSTL
?
I have a variable named var1
and I can display it, but I want to add a comparator to validate it.
<c:out value="${var1}" />
I want to validate when it is null or empty (my values are string type).
Upvotes: 428
Views: 854782
Reputation: 11267
Here's an example of how to validate an int
and a String
that you pass from the Java Controller to the JSP file.
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>
Upvotes: 1
Reputation: 231
This code is correct but if you entered a lot of space (' ') instead of null or empty string <c:if test="${empty var1}"> return false.
To correct this use regular expresion (this code below check if the variable is null or empty or blank the same as 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>
Upvotes: 6
Reputation: 1108537
How can I validate if a String is null or empty using the c tags of JSTL?
You can use the empty
keyword in a <c:if>
for this:
<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>
Or the <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>
Or if you don't need to conditionally render a bunch of tags and thus you could only check it inside a tag attribute, then you can use the EL conditional operator ${condition? valueIfTrue : valueIfFalse}
:
<c:out value="${empty var1 ? 'var1 is empty or null' : 'var1 is NOT empty or null'}" />
To learn more about those ${}
things (the Expression Language, which is a separate subject from JSTL), check here.
Upvotes: 831
Reputation: 10210
Here's the one liner.
${empty value?'value is empty or null':'value is NOT empty or null'}
Upvotes: 6
Reputation: 176
if you check only null or empty then you can use the with default option for this:
<c:out default="var1 is empty or null." value="${var1}"/>
Upvotes: 8
Reputation: 4163
to also check blank string, I suggest following
<%@ 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>
It also handles nulls
Upvotes: 28
Reputation: 3549
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>
Upvotes: -1