我正在使用/ hello servlet上下文的Web应用程序中的jsp(test.jsp)。我正在执行以下操作:

<c:import url = "/other/altTest.jsp" context="/" />


我怀疑由于上下文参数,可用于test.jsp的请求属性对于从c:import(altTest.jsp)导入的jsp不可用。有人可以解释一下这背后的原因,并建议一种可以在其中访问请求属性的导入jsp的替代方法吗?

最佳答案

c:import在幕后触发一个新的独立HTTP请求。即使文件位于相同的上下文中,也无法访问与打开父JSP相同的请求。

最好的选择是将信息作为请求参数传递或将其存储为会话属性,然后让导入的JSP从会话中将其删除。尽管如此,这仍要求不同的上下文共享同一会话-这可以在servlet容器级别配置,例如在Tomcat中,将emptySessionPath属性设置为true

一种替代方法是使用servlet,而您可以执行context.xml来获取其他servlet上下文(仅当ServletContext#getContext()中的crossContext属性设置为true时),然后获取context.xml并最终调用RequestDispatcher就可以了。 JSP标记无法做到这一点。

关于java - 在c:import上下文中请求属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4252094/

10-09 06:59
查看更多