【发布时间】:2013-09-26 00:21:45
【问题描述】:
我在 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/)下安装新包?
谢谢
【问题讨论】:
-
@tetsuo 我不希望这些页面作为“根”页面,我希望它们安装在特定路径下,这样链接就没有多大帮助
-
好的,在与所有这些东西打了一天之后,我发现应该在没有最后一个'/'的情况下调用该方法,所以
mountPackage("/m", MobilePage.class);甚至mountPackage("m", MobilePage.class);都有效