有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Wicket头段层次结构

我对标签有点困惑。我从wicket 1.5了解到,头部渲染策略从父级更改为>;儿童对儿童->;家长

现在我使用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。两次

我该如何解决?我只想加载一次。我知道我可以回到原来的策略,做应用程序。getResourcesSettings()。setHeaderItemComparator()但据我所知,这并不是最好的解决方案

我可以在wicket中找到类似PriorityHeaderItem的类,但wicket的文档非常差,没有找到任何使用它的示例

致意


共 (1) 个答案

  1. # 1 楼答案

    因为wicket 1.6 jQuery现在是框架使用的javascript库。因此,您可能会因为包含的jQuery和wicket版本而看到两次jQuery?如果要覆盖jQuery版本,可以创建一个资源引用,然后在应用程序类的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;
        }
    }
    

    然后在application init方法中执行以下操作:

    public MyApplication extends AuthenticatedWebApplication {
    
        @Override
        protected void init() {
            super.init();
    
            getJavaScriptLibrarySettings().setJQueryReference(JQueryResourceReference.get());
    
             ....
         }
    
         ....
    }