После миграции калитки от 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 ее рендеринг после.