【问题标题】:How to mount pages in a different package in Wicket?如何在 Wicket 的不同包中挂载页面?
【发布时间】: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);都有效

标签: java wicket


【解决方案1】:

我个人没有使用过这种语法,但你可以试试:

public final void mount(String path, PackageName packageName)

这似乎解决了您正在寻找的问题。

你可以这样写:

public final void mount("/m/", PackageName.forClass(MobilePage.class));

问候

【讨论】:

  • wicket 6.10 中不再存在该方法
【解决方案2】:

不要使用'/m/'路径调用方法,而是不使用最后一个斜杠,所以

mountPackage("/m", MobilePage.class);

工作得很好......

为此损失了一天:(

【讨论】:

  • 错误消息中的类名可能会给您一个提示:“无法解析类 [com.myapp.m]”。注意它是说它正在包 com.myapp 中寻找一个名为“m”的类 ...
猜你喜欢
  • 1970-01-01
  • 2011-01-05
  • 1970-01-01
  • 2016-03-06
  • 1970-01-01
  • 2015-10-24
  • 1970-01-01
  • 2011-05-01
  • 2020-12-24
相关资源
最近更新 更多