2012-03-25 53 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