在jsp中传递多个参数

在jsp中传递多个参数,jsp,jstl,Jsp,Jstl,我想将两个参数从一个jsp页面传递到另一个包含的jsp页面 第一个JSP代码: <% java.util.Map map = new java.util.LinkedHashMap(); map.put("Manage Client", "${pageContext.request.contextPath}/clients/"); %> <s:message var="message" code="label.Navigat

我想将两个参数从一个jsp页面传递到另一个包含的jsp页面

第一个JSP代码:

 <%
        java.util.Map map = new java.util.LinkedHashMap();
        map.put("Manage Client", "${pageContext.request.contextPath}/clients/");
     %>
     <s:message var="message" code="label.NavigationBar.add"></s:message>
        <jsp:include page="/includes/_navigation_top.jsp" >
            <jsp:param name="topLeftNav" value="${message}"/>
            <jsp:param name="parentNode" value="${map}"/>
        </jsp:include>
包含的jsp/includes/_navigation_top.jsp页面代码为

<c:if test="${ param.topLeftNav ne 'Quotes' }">
        <div class="third-nav">
           <div class="bread-crum">
               <ul >
                <li><a href="${applicationScope.app_url_secure}/">Home</a></li>
                <c:if test="${param.parentNode!=null }">
                    <c:forEach items="${param.parentNode}" var="map">
                        <li><a href="${map.value}">${map.key}</a></li>
                    </c:forEach>
                </c:if>
                <li>${param.topLeftNav}</li>
              </ul>
          </div>
        </div>
    </c:if>
有谁能帮我找出我缺少的地方吗?

你把老式的脚本和现代的混合在一起了。它们不共享相同的变量范围。您在scriptlet作用域中创建了映射,但您正试图通过${map}在EL作用域中传递一个映射,该映射显然为空

让scriptlet或者最好是前端控制器按照EL的预期将其放在正确的范围内。例如

request.setAttribute("map", map);

但是我只需要在jsp中创建映射。还有其他通过jstl在jsp中实现的方法吗?只是一个表示标记库,而不是前端控制器之类的东西。我现在看到一个指示您正在使用Struts的示例。改为在Struts操作类中执行此工作。或者,如果数据应该是应用程序范围的,那么使用ServletContextListener或者Struts特定的东西(如果有的话)?然后在Spring MVC控制器中执行。不想。。由于这些值是某种硬代码,所以我将其作为参数作为字符串传递,使用split函数来displayWell,然后使用老式的scriptlet方式。只是很难看。您还可以问一个更具体的问题,如何在FrameworkX中实现它。