【发布时间】:2015-02-24 21:11:28
【问题描述】:
我有一个index.jsp 页面,其中某些元素根据用户是否登录而打开/关闭。
<head>
<s:set var="accessType" value="GUEST" />
<s:if test="#session.containsKey('currentAccessType')">
<s:set var="accessType" value="#session.currentAccessType" />
</s:if>
</head>
<body>
<nav>
<s:if test="#accessType.equals('GUEST')">
<ul>
<li><a href="index.jsp">Home</a></li>
<li><a href="#">Login</a></li>
<li><a href="http://www.mywebsite.com" target="_blank">Main Site</a></li>
</ul>
</s:if>
<s:else>
<ul>
<li><a href="index.jsp">Home</a></li>
<li><a href="#">Control Panel</a></li>
<li><a href="#">Logout</a></li>
<li><a href="http://www.mywebsite.com" target="_blank">Main Site</a></li>
</ul>
</s:else>
</nav>
</body>
accessType 设置为 GUEST。但是,即使用户尚未登录,它也会进入 else-block。
我的字符串比较是否出错了?
更新:
我从 index.jsp 中删除了会话部分只是为了查看,现在它看起来像这样:
<head>
<s:set var="accessType" value="GUEST" />
<!-- removed session code for testing -->
</head>
<body>
<nav>
<s:if test="#accessType.equals('GUEST')">
<ul>
<li><a href="index.jsp">Home</a></li>
<li><a href="#">Login</a></li>
<li><a href="http://www.mywebsite.com" target="_blank">Main Site</a></li>
</ul>
</s:if>
<s:else>
<ul>
<li><a href="index.jsp">Home</a></li>
<li><a href="#">Control Panel</a></li>
<li><a href="#">Logout</a></li>
<li><a href="http://www.mywebsite.com" target="_blank">Main Site</a></li>
</ul>
</s:else>
</nav>
<br />
Access type is <s:property value="#accessType" />.
</body>
问题:
- 条件进入
<s:else>块。 - 访问类型未打印(不知何故未设置)。
【问题讨论】:
-
错误可能是
NullPointerException,然后您输入s:else标签。显示您是如何将变量放入会话中的。 -
嗨@RomanC,我已经编辑了帖子供您查看。