2013-09-25 37 views
2

我已經部署在Tomcat7檢票程序(版本6.10):myapp.war如何在Wicket的不同包中安裝頁面?

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); 

,我能夠爲上述指定訪問主頁和其他頁面在同一個包。當我嘗試

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

問題當我嘗試如果我像以前一樣使用同樣的策略,以安裝在不同的包頁面com.myapp.mobile 到達時,它不會在所有的工作訪問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 /在這種情況下)?

感謝

+0

http:// stackoverflow。com/a/10700321/176897 – tetsuo

+0

@tetsuo我不希望頁面作爲「根」頁面,我希望它們在特定路徑下掛載,以便鏈接不會有太大幫助 – spuas

+0

好吧,經過一天的所有這些工作發現,該方法應被調用,而不最後 '/' 所以 'mountPackage( 「/ M」,MobilePage.class);' 甚至 'mountPackage( 「M」,MobilePage.class);' 作品 – spuas

回答

1

而不是調用該方法以 '/ M /' 的路徑,做沒有最後的斜線,所以

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

工作很好...

有一天爲此損失:(

+0

錯誤消息中的類名可能會給你一個提示:「無法解析類[com.myapp.m]」。注意它是說它正在尋找包com.myapp中名爲'm'的類... –

1

我個人不使用這種語法,但你可以試試它:

public final void mount(String path, PackageName packageName) 

這似乎爲解決你在找什麼。

你會寫這樣的:

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

問候

+0

該方法不在wicket 6.10中存在 – spuas

相關問題