2013-07-13 76 views
0

我對標籤有點困惑。我從1.5號門知道,從父母 - 孩子到孩子 - >父母的頭部呈現策略發生了變化。Wicket head section hierarchy

現在我使用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非常差,並且沒有找到使用它的任何示例。

問候

回答

0

由於檢票1.6 jQuery的現在是由框架使用的JavaScript庫。所以你可能會看到jQuery兩次,因爲你包含了一個和wicket版本?如果你想覆蓋jQuery版本,你可以創建一個資源引用,然後將它設置在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()); 

     .... 
    } 

    .... 
}