Wicket中的CSS主题系统

时间:2012-03-25 10:36:47

标签: wicket

我正在开发一个包含许多不同组件的Wicket 1.5 Web应用程序,我很想让用户在不同主题之间进行选择(这意味着要更改某些组件的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。
  • 如果没有此主题系统,组件也可以在其他应用程序中使用。

1 个答案:

答案 0 :(得分:5)

我自己没有这样做,但我建议你去看看Wicket的Session。在Javadoc中,它解释了资源加载。搜索allgorithm的一部分是Style,它是从用户会话中获得的。

它背后的理念,你提供的每种风格的css(你称之为主题)。包含了标准主题的后备。

希望有所帮助。 伯特