JSTL:检查字符串是否为空

2022-09-04 03:01:00

我正在尝试在JSTL中测试会话属性是否为空。但是,该属性为空,JSTL 将其视为非空属性。

这是我试图用JSTL替换的硬代码。此代码工作正常:

<% if (request.getAttribute("error") != null) { %>
    <div class="alert alert-danger">
        <strong>Oh snap, something's wrong, maybe the following error could help you out?<br /></strong>
        <%= request.getAttribute("error")%>
    </div>
<% } %>

这就是我用JSTL替换它的方式。选中后,error 属性不为空,但为空。

<c:if test="${not empty sessionScope.error}">
    <div class="alert alert-danger">
        <strong>Oh snap, something's wrong, maybe the following error could help you out?<br /></strong>
        <c:out value="${sessionScope.error}" />
    </div>
</c:if>

答案 1

添加 JSTL 库并声明核心 taglib:

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

JSTL 等效于

<% if (request.getAttribute("error") != null) { %>

<c:if test="${not empty error}">

答案 2

我正在尝试在JSTL中测试会话属性是否为空

您必须签入会话范围而不是在请求范围内

它应该是

<c:if test="${not empty sessionScope.error}">

而不是

<c:if test="${not empty requestScope.error}">

如果您不确定范围,则不使用范围,该范围将从下到上查看所有范围(页面,请求,会话,然后最终在应用程序中)

<c:if test="${not empty error}">