2016-05-30 2 views
1

私はページ内の改札Formを持っているが、このように宣言:ウィケット:フォームのをonSubmit(内部addOrReplace())

protected void onBeforeRender() { 
    Form<Void> frm = new Form<Void>("frm") { 
      private static final long serialVersionUID = 1L; 

      @Override 
      protected void onSubmit() { 
       super.onSubmit(); 
       doSomething(); 
      } 
     }; 

    //other stuff... 
    addOrReplace(frm); 
} 

doSomethingは、ページ自体のメソッドです。私は、そのメソッドの内部で:

private void doSomething(){ 
    //stuff... 
    addOrReplace(new Label("labelID", "Some text")); 
} 

問題がaddOrReplaceへの呼び出しが動作しないということです。私はテキストがページに追加されて表示されません。リフレッシュすると表示されます。

onSubmit()コールバック内からaddOrReplaceの仕事を呼び出すにはどうすればよいですか?

答えて

2

あなたはAjaxButtonsで作業しているようですね。あなたは、ブラウザの変化が見えるようにするコンポーネントやその親を更新する必要があります:

ajaxRequestTarget.add(frm); 

あなたはAjaxを介して、更新したいコンポーネントに#setOutputMarkupId(true)を呼び出すことを忘れないでください:

frm.setOutputMarkupId(true); 
addOrReplace(frm); 

AjaxRequestTargetを取得するには、AjaxButton#onSubmit(AjaxRequestTarget, Form)をオーバーライドしてそこからdoSomethingを呼び出すことができます.AjaxRequestTargetを何かを更新するメソッドに渡します。

また、#getRequestCycle()。find(AjaxRequestTarget.class)をコールして、現在のAjaxRequestTargetを取得することもできます。

+0

これらの指示はどこに貼り付けますか?フォームのonSubmit()メソッドにはパラメータがありません。どこから "ajaxTargetRequest"を取得しますか? –

+0

ARTの入手方法に関する私の回答を編集しました。 – svenmeier

+0

だから、Fromの "onSubmit()"の代わりにAjaxSubmitLinkのonSubmit()を使うべきでしょうか? (私は送信ボタンを生成するためにAjaxSubmitLinkを使用しています) –

関連する問題