2013-05-01 65 views
1

我有几个Web应用程序部署在同一台服务器上。 app1中有一个我想从app2访问的JSP。我能在tomcat交叉背景下访问并试用了此JSTL标签:Struts2跨上下文JSP访问使用c:import抛出ClassCastException

<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标记引用它,则它工作得很好!

回答

1

你不应该这样做。 Web应用程序相互保护并隔离,以在同一个容器中运行。有关详细说明和说明,请参阅this指南。

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

+0

如何在构建时复制它们? maven是否有这个选项? – mystarrocks 2013-05-01 09:17:02

+0

使用Ant你可以做到这一点,还有一个Maven与Ant集成的选项。 – 2013-05-01 09:21:04

+0

似乎无法找到任何参考,得到一个? – mystarrocks 2013-05-01 09:25:05

相关问题