在EL

时间:2017-07-08 13:39:12

标签: java spring jsp jstl

我有一张地图,它在对象中声明为字段,如下面的

public class FunctionUtilities{

        protected Map ResourceAccessabilityMap=new HashMap();

    }

当用户登录我的应用程序时,该对象在控制器中设置为会话。

public class LoginController{
    public String login(HttpServletRequest request, @ModelAttribute(“loginData) LoginData loginData){

        session.setAttribute(“utilities”, new FunctionUtilities().loadFunctionUtilities(loginData));
    }

  }

当一个请求进来或用户登录准确时,地图中有两个值有条件地设置,

public class FunctionUtilities{

        protected Map ResourceAccessabilityMap=new HashMap();

    public Map loadFunctionUtilities(LoginData loginData){

        if(loginData.hasAccessToStudentData)
            ResourceAccessabilityMap.put(“STUDENT_DATA”, “TRUE”);


        if(loginData.hasAccessToLecturerData)
            ResourceAccessabilityMap.put(“LECTURER_DATA”, “TRUE”);
    }

    }

以上信息用于根据用户的访问权限显示不同的侧边栏导航链接。

当两个条件都按预期失败时会出现这种情况,因此地图没有值STUDENT_DATA或LECTURER_DATA。

当我尝试在if条件中使用JSTL从包含的jsp页面访问侧边栏导航中的这些值时,它们都评估为true。我的侧边栏导航JSP如下所示,

sidebar.jsp

<%@ include file="../../view/include/jstl.jsp" %>
    <c:if test="${not empty utilities['STUDENT_DATA'] || not empty utilities['LECTURER_DATA']}" >
    Display user's account balance
    </c:if>

作为输出,它会显示用户的帐户余额,这不是我期望的那样吗?

但是当我删除其中一个条件时

<%@ include file="../../view/include/jstl.jsp" %>
<c:if test="${not empty utilities['STUDENT_DATA']}" >
Display user's account balance
</c:if>

工作正常,不显示用户的帐户余额

我的jstl.jsp只是一个自定义的jsp,看起来像这样

<%@ page session="false"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

sidebar.jsp页面包含在实际页面中

myaccount.jsp

<%@ include file=“/navigation/sidebar.jsp” %>

需要一些帮助,因为我对于如何在单独放置时不同的情况进行评估但是在放在一起时不起作用时会发疯?

0 个答案:

没有答案