Evaluate empty or null JSTL c tags

JspJstlEl

Jsp Problem Overview


How can I validate if a String is null or empty using the c tags of JSTL?

I have a variable of name 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 strings).

Jsp Solutions


Solution 1 - Jsp

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

See also:

Solution 2 - Jsp

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

Solution 3 - Jsp

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}"/>

Solution 4 - Jsp

This code is correct but if you entered a lot of space (' ') instead of null or empty string 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>

Solution 5 - Jsp

Here's the one liner.

Ternary operator inside EL

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

Solution 6 - Jsp

You can use

    ${var == null}

alternatively.

Solution 7 - Jsp

Here's an example of how to validate a 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>

Solution 8 - Jsp

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>

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser338381View Question on Stackoverflow
Solution 1 - JspBalusCView Answer on Stackoverflow
Solution 2 - Jspandro83View Answer on Stackoverflow
Solution 3 - JspAnkit AgarwalView Answer on Stackoverflow
Solution 4 - JspRija RamampiandraView Answer on Stackoverflow
Solution 5 - JspSorterView Answer on Stackoverflow
Solution 6 - JspSupun DharmarathneView Answer on Stackoverflow
Solution 7 - JspGeneView Answer on Stackoverflow
Solution 8 - JspASRView Answer on Stackoverflow