Я пытаюсь использовать очень хорошую ссылку ConfirmerAjaxLink из Visural. Однако при загрузке страницы я получаю js-скрипт: «jQuery не определен».
Я написал небольшую тестовую страницу для выявления проблемы:
public class ConfirmAjaxLinkTestPage extends WebPage {
public ConfirmAjaxLinkTestPage() {
this.add(new ConfirmerAjaxLink("confirm") {
@Override
public void onClick(AjaxRequestTarget target) {
System.out.println("OK");
}
});
}
@Override
public void renderHead(IHeaderResponse response) {
response.renderJavaScriptReference(new JavaScriptResourceReference(
JavascriptLibraryUtil.class,
"jquery/jquery-1.6.1.min.js"));
}
}
После быстрого поиска я увидел, что ConfirmerAjaxLink добавит еще один javascript, использующий jQuery. Однако, поскольку это делается с помощью поведения, которое добавляется к компоненту (ссылка выше), этот скрипт добавляется в разметку перед jQuery (поскольку он вызывается перед renderHead моей страницы).
Если я сначала изменю headerRenderStrategy на parent следующим образом:
System.setProperty("Wicket_HeaderRenderStrategy","org.apache.wicket.markup.renderStrategy.ParentFirstHeaderRenderStrategy");
это работает, но это скорее хак, чем решение (также, как указано в AbstractHeaderRenderStrategy
: ОФИЦИАЛЬНО НЕ ПОДДЕРЖИВАЕТСЯ WICKET).
Есть ли чистый способ решить эту (думаю, не исключительную) проблему?