我遇到了一些其他问题,这些问题描述了我的类似但不完全相同的情况.例如,这个问题显示了几乎相同的问题,除了我没有使用portlet - 我只是使用无聊的'JSP + JSTL + EL +等.
我有两个应用程序上下文,我想将JSP从一个导入到另一个.我知道那是怎么回事
<c:import context="/" url="/WEB-INF/jsp/foo.jsp"/>
Run Code Online (Sandbox Code Playgroud)
但是,我也想将参数传递给导入的foo.jsp
.但是这段代码:
<c:import context="/" url="/WEB-INF/jsp/foo.jsp">
<c:param name="someAttr" value="someValue"/>
</c:import>
Run Code Online (Sandbox Code Playgroud)
似乎没有正确发送参数foo.jsp
; 如果foo.jsp
是*
<% System.out.println("foo.jsp sees that someAttr is: "
+ pageContext.findAttribute("someAttr")); %>
Run Code Online (Sandbox Code Playgroud)
然后打印出来:
foo.jsp sees that someAttr is: null
Run Code Online (Sandbox Code Playgroud)
而我想看到这个:
foo.jsp sees that someAttr is: someValue
Run Code Online (Sandbox Code Playgroud)
所以,显然,someAttr
无法找到foo.jsp
.
我该如何解决?
*(是的,我知道,scriplets==bad
这只是用于调试这个问题)
您将其设置为请求参数,因此您还应将其作为请求参数获取.
既然你似乎也不喜欢scriptlets,这里是一个EL解决方案:
${param.someAttr}
Run Code Online (Sandbox Code Playgroud)
请注意,在此特定情况下,<c:import>
不会增加任何额外优势<jsp:include>
.每当您想要从不同的上下文或完全不同的域导入文件时,它都很有用,但现在似乎并非如此.以下也应该有效:
<jsp:include page="/WEB-INF/jsp/foo.jsp">
<jsp:param name="someAttr" value="someValue" />
</jsp:include>
Run Code Online (Sandbox Code Playgroud)
通过这种方式,包括页面访问相同PageContext
,并 HttpServletRequest
作为主JSP.这最终可能会更有用.
归档时间: |
|
查看次数: |
10972 次 |
最近记录: |