2010-12-16 6 views
1
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');"; 
        } 



       }; 
      }; 
} 

これは私のcode.INクリック上の方法私はそれが動作しない.but AJAX ONFAILUREスクリプトを呼び出しているにAjaxdecoratorまたはJavaScriptを呼び出す方法。AjaxLink(ウィケット)のをonSubmitメソッド

私はコンストラクタにjavascriptを追加しようとしました。これも動作しません。

問題は何ですか。

私はajaxdecoratorのように呼び出します。

getAjaxCallDecorator().decorateOnFailureScript("some message"); 

どのようにこれらの問題を解決できますか。

ありがとうございます。

答えて

1

エラーなしで失敗スクリプトを呼び出そうとしていますか?その場合は、あなたが呼び出すことができます:あなたはのonClick()メソッドの最後でsetResponsePage()を呼び出している、

target.appendJavascript("alert('Failure');"); 

または

target.appendJavascript(getAjaxCallDecorator().decorateOnFailureScript("some message")); 

をしかし、私はそれがから任意のスクリプトをブロックすることができると思います単純にajaxレスポンスを実行するのではなく、別のページにリダイレクトするので、実行されます。

+0

最初に彼らは仕事をしません。後で私はelse文にsetResponsePage行を移動しました。結果はとても良いです。大変ありがとう – jacop41

関連する問題