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