我正在尝试在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>
答案 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}">