我根据每个用户的角色设置了一个控制菜单的会话......现在举个例子我有这个
<c:set var="role" scope="session" value='<%=((Long) session.getAttribute("role")).longValue()%>' />
<c:if test="${role == 121}">
<div id="menu">
<span class="menu-header">Registration</span>
<ul>
<li><a href="${pageContext.request.contextPath}/registration/organization-registry">Organization Registry</a></li>
</ul>
</div>
</c:if>
<div id="menu">
<span class="menu-header">Directory</span>
<ul>
<li><a href="">Organization</a></li>
</ul>
</div>
现在如果我想在没有登录的情况下访问该页面怎么办?我试图在没有登录的情况下访问该页面,但遇到NullPointetExcepetion
基本上是因为我没有在角色中存储任何会话。我在用户登录时设置了每个会话。当没有登录时我想查看不需要任何角色的菜单...例如,我重定向到该页面,其中一个链接可以被其他人查看。
当我没有登录时,如何查看目录菜单?
答案 0 :(得分:1)
完全摆脱<c:set>
行。你不需要它。 EL ${}
已经在页面,请求,会话和应用程序范围内搜索属性。导致NPE是因为您在longValue()
上调用了null
。
请记住:您不应该将oldschool scriptlet <% %>
与现代EL ${}
混合使用。这是没有意义的。你只会迷惑自己。