Wicket中的CSS主题系统

Wicket中的CSS主题系统,wicket,Wicket,我正在开发一个包含许多不同组件的Wicket 1.5 web应用程序,我很想让用户在不同的主题之间进行选择(这意味着更改某些组件的CSS样式)。因此,在某种程度上,我会将所选主题与用户会话相关联 我的问题是,在Wicket做这件事的最好方法是什么 现在,我的组件如下所示: public class SingleLayout extends Panel { public static final CssResourceReference CSS = new CssResourceRefe

我正在开发一个包含许多不同组件的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
  • 这些组件也将在没有这个主题系统的其他应用程序中工作

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

其背后的想法是,您为每个样式(您称之为主题)提供一个css。对标准主题的回退被包括在内

希望有帮助。
伯特

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

其背后的想法是,您为每个样式(您称之为主题)提供一个css。对标准主题的回退被包括在内

希望有帮助。
伯特

好的,谢谢你,伯特。我将仔细研究一下资源加载算法,并尝试找出一个好的解决方案。好的,谢谢。我将仔细研究资源加载算法,并尝试找出一个好的解决方案。