Wicket提交行动不起作用

时间:2014-03-31 21:39:36

标签: wicket

将Wicket从版本6.12更新到6.13 / 6.14 onSubmit后,操作无效。对于示例类:

public class LoginPage extends WebPage {

    private String username = "";
    private String password = "";

    public LoginPage() {
        super();
        Form<?> form = new Form<Void>("form");

        setDefaultModel(new CompoundPropertyModel<>(this));

        form.add(new Button("submit") {

            @Override
            public void onSubmit() {
                System.out.println("SUBMIT "+username+":"+password);
            }
        });
        form.add(new TextField<String>("username").setRequired(true));
        form.add(new PasswordTextField("password").setRequired(true));
        add(form);

    }
}

使用HTML:

<!DOCTYPE html>
<html xmlns:wicket>
<body>
    <form wicket:id="form">
    <input id="name" type="text" placeholder="Username" wicket:id="username">
    <input id="password" type="password" placeholder="Password" wicket:id="password">
    <input type="submit" wicket:id="submit" value="Enter">
    </form>
</body>
</html>

不适用于wicket版本6.13+以及wicket 6.12-的出色工作。在像SubmitLink这样的东西上更改按钮并没有帮助。

你能告诉我出了什么问题吗?

2 个答案:

答案 0 :(得分:1)

嗯...... hacky但它​​似乎与6.15一起使用。 将encodePageComponentInfo替换为以下内容。

@Override
protected void encodePageComponentInfo(Url url, PageComponentInfo info) {
      Args.notNull(url, "url");

      if (info != null) {
          String s = info.toString();
          if (!Strings.isEmpty(s)) {
              try {
                  Integer.parseInt(s);
              } catch (Exception e) {
                  QueryParameter parameter = new QueryParameter(s, "");
                  url.getQueryParameters().add(parameter);
              }
          }
     }
}

答案 1 :(得分:0)

我在测试项目中发现了问题。我使用更改的MountedMapper来隐藏URL中的版本号:

/**
* Wrapper for hiding the version number in the URL
*/
public class SimpleMountedMapper extends MountedMapper {
    public SimpleMountedMapper(String mountPath, Class<? extends IRequestablePage> pageClass) {
        super(mountPath, pageClass, new PageParametersEncoder());
    }

    @Override
    protected void encodePageComponentInfo(Url url, PageComponentInfo info) {
    }

    public Url mapHandler(IRequestHandler requestHandler) {
        if (requestHandler instanceof ListenerInterfaceRequestHandler) {
            return null;
        } else {
            return super.mapHandler(requestHandler);
        }
    }
}

在wicket的新版本中,这个实现有问题(从this question获得)。