2016-05-30 30 views
1

我有一個頁面內檢票Form內,聲明如下:檢票:addOrReplace()表單的onsubmit()

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不起作用。我沒有看到添加到頁面的文字。它只顯示如果我刷新。

如何撥打電話addOrReplace回撥內部onSubmit()

回答

2

聽起來像你正在使用AjaxButtons。你必須更新的組件或任何其父母,使在瀏覽器中看到的變化:

ajaxRequestTarget.add(frm); 

記住要通過Ajax來更新組件調用#setOutputMarkupId(真):

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來生成提交按鈕) –