我对标签有点困惑。我从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的文档很差,并没有找到任何使用它的例子。
祝你好运
答案 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());
....
}
....
}