java - 使用c的Struts2跨上下文JSP访问:import throws ClassCastException

标签 java jsp struts2 jstl ognl

我在同一台服务器上部署了几个 Web 应用程序。 app1 中有一个 JSP,我想从 app2 访问该 JSP。我在 tomcat 中启用了跨上下文访问并尝试了这个 JSTL 标记:

<c:import url="/pages/myJSP.jsp" context="/app1" />

myJSP.jsp 本身使用一些 struts2 标记。

我还确保所需的库位于 app1 和 app2 的 lib 目录中。但在运行时,app2 的页面将不会呈现,并且我看到此错误:

Caused by: java.lang.ClassCastException: com.opensymphony.xwork2.ognl.OgnlValueStack cannot be cast to com.opensymphony.xwork2.util.ValueStack at org.apache.struts2.views.jsp.TagUtils.getStack(TagUtils.java:53) at org.apache.struts2.views.jsp.StrutsBodyTagSupport.getStack(StrutsBodyTagSupport.java:44) at org.apache.struts2.views.jsp.ComponentTagSupport.doStartTag(ComponentTagSupport.java:48)

知道为什么吗?如果我将 jsp 复制到 app2 并使用相同的 c:import 标记引用它,它就可以正常工作!

最佳答案

你不应该做这样的事情。 Web 应用程序受到保护并相互隔离,以便在同一容器中运行。有关进一步的描述和说明,请参阅 this指南。

如果您想共享不同模块的资源,您需要在构建时复制它们。

关于java - 使用c的Struts2跨上下文JSP访问:import throws ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16313692/

相关文章:

java - 使用Struts2访问JSP中的Action类

java - 在多个服务器上分发 J2EE 应用程序时我有哪些选择?

java - struts2中需要通过action名称获取action url

jsp - 将字符串与变量的值组合为 EL 中另一个变量的名称

java - mybatis嵌套异常是org.apache.ibatis.reflection.ReflectionException

对象序列化期间Java堆溢出

java - 字段 component.x 不可见

java - 数组循环中的 int 和 long 转换

java - 处理 "check list"项的正确方法

java - 在没有 RequestDispatcher 的情况下将值从 servlet 传递到 JSP 文件