我在 Tomcat7 中部署了一个 wicket 应用程序(6.10 版):myapp.war
web.xml 具有以下配置:
<filter>
<filter-name>myapp.wicket</filter-name>
<filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
<init-param>
<param-name>applicationClassName</param-name>
<param-value>com.myapp.MyWebApp</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>myapp.wicket</filter-name>
<url-pattern>/pages/*</url-pattern>
</filter-mapping>
所以我可以访问检票口页面
http://myhost/myapp/pages/HomePage
直到这里一切正常。我像这样安装我的页面MyWebApp.init()
:
mountPackage("/", HomePage.class);
并且我可以访问 HomePage 以及上面指定的同一包中的其他页面。
当我尝试在不同的包 com.myapp.mobile 中挂载页面时,问题就出现了如果我使用与以前相同的策略,它根本不起作用:
mountPackage("/m/", MobilePage.class);
当我尝试访问 MobilePage 时,出现异常:
http://myhost/myapp/pages/m/MobilePage
WicketObjects.resolveClass WARNING Could not resolve class [com.myapp.m]
java.lang.ClassNotFoundException: com.myapp.m
对于同一个包中的任何其他页面也是如此(它们都是可收藏的)。但是,如果我一一安装它们:
mountPage("/m/MobilePage", MobilePage.class);
mountPage("/m/MobilePage2", MobilePage2.class);
,或者如果我将它们安装在根目录中,它可以工作:
mountPackage("/", MobilePage.class);
在前一种情况下,使用myapp/pages/m/MobilePage
和 在没有 /m/ 的情况下访问它们:myapp/pages/MobilePage
所以我的问题是(很抱歉,解释太长了):如何在所需路径下安装新包(在这种情况下是 /m/)?
谢谢