2015-05-12 22 views
0

從wicket 1.4遷移到wicket 1.5後我真的很奇怪 - 我的ajax「fields」不起作用,我的jQuery和jGrowl出現錯誤(通過firebug發現)庫。移植到wicket 1.5 - jQuery,jGrowl和ajax問題

閱讀migration guide我已經改變了這裏的JS庫被納入這個我* .java文件後(我有「主」類之一):

@Override 
    public void renderHead(IHeaderResponse response) { 
     // JQUERY 
     //val header = JSLib.getHeaderContribution(VersionDescriptor.alwaysLatest(Library.JQUERY)); 
     //header.renderHead(response); 
     //val header1 = JSLib.getHeaderContribution(VersionDescriptor.alwaysLatest(Library.JQUERY_UI)); 
     //header1.renderHead(response); 
     response.renderJavaScriptReference(new CommonResourceRef("js/jquery-1.4.2.min.js")); 
     response.renderJavaScriptReference(new CommonResourceRef("js/jquery-ui-1.8.4.custom.min.js")); 

     // MSDROPDOWN 
     response.renderJavaScriptReference(new CommonResourceRef("js/jquery.msdropdown.js")); 
     response.renderJavaScriptReference(new CommonResourceRef("js/languageDropDown.js")); 
     response.renderCSSReference(new CommonResourceRef("css/msdropdown.css")); 

     // JGROWL 
     response.renderJavaScriptReference(new CommonResourceRef("js/jquery.jgrowl_minimized.js")); 
     response.renderCSSReference(new CommonResourceRef("css/jquery.jgrowl.css")); 
     response.renderCSSReference(new CommonResourceRef("css/jgrowl-page.css"));  
     response.renderOnLoadJavaScript("$(document).bind('keydown', function(e) { return submitButtonOnEnter(e); });"); 

     // disables warning on page leaving with displayed modal (if unloadConfirmation == false) 
     if (!unloadConfirmation) 
      response.renderOnLoadJavaScript("Wicket.Window.unloadConfirmation = false;"); 
    } 

在我的一個網頁,我已經包括這些庫(再次,檢查與螢火蟲),但我得到這個錯誤:

TypeError: $.jGrowl is not a function
Wicket.Event.add(window, "domready", function(event) { $.jGrowl('close');;});

TypeError: $(...) is null
$("#middlebar > .menu > li > a").click(function() {

TypeError: $(...).bind is not a function ...t.add(window, "load", function(event) { $(document).bind('keydown', function(e) ...

至於我的AJAX領域,它們不工作(當我提交場,沒有任何反應)。我注意到這個項目正在使用AjaxRequestTarget(meaby我遷移它錯了?)。不幸的是,我對ajax如何與wicket合作知之甚少,而且我只能找到這個,我相信這是創建ajax「問題」。

public class PageAjaxEventBehavior extends AjaxEventBehavior { 
[...] 
    public void renderHead(IHeaderResponse response) { 
     CharSequence handler = Strings.replaceAll(Strings.escapeMarkup(getEventHandler().toString()), "'", "'"); 
     String jqueryCall = String.format("$.ajax({ url: '%s', success: function(data) { $('.result').html(data); alert('Load was performed.'); } });", 
              getCallbackUrl()); 

     String eventHandler = String.format("$(window).bind(\"%s\", function() {%s;});", getEvent(), jqueryCall); 

     if (!closed) 
      JavaScriptUtils.writeJavaScript(RequestCycle.get().getResponse(), eventHandler); 

     closed = true; 
    } 
[...] 
} 

我不知道我還包括什麼,所以如果你認爲這個問題是缺少的東西讓我知道。請注意,在wicket 1.4中,everythink正常工作。

我也注意到,Wicket.Event.add(window, "domready", function(event) { $.jGrowl('close');;});在jGrowl庫被包含之前在我的頁面上渲染,在1.4之後渲染它。

回答

2

嘗試添加super.renderHead(response)作爲您的方法中的第一行。