我在同一台服务器上部署了几个 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/