gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 19:58:36 24 4
gpt4 key购买 nike

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

我有两个应用程序上下文,我想将一个 JSP 从一个导入到另一个。我知道怎么做:

<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,这只是为了调试这一个问题)

最佳答案

您将其设置为请求参数,因此您也应该将其作为请求参数获取。

既然您似乎也不喜欢 scriptlet,那么这里有一个 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作为主要的 JSP。这最终可能会更有用。

关于java - 如何通过跨上下文 JSTL 导入将参数传递给 JSP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3920546/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com