我正在尝试使用来自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 中所述)。
有没有一个干净的方法来解决这个(我认为不是例外)问题?