在JSP中设置是否设置特定值

时间:2017-05-25 06:22:09

标签: java jsp spring-security

我有一个多用户门户,我在securedHolder为两个用户(管理员和教师)存储值。但不存储超级管理员的价值。

我必须按照用户角色(管理员,教师和超级管理员)显示导航菜单。

所以我想检查JSP页面中是否设置了值。如何在JSP中做到这一点?

我已检查过用户角色但无法检查特定值。

 <sec:authorize access="hasRole('ROLE_TEACHER')">
        -- Do something for teacher
        -- want to check the value here 
 </sec:authorize>

3 个答案:

答案 0 :(得分:0)

为什么不在用户登录时将用户会话中的role属性保存为“teacher”,“admin”或“superadmin”?

然后你可以使用jstl标签做这样的事情:

<c:choose>
    <c:when test="${sessionScope.user.role == 'teacher'}">
        your nav bar for teachers
    </c:when>
    <c:when test="${sessionScope.user.role == 'admin'}">
        your nav bar for admins
    </c:when>
    <c:when test="${sessionScope.user.role == 'superadmin'}">
        your nav bar for superadmins
    </c:when>
    <c:otherwise>
        your nav bar for somebody else
    </c:otherwise>
</c:choose>

答案 1 :(得分:0)

以这种方式使用jstl

<c:if test="${not empty var}">
   <div>do whatever you need</div>  
</c:if>

混合所有,我会这样做:

<sec:authorize access="hasAnyRole('ROLE_TEACHER','ROLE_ADMIN')">
    <c:if test="${not empty var}">
       <div>do whatever you need</div>  
    </c:if>
 </sec:authorize>

答案 2 :(得分:0)

完成使用 <sec:authorize access="principal.securedHolder['value']==requiredvalue"></sec:authorize>