评估空或空JSTL c标记

use*_*381 384 jsp jstl el

如何String使用c标签验证a 是空还是空JSTL

我有一个名称变量,var1我可以显示它,但我想添加一个比较器来验证它.

<c:out value="${var1}" />
Run Code Online (Sandbox Code Playgroud)

我想验证它是null还是空(我的值是字符串).

Bal*_*usC 742

如何使用JSTL的c标签验证String是空还是空?

您可以empty在a中使用关键字<c:if>:

<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>
Run Code Online (Sandbox Code Playgroud)

或者<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>
Run Code Online (Sandbox Code Playgroud)

或者,如果您不需要有条件地渲染一堆标记,因此您只能在标记属性中检查它,那么您可以使用EL条件运算符${condition? valueIfTrue : valueIfFalse}:

<c:out value="${empty var1 ? 'var1 is empty or null' : 'var1 is NOT empty or null'}" />
Run Code Online (Sandbox Code Playgroud)

要了解有关这些${}内容的更多信息(表达语言,这是与JSTL不同的主题),请点击此处.

也可以看看:

  • 总结:使用古老的JSTL 1.0时,`empty`对`Set`不起作用.您需要升级到JSTL 1.1(已经是2003年). (9认同)
  • @BalusC - EL` $ {not empty var1}`同时检查空和null吗?我的意思是当且仅当`var1`是**而不是**null**并且**`var1`是**不是**时,测试被评估为真.是否需要单独检查"null"? (5认同)
  • 对于空支票有奇怪问题的人来说,这是一个可能原因的可疑故事:http://gayleforce.wordpress.com/2008/01/26/jstl-empty-operator/ (4认同)
  • @shareef:不,不是.在"String"值的情况下,它相当于`var ne null和var ne''`.此外,它还支持`Object`,array,`Collection`和`Map`. (2认同)

and*_*o83 24

还要检查空白字符串,我建议如下

<%@ 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>
Run Code Online (Sandbox Code Playgroud)

它还处理空值


Ank*_*wal 7

如果只检查null或为空,则可以使用with default选项: <c:out default="var1 is empty or null." value="${var1}"/>


Rij*_*dra 6

这段代码是正确的但是如果你输入了很多空格('')而不是null或空字符串返回false.

要更正此问题,请使用常规表达式(下面的代码检查变量是null还是空或空白与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>
Run Code Online (Sandbox Code Playgroud)


Sor*_*ter 6

这是一个班轮.

EL内部的三元运算符

${empty value?'value is empty or null':'value is NOT empty or null'}
Run Code Online (Sandbox Code Playgroud)