Wicket头部分层次结构

时间:2013-07-13 08:11:32

标签: java wicket-1.5 wicket-1.6 wicketstuff

我对标签有点困惑。我从wicket 1.5中了解到,从父级> child到child-> parent的头部渲染策略发生了变化。

现在我使用wicket 6.9,我有简单的菜单面板,我想使用一些jquery效果。 我想为整个应用程序使用相同的jquery(例如google)文件。

我不能仅在主页面中使用jquery链接,因为在渲染菜单面板时有“$(document).ready”并且无法识别。阅读一些论坛我发现小组应该包含jquery itselft - 这是合理的,因为它可以独立重用。

所以现在我的页面包含:

<head>
  ...
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
  ...
</head>

我的菜单面板也是一样的。因此在渲染的html中我加载了jquery.js两次。

我该如何解决?我只想加载一次。我知道我可以回到旧策略并执行application.getResourcesSettings()。setHeaderItemComparator()但是我读到它并不是最好的解决方案。

我可以在wicket中找到像PriorityHeaderItem这样的类,但wicket的文档很差,并没有找到任何使用它的例子。

祝你好运

1 个答案:

答案 0 :(得分:0)

因为wicket 1.6 jQuery现在是框架使用的javascript库。所以你可能会看到jQuery两次因为你包含的那个和wicket版本?如果要覆盖jQuery版本,可以创建一个Resource Reference,然后在Application类的init方法中设置它。

首先,您需要资源引用文件并将js文件放在相同的包结构中。

public final class JQueryResourceReference extends JavaScriptResourceReference {

    private static final JQueryResourceReference INSTANCE = new JQueryResourceReference();

    private JQueryResourceReference() {
        super(JQueryResourceReference.class, "jquery.js");
    }

    public static JQueryResourceReference get() {
        return INSTANCE;
    }
}

然后在应用程序init方法中执行以下操作:

public MyApplication extends AuthenticatedWebApplication {

    @Override
    protected void init() {
        super.init();

        getJavaScriptLibrarySettings().setJQueryReference(JQueryResourceReference.get());

         ....
     }

     ....
}