获取Wicket AjaxButton以使用浏览器自动完成功能

时间:2017-10-20 12:03:04

标签: java ajax wicket

我有一个带有输入字段,标签和ajax按钮的表单。我想根据ajax请求更改标签的值,我希望textfield通过浏览器自动完成记住输入的值。基本结构基于browser native autocomplete for dynamically generated forms (handled with ajax)

我达到了两个目标并且表单工作正常,无论是通过Enter还是按钮提交。我甚至可以更改文本字段值并再次提交。 只有当我第二次提交表单而不更改文本字段值时,我才会得到org.apache.wicket.core.request.mapper.StalePageException。第一次或第二次提交是通过Enter还是Button发生并不重要。只要文本字段值未更改,任何组合都会导致stale renderCount。并没有改变'包括再次重新输入相同的值。这也导致了例外。

我不太确定如何在文本字段中输入新值会改变wicket处理页面的方式。欢迎任何帮助。

HTML:

    <html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
      <head>
        <wicket:head>
          <title>Suche   </title>
        </wicket:head>
      </head>
      <body>
        <form  target="the_iframe" wicket:id="w_form" id="myform" >
          <input wicket:id="w_input"/> 
          <label wicket:id="w_label">   </label>  
          <input wicket:id="w_button" type="submit"  onclick="myform.submit();"/>
        </form>
        <iframe name="the_iframe" hidden="true">   </iframe> 
      </body>
    </html>

Javacode:

public class TestseitePage extends WebPage {

  private final Form w_form = new Form("w_form");

  @Override
  protected void onInitialize() {
    super.onInitialize();
    final TextField<String> w_input = new TextField<String>("w_input", new Model<String>(""));
    final Model m = new Model<String>("Test");
    final Label w_label = new Label("w_label", m);
    w_label.setOutputMarkupId(true);
    add(w_form);
    w_form.add(w_label);
    w_form.add(w_input);
    final AjaxButton w_button = new AjaxButton("w_button") {
      @Override
      protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
        try {
          Thread.sleep(2000);
        } catch (final InterruptedException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
        m.setObject("Button " + new Date().getTime());
        target.add(w_label);
      }
    };
    w_form.add(w_button);
  }
}

1 个答案:

答案 0 :(得分:1)

从按钮的标记中删除onclick="myform.submit();"。在我看来,这将触发表单的非Ajax提交,这将导致整页重新呈现,从而更改Page#renderCount