如何使用 JSTL 的 c 标签验证 String 是否为空或为空?
为此,您可以在 <c:if>
中使用 empty
关键字:
<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>
或 <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>
或者,如果您不需要有条件地渲染一堆标签,因此您只能在标签属性中检查它,那么您可以使用 EL 条件运算符 ${condition? valueIfTrue : valueIfFalse}
:
<c:out value="${empty var1 ? 'var1 is empty or null' : 'var1 is NOT empty or null'}" />
要了解有关这些 ${}
的更多信息(Expression Language,它是与 JSTL 不同的主题),check here。
也可以看看:
EL 空运算符在 JSF 中是如何工作的?
还要检查空白字符串,我建议以下
<%@ 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>
它还处理空值
如果您只检查 null 或空,那么您可以使用 with default 选项:<c:out default="var1 is empty or null." value="${var1}"/>
此代码是正确的,但如果您输入大量空格 (' ') 而不是 null 或空字符串,则返回 false。
要更正此问题,请使用正则表达式(下面的代码检查变量是否为空、空或空白,与 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>
这是一个班轮。
EL 中的三元运算符
${empty value?'value is empty or null':'value is NOT empty or null'}
您可以使用
${var == null}
或者。
下面是一个如何验证从 Java 控制器传递到 JSP 文件的 int 和 String 的示例。
主控制器.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>
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>
不定期副业成功案例分享
empty
不适用于Set
。您需要升级到 JSTL 1.1(从 2003 年开始)。${not empty var1}
是否同时检查空和空?我的意思是当且仅当var1
为 not null 并且var1
为 not 为空时,测试才被评估为 true。不需要单独检查null
吗?empty
等价于 ne ' 'String
值,它等效于var ne null and var ne ''
。此外,它还支持Object
、数组、Collection
和Map
。