wicket 表单事件 onsubmit 在 V6.X 时不工作
wicket form event onsubmit not working at V6.X
我有一个这样的页面。
HTML
<form wicket:id="form" onsubmit="alert('form submit')">
<input type="text" name="name">
<!-- Wicket1.5.X form.onsubmit working -->
<!-- Wicket6.X form.onsubmit can not work -->
<input wicket:id="ajaxFallbackButton" type="submit">
<!-- form.onsubmit works fine -->
<input wicket:id="submitBtn" type="submit">
</form>
Java
Form<Void> form = new Form<Void>("form");
form.setOutputMarkupId(true);
add(form);
AjaxFallbackButton ajaxFallbackButton = new AjaxFallbackButton("ajaxFallbackButton", new Model<String>("AjaxFallbackButton"), form) {
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
System.out.println("ajaxFallbackButton onSubmit");
}
};
form.add(ajaxFallbackButton);
Button button = new Button("submitBtn", new Model<String>("Button"));
form.add(button);
为什么当我使用 Wicket V6.X 时,html 定义的表单 onsubmit 事件无法工作?
感谢 svenmeier,我通过覆盖 AjaxFallbackButton.updateAjaxAttributes
方法修复了它。
@Override
protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
super.updateAjaxAttributes(attributes);
AjaxCallListener ajaxCallListener = new AjaxCallListener();
ajaxCallListener.onPrecondition("alert('form submit')");
attributes.getAjaxCallListeners().add(ajaxCallListener);
}
Wicket 6 使用 JavaScript 事件处理程序,因此您的内联 JavaScript 不会执行。
阅读此处以获得进一步的解释和解决方案:
Wicket AjaxButton and javascript condition
我有一个这样的页面。
HTML
<form wicket:id="form" onsubmit="alert('form submit')">
<input type="text" name="name">
<!-- Wicket1.5.X form.onsubmit working -->
<!-- Wicket6.X form.onsubmit can not work -->
<input wicket:id="ajaxFallbackButton" type="submit">
<!-- form.onsubmit works fine -->
<input wicket:id="submitBtn" type="submit">
</form>
Java
Form<Void> form = new Form<Void>("form");
form.setOutputMarkupId(true);
add(form);
AjaxFallbackButton ajaxFallbackButton = new AjaxFallbackButton("ajaxFallbackButton", new Model<String>("AjaxFallbackButton"), form) {
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
System.out.println("ajaxFallbackButton onSubmit");
}
};
form.add(ajaxFallbackButton);
Button button = new Button("submitBtn", new Model<String>("Button"));
form.add(button);
为什么当我使用 Wicket V6.X 时,html 定义的表单 onsubmit 事件无法工作?
感谢 svenmeier,我通过覆盖 AjaxFallbackButton.updateAjaxAttributes
方法修复了它。
@Override
protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
super.updateAjaxAttributes(attributes);
AjaxCallListener ajaxCallListener = new AjaxCallListener();
ajaxCallListener.onPrecondition("alert('form submit')");
attributes.getAjaxCallListeners().add(ajaxCallListener);
}
Wicket 6 使用 JavaScript 事件处理程序,因此您的内联 JavaScript 不会执行。
阅读此处以获得进一步的解释和解决方案:
Wicket AjaxButton and javascript condition