0

我正在尝试使用来自Visural的非常好的 ConfirmerAjaxLink 。但是,我在加载页面时得到了一个 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 将添加另一个使用 jQuery 的 javascript。但是,由于这是通过添加到组件(以上链接)的行为来完成的,所以这个脚本在 jQuery 之前被添加到标记中(因为这是在我的页面的 renderHead 之前调用的)。

如果我先将 headerRenderStrategy 更改为父级,如下所示:

System.setProperty("Wicket_HeaderRenderStrategy","org.apache.wicket.markup.renderStrategy.ParentFirstHeaderRenderStrategy");

它可以工作,但这更像是一种 hack,而不是一种解决方案(也如AbstractHeaderRenderStrategy:NOT OFFICIALLY SUPPORTED BY WICKET 中所述)。

有没有一个干净的方法来解决这个(我认为不是例外)问题?

4

1 回答 1

1

Visural 示例应用程序在主 WebApplication 类的构造函数中包含 jQuery。来自视觉示例应用程序的代码:

public class ExamplesApplication extends WebApplication {

public ExamplesApplication() {
    addRenderHeadListener(JavascriptPackageResource.getHeaderContribution(new JQueryResourceReference(Version.V1_4_2)));
}

您也可以将 jQuery 包含在页面 HTML 的头部。我测试了它,效果很好。

于 2012-01-06T22:07:07.723 回答