JSTL:检查字符串是否为空

时间:2014-05-18 10:04:36

标签: java jsp jstl

我正在尝试在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-attribute不为空,但它为空。

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

2 个答案:

答案 0 :(得分:13)

添加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}">

答案 1 :(得分:1)

如果session attribute为空,我试图在JSTL中进行测试

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

应该是

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

而不是

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

如果你不确定范围,那么使用不带范围从下到上(页面,请求,会话,最后是应用程序)的所有范围内的范围

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