У меня есть страница index.jsp
, в которой некоторые элементы включаются/выключаются в зависимости от того, вошел ли пользователь в систему или нет.Сравнение строк в Struts2 <s:if> Тег
<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>
The accessType
установлен в GUEST
. Однако он вводит else-блок, даже если пользователь еще не вошел в систему.
Я совершил ошибку в сравнении строк?
UPDATE:
Я удалил сессионную часть из 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'. Покажите, как вы поместили переменную в сеанс. –
Hi @RomanC, я отредактировал сообщение для вашего отзыва. – silver