2011-08-23 51 views
1

我有一個web應用程序,它具有類似於目錄結構:Wicket - <wicket:link> - 如何將頁面放入不同的包中?

/com/myproject/MyPage.java 
/com/myproject/MyPage.html 
/com/myproject/resources/styles.css 
/com/myproject/resources/bg.png 

MyPage.html我有這樣的代碼:

<wicket:link> 
    <link rel="stylesheet" type="text/css" href="resources/styles.css"/> 
</wicket:link> 

CSS文件具有類似url(bg.png)引用。一切都很好。然而,我的應用程序現在變得如此之大(到目前爲止我已經有15頁了),我不想把所有的頁面和HTML放在一個目錄中。然而像「styles.css」這樣的東西是從所有頁面引用的。所以我想爲不同的頁面組創建不同的包,但仍然有「styles.css」,以及它引用的圖片等,在我的源代碼樹中只存在一次。

我想這樣做:

  • 例如創建/com/myproject/usermanagement/UserManagementStartPage.java
  • 但仍然有/com/myproject/resources/styles.css(與共享所有頁面的意圖)的HTML
  • 仍引用CSS與 <wicket:link>,例如 href="../resources/styles.css"
  • 甚至更​​好,有一個絕對的鏈接到css例如href="/com/myproject/resources/styles.css(當我移動一個頁面從一個包到一個更深/淺包,這樣,我沒有改變..數。)

上午我沿着正確的線路在想什麼?你會如何解決這個問題?

回答

2

你需要的東西,如:

<wicket:link> 
    <link rel="stylesheet" type="text/css" href="$up$/resources/styles.css"/> 
</wicket:link> 

org.apache.wicket.settings.IResourceSettings.setParentFolderPlaceholder( 「$上漲$」)

這樣的URL看起來像/ COM/myproject的/ usermanagement/$ up $/resources/styles.css和Wicket會爲您解析父文件夾。

+0

好吧,聽起來不錯!我想這就意味着,人們可以直接在瀏覽器中打開Wicket HTML文件(例如,當網頁設計師正在工作時),並且看起來合理的優點,那麼這種優勢會消失嗎?我想你可能會在「../resources/styles.css」的鏈接附近有一個「」,然後按照你的建議,然後是「」。 –

+0

是的,這將適用於設計時間 –

2

Wicket處理相對於Web應用程序根目錄的CSS文件鏈接。這樣,如果您將標記文件移動到更高或更高的級別,則無關緊要。也可以包含來自Java代碼的樣式表,如解釋 in this article。使用標記繼承,您可以將樣式表添加到基本頁面,並讓您的真實頁面繼承它。

+0

「Wicket處理相對於Web應用程序根目錄的CSS文件鏈接」,Cool,這是什麼語法?只是'href =「/ com/myproject/resources/styles.css」'?或者我會直接將靜態文件放入WAR(不在'WEB-INF/classes'或JAR中),並使用該語法? –

+0

Web應用程序的根目錄是WEB-INF文件夾所在的目錄,通常稱爲「web」或「webapp」。將styles.css放入Java包結構中,當它與Wicket組件不直接相關時,對我來說聽起來不是一個好主意。 – reinouts

相關問題