我正在尝试使用来自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");
它有效,但这更像是一个黑客而不是一个解决方案(同样,如AbstractHeaderRenderStrategy
中所述:不是由WICKET正式支持)。
这是否有一个干净的方式(我认为不是例外)问题?
答案 0 :(得分:1)
Visural示例应用程序在主WebApplication类的构造函数中包含jQuery。来自Visural示例应用程序的代码:
public class ExamplesApplication extends WebApplication {
public ExamplesApplication() {
addRenderHeadListener(JavascriptPackageResource.getHeaderContribution(new JQueryResourceReference(Version.V1_4_2)));
}
您也可以将jQuery include放在页面HTML的头部。我测试了它,并且工作正常。