2017-06-13 145 views
0

我有一個'保存'按鈕,這是一個AjaxButton,我試圖以編程方式調用點擊。我有一個鏈接,我想用它來調用這個按鈕的處理程序。在我AjaxLink,我追加AJAX像這樣:無法呼叫在檢票中的ajax按鈕上的點擊事件

target.appendJavaScript("$('#save-irs1095c-button').click();");

當這段代碼被調用時,檢票口拋出以下異常

enter image description here

然而,當我檢查,行爲實際上是啓用的。見下文: enter image description here

所以,我的問題是,什麼可能會導致此錯誤,是否有解決方法,以編程方式調用我的'保存'按鈕沒有實際點擊? 我已經離開了我的組件的默認表單處理,所以這個ajax按鈕現在作爲我的提交。下面是Ajax的按鈕的代碼:

new AjaxButton("save-modal", coveredForm) { 
    /** 
    * 
    */ 
    private static final long serialVersionUID = 1975475919740938717L; 

    public void onSubmit(AjaxRequestTarget target, Form<?> myForm) 
    { 
     //form submission method 

     dataProvider.getIrs1095cSummaryPktManager().save(coveredModel.getObject()); 

     target.add(EmployeeDetailPanel.this); 
    } 
} 

這裏是因爲我想點擊的鏈接代碼,然後將編程電話會議上表示的Ajax按鈕:

new AjaxLink<Object>("label-ee-name-link") { 
    /** 
    * 
    */ 
    private static final long serialVersionUID = 6360058776603040349L; 

    @Override 
    public void onClick(AjaxRequestTarget target) { 

     EmployeeDetailPanel.this.setEEInfoShowing(); 

     logr.log(Level.FINER,"save button visible: " + coveredForm.get("save-modal").isVisible()); 
     logr.log(Level.FINER, "save button enabled: " + coveredForm.get("save-modal").isEnabled()); 

     List<Behavior> bList = (List<Behavior>)((AjaxButton)coveredForm.get("save-modal")).getBehaviors(); 

     if(bList != null ? !bList.isEmpty() : false) 
     { 
      for(Behavior b : bList) 
      { 
       logr.log(Level.FINER, "Behavior: " + b.toString() + " is enabled: " + b.isEnabled(coveredForm.get("save-modal")));     
      } 
     } 

     target.appendJavaScript("$('#save-irs1095c-button').click();"); 
    } 
} 

正如你所看到的,我正在檢查組件是否可見,已啓用,並且其行爲已啓用。

下面是阿賈克斯按鈕的HTML片段,並隨後片段的鏈接:

<div class="col-lg-10 col-lg-offset-1 text-center"> 
    <button class="btn btn-primary" wicket:id="back-to-ee-info">Back</button> 
    <button id="save-irs1095c-button" class="btn btn-primary" type="submit" wicket:id="save-modal">Save</button> 
    <button class="btn btn-primary" wicket:id="show-notes-button">Notes</button> 
</div> 


<h4 class="modal-title"><a href="" wicket:id="label-ee-name-link"><label wicket:id="emp-name"></label></a></h4> 

任何幫助深表感謝。謝謝。

+0

感謝您的編輯建議。 – SteveManC

+0

您應該真正使用'isVisibleInHierarchy()'和'isEnabledInHierarchy()'作爲組件。你使用哪個版本的Wicket? –

+0

當前使用7.2.0。雖然我進行了三重檢查,並且所有父母都可見,但我爲'isVisibleInHierarchy()'獲取了錯誤。這個頁面上有兩個主要的「容器」,它們都處於同一層次,並且此時包含按鈕的容器是可見的。 – SteveManC

回答

0

看來這個組件的一些父母是不可見的。當執行isVisibleInHierarchy()時,請連接調試器並查看哪一個返回false