代码之家  ›  专栏  ›  技术社区  ›  Matt Ball

如何通过跨上下文JSTL导入将参数传递给JSP?

  •  5
  • Matt Ball  · 技术社区  · 14 年前

    我遇到了其他一些问题,它们描述了与我相似但不完全相同的情况。 This question 例如,显示了几乎相同的问题,只是我没有使用portlet-我只是使用了无聊的ol'JSP+JSTL+EL+等。

    <c:import context="/" url="/WEB-INF/jsp/foo.jsp"/>
    

    但是,我还想将一个参数传递给导入的 foo.jsp . 但是这个密码:

    <c:import context="/" url="/WEB-INF/jsp/foo.jsp">
        <c:param name="someAttr" value="someValue"/>
    </c:import>
    

    似乎没有正确地将参数发送到 foo.jsp文件 ;如果 foo.jsp文件 有点像*

    <% System.out.println("foo.jsp sees that someAttr is: "
                          + pageContext.findAttribute("someAttr")); %>
    

    然后打印出来:

    foo.jsp sees that someAttr is: null
    

    鉴于我想看这个:

    foo.jsp sees that someAttr is: someValue
    

    很明显, someAttr foo.jsp文件 .

    我该怎么解决?


    *(是的,我知道, scriplets==bad ,这只是为了调试这个问题)

    1 回复  |  直到 7 年前
        1
  •  6
  •   BalusC    14 年前

    既然你似乎也不喜欢脚本,这里有一个EL解决方案:

    ${param.someAttr}
    

    <c:import> <jsp:include> 在这种情况下。当您想从不同的上下文或完全不同的域导入文件时,它很有用,但现在似乎不是这样。以下几点也应该管用:

    <jsp:include page="/WEB-INF/jsp/foo.jsp">
        <jsp:param name="someAttr" value="someValue" />
    </jsp:include>
    

    这样,包含的页面可以访问相同的 PageContext HttpServletRequest