2012-03-25 52 views
1

我正在開發一個包含許多不同組件的Wicket 1.5 Web應用程序,並且我有興趣讓用戶在不同的主題之間進行選擇(即更改某些組件的CSS樣式)。因此,我將以某種方式將選定的主題與用戶會話相關聯。Wicket中的CSS主題系統

我的問題是,這是在Wicket中做到這一點的最佳方式?

現在我的部件看起來就像這樣:

public class SingleLayout extends Panel { 

    public static final CssResourceReference CSS = new CssResourceReference(SingleLayout.class, "SingleLayout.css"); 

    public SingleLayout(...) { 
     super(...); 
    } 

    protected CssResourceReference getCssResourceReference() { 
     return CSS; 
    } 

    @Override 
    public void renderHead(IHeaderResponse response) { 
     super.renderHead(response); 
     response.renderCSSReference(getCssResourceReference()); 
    } 

} 

我的理想解決方案「的主題系統」將:

  • 組件會在默認情況下工作的CSS如果此組件的CSS在當前主題中沒有定義。
  • 這些組件也可以在沒有這個主題系統的其他應用程序中工作。

回答

5

我自己沒有這樣做,但我會建議看看Wicket的Session。在Javadoc中,它解釋了資源加載。部分搜索allgorithm是從用戶會話中獲取的Style。

背後的想法,你提供了每種風格的CSS(你稱之爲主題)。包括這個標準主題的後備。

希望有所幫助。 Bert

+0

好的,謝謝Bert。我將仔細研究資源加載算法,並試圖找出一個很好的解決方案。 – jordeu 2012-03-27 07:11:06