java - 如何使用 JSTL 确定空 session 属性

标签 java jsp servlets jstl

我已经设置了一个基于每个用户的角色控制菜单的 session ......现在例如我有这个

<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,因为我没有在角色中存储任何 session 。我在用户登录时设置每个 session 。当未登录时,我想查看不需要任何角色的菜单...例如,我重定向到该页面,其中包含一个链接,其他人可以查看该链接。

如何在未登录时仍然查看目录菜单?

最佳答案

去掉 <c:set>线完全。你不需要它。 EL ${}已经在页面、请求、 session 和应用程序范围内搜索属性。 NPE 是因为你调用了 longValue() 引起的在 null .

记住:你不应该混合老派的 scriptlet <% %>与现代 EL ${} .这是没有意义的。你只会迷惑自己。

另见:

关于java - 如何使用 JSTL 确定空 session 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14799259/

相关文章:

java - HTTP 状态 500 – 内部服务器错误(Java、Eclipse、Servlets、Tomcat)

java - 如何将 Canvas 中的区域复制到图像中

jsp - 在使用 tomcat 7 的 jspc 预编译 jsp 期间未评估 el

java - 不显示表达式语言的值

java - 为什么在jar中无法解析包名?

java - 日期格式转换异常

java - Eclipse Ganymede 未正确验证 JSP

mysql - 将 JSTL SQL 结果转发给 Servlet

java - 无法在 servlet init 方法中构建 session 工厂

java - 队列应用程序引擎任务的请求处理程序