2015-05-12 2 views
0

После миграции калитки от 1.4 до wicket 1.5 я обретаю действительно странную проблему - мои поля «ajax» не работают, и есть ошибки (обнаруженные через firebug) с помощью jQuery и jGrowl библиотеки.Миграция в wicket 1.5 - jQuery, jGrowl и ajax issues

После прочтения migration guide я изменил мои * .java файлы, в которых библиотеки JS были включены в это (я включаю один из «основного» класса):

@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) ...

что касается моего АЯКСА полей, они не работают (когда я отправить поле, ничего не происходит). Я заметил, что в этом проекте используется AjaxRequestTarget (малое, я его неправильно переделал). К сожалению, у меня мало информации о том, как работает ajax с калитки, и я смог найти только это, что, по моему мнению, создает «вопрос» 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; 
    } 
[...] 
} 

Я не знаю, что еще я должен включить, если вы думаете, что вопрос отсутствует, что-то дайте мне знать. Обратите внимание, что в калитки 1.4 каждый из них работает правильно.

Я также заметил, что Wicket.Event.add(window, "domready", function(event) { $.jGrowl('close');;}); выполняет рендеринг на моей странице до того, как библиотека jGrowl включена, в 1.4 ее рендеринг после.

ответ

2

Попробуйте добавить super.renderHead(response) в качестве первой строки в вашем методе.