<c:when test=" ${'ADMIN' eq USER_SESSION.roleName }">
</c:when>
<c:when test="${'NORMAL' eq USER_SESSION.roleName }">
</c:when>
<c:otherwise>
<li class="nav-li"><button type="button" class="btn btn-default"
onclick="window.location.href='login'">登 录</button></li>
<li class="nav-li"><button type="button" class="btn btn-default"
onclick="window.location.href='register'">注 册</button> </li>
</c:otherwise>
jsp页面用EL表达式判断字符串相等时,当USER_SESSION.roleName=="NORMAL"时生效,当USER_SESSION.roleName=="ADMIN"时不生效。检查后台代码,传出的参数没有问题。
将eq改成==也没有用,调换两个when的顺序也没用。我甚至怀疑“ADMIN”字符串是不是关键字23333
咋一看,两行代码没什么区别,仔细会发现第一行的EL表达式前面(外面)多了一个空格,将代码改成:
<c:when test="${'ADMIN' eq USER_SESSION.roleName }">
</c:when>
<c:when test="${'NORMAL' eq USER_SESSION.roleName }">
</c:when>
成功运行,eq改成==也可以。
暂时还不清楚EL表达式的eq与==是否有区别。字符串比较习惯使用eq