我有一个'保存'按钮,这是一个AjaxButton,我试图以编程方式调用点击。我有一个链接,我想用它来调用这个按钮的处理程序。在我的AjaxLink中,我像这样附加ajax:
target.appendJavaScript("$('#save-irs1095c-button').click();");
当调用这段代码时,wicket抛出以下异常
所以,我的问题是,可能导致此错误的原因是什么,并且可以通过这种方法以编程方式调用我的“保存”#39;没有实际点击的按钮? 我已经离开了我的组件的默认表单处理,所以这个ajax按钮现在充当我的提交。以下是Ajax Button的代码:
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();");
}
}
如您所见,我正在检查组件是否可见,已启用,以及是否已启用其行为。
以下是Ajax按钮的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 :(得分:0)
看来这个组件的一些父母是不可见的。附加调试器,并在执行false
时查看哪一个返回isVisibleInHierarchy()
。