public class engageLink extends AjaxLink{
private Engage engage;
private String name;
engageLink(String string, Engage anEngage,String name) {
super(string);
this.engage = anEngage;
this.name = name;
hasEngage=((Application) getApplication()).getVtb().hasEngagement(engage,name);
if(hasEngage)
this.add(new AttributeAppender("onclick", new Model("alert('This is my JS script');"), ";"));
}
boolean randevuAlmis;
@Override
public void onClick(AjaxRequestTarget target) {
if(hasEngage){
//do nothing or call ajax on failure script
} else{
((Application) getApplication()).getVtb().addEngagement(engage, name);
}
setResponsePage(new Sick(name));
}
@Override
protected org.apache.wicket.ajax.IAjaxCallDecorator getAjaxCallDecorator()
{
return new AjaxCallDecorator()
{
@Override
public CharSequence decorateOnSuccessScript(CharSequence script)
{
return "alert('Success');";
}
@Override
public CharSequence decorateOnFailureScript(CharSequence script)
{
return "alert('Failure');";
}
};
};
}
这是我的代码。单击的方法我调用ajax onfailure脚本。但它不起作用。
我尝试在构造函数中添加javascript。它也不起作用。
问题是什么。
注意我称之为ajaxdecorator;
getAjaxCallDecorator().decorateOnFailureScript("some message");
我如何解决这些问题。
由于
答案 0 :(得分:1)
您是否尝试在没有失败的情况下调用失败脚本?如果是这种情况,您可以致电:
target.appendJavascript("alert('Failure');");
或
target.appendJavascript(getAjaxCallDecorator().decorateOnFailureScript("some message"));
但是,你在onClick()方法的末尾调用setResponsePage(),我认为这可以阻止任何脚本被执行,因为你重定向到另一个页面而不是简单地执行ajax响应。