如何创建Ajax表单提交行为

时间:2012-07-04 08:20:22

标签: java wicket

在我的表单中我只有一个没有按钮的字段:

add(new AutoCompleteTextField<String>("hladaneSlovo", settings) {
            private static final long serialVersionUID = 1L;

            @Override
            protected Iterator<String> getChoices(String input) {
                return new HladaneSlova().iterator();
            }
        }.add(new AjaxFormSubmitBehavior(this, "onsubmit") {
            private static final long serialVersionUID = 1L;

            @Override
            protected void onSubmit(AjaxRequestTarget target) {
                setResponsePage(new VyjimkyPage(parametry));
            }

            @Override
            protected void onError(AjaxRequestTarget target) {
            }
        }));

问题是当我提交这个表单(只写单词然后按回车)没有任何反应。有什么问题?

2 个答案:

答案 0 :(得分:1)

您应该将AjaxFormSubmitBehavior添加到表单中,而不是将其添加到文本字段中。

答案 1 :(得分:1)

我之前的评论作为答案:不需要AjaxFormSubmitBehavior。您需要覆盖表单中的onSubmit():

Form form = new Form("form") {

   @Override
   public void onSubmit() {
      // do your stuff
   }

   @Override
   public void onError() {
      // you get here in case of errors (conversion/validatio)
   }
}
add(form);

form.add(...)

我不是100%确定您需要表单上的按钮。如果你需要一个html:

<form wicket:id="form">
   <input type="text" wicket:id="yourAutoComplete">
   <input type="submit" value="submit">
</form>

您不需要将提交输入元素与java组件相关联。但你可以尝试不使用html中的submit元素,看看它是否有效。