0

我对标签有点困惑。我知道从 wicket 1.5 开始,头部渲染策略从 parent->child 更改为 child->parent。

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

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

所以现在我的页面包括:

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

我的菜单面板也是一样的。结果在呈现的 html 中我加载了 jquery.js 两次。

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

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

此致

4

1 回答 1

0

Since wicket 1.6 jQuery is now the javascript library used by the framework. So you may see jQuery twice because of the one you included and the wicket version? If you want to override the jQuery version you can create a Resource Reference and then set it in your init method of the Application class.

First you need the resource reference file and put the js file in same package structure.

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;
    }
}

Then in the application init method do this:

public MyApplication extends AuthenticatedWebApplication {

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

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

         ....
     }

     ....
}
于 2013-07-16T13:00:42.273 回答