Java 升级到Wicket 7后未调用表单onSubmit()

Java 升级到Wicket 7后未调用表单onSubmit(),java,wicket,Java,Wicket,我正在升级我们的web应用程序以使用Wicket 7(当时使用的是6.19) 第一个页面是一个登录屏幕,但由于某种原因,表单的onSubmit()方法没有被调用,因此单击submit按钮,我只会重新显示登录页面 我咨询了Wicket 7,它没有提到这方面的任何具体变化 正如您所看到的,这是一个非常简单的例子,它是一个包含用户名和密码字段的简单表单 <form wicket:id="loginform" id="loginform" > <table st

我正在升级我们的web应用程序以使用Wicket 7(当时使用的是6.19)

第一个页面是一个登录屏幕,但由于某种原因,表单的
onSubmit()
方法没有被调用,因此单击submit按钮,我只会重新显示登录页面

我咨询了Wicket 7,它没有提到这方面的任何具体变化

正如您所看到的,这是一个非常简单的例子,它是一个包含用户名和密码字段的简单表单

    <form wicket:id="loginform" id="loginform" >
        <table style="display: table; border: 0px; margin: auto;">
            <tr style="display: table-row;">
                <td class="login" colspan="2"><span wicket:id="feedback">Feedback</span></td>
            </tr>
            <tr style="display: table-row;">
                <td class="login">
                    <label for="username"><wicket:message key="username">Username</wicket:message>:&nbsp;</label>
                </td>
                <td class="login">
                    <input wicket:id="username" id="username" type="text" name="user" value="" size="30" maxlength="50"/>
                </td>
            </tr>
            <tr style="display: table-row;">
                <td class="login">
                    <label for="password"><wicket:message key="password">Password</wicket:message>:&nbsp;</label>
                </td>
                <td class="login">
                    <input wicket:id="password" id="password" type="password" name="pswd" value="" size="30" maxlength="16"/>
                </td>
            </tr>
            <tr style="display: table-row;">
                <td class="login">&nbsp;</td>
                <td class="login"><input class="btn" type="submit" name="Login" value="Login" wicket:message="title:loginButtonTitle"/></td>
            </tr>
        </table>
    </form>
这是登录表单(Login()方法对用户进行身份验证并返回另一个页面)-

public final类LoginForm扩展表单
{
页面参数页面参数;
公共登录信息(字符串id、SimpleUser SimpleUser、PageParameters PageParameters)
{
super(id,新的CompoundPropertyModel(simpleUser));
this.pageParameters=页面参数;
添加(新文本字段(“用户名”).setRequired(true).add(StringValidator.maximumLength(50));
添加(newpasswordtextfield(“password”).setResetPassword(true).add(StringValidator.maximumLength(50));
}
/**
*在表单提交时调用。尝试对用户进行身份验证。
*/
受保护的void onSubmit()
{
SimpleUser=getModel().getObject();
字符串username=user.getUsername();
字符串password=user.getPassword();
登录(用户名、密码、页面参数);
}
}

我还尝试使用submit按钮,但也没有调用它的
onSubmit()

如果没有调用
onSubmit()
,那么可能是
onError()
。在表单#onFormSubmitted()上放置一个断点,然后查看发生了什么。Form.onFormSubmitted()永远不会被调用。error()也不会被调用。日志中未报告任何错误。没有抛出异常。好吧,这就是问题的原因,但我不知道为什么。在我们的WebApplication类中,页面是这样装载的(new-NoVersionMount(“/login”,login.class));这就是问题的根源。但是下面的方法效果更好:mountPage(“/login”,login.class);因此,我们版本的MountedMapper类导致表单提交出现问题。在我们的MountedMapper类中,出于某种原因,我们重写了encodePageComponentInfo()方法,什么也不做。一旦我把它注释掉,它就在@Override protected void encodePageComponentInfo(Url-Url,PageComponentInfo-info){//什么都不做,这样组件信息就不会//在Url中呈现了}
public class Login extends UnSecurePageTemplate {
private static final long serialVersionUID = -7202246935258483555L;

@SpringBean private IBrandingService brandingService;
@SpringBean private IRemonService remonService;
@SpringBean private IUserAdminService userAdminService ;

private static final Logger logger  = LoggerFactory.getLogger( Login.class);

public Login()  {
    this(new PageParameters());
}

public Login(PageParameters pageParameters) {
    super(pageParameters);


    BrandingThemeProperties properties = brandingService.getBrandingThemeProperties();

    String welcomeLabel = properties.getProperty("welcome-label");

    add(new Label("welcome", welcomeLabel));
    add(new Label("loginHeader", getStringFromPropertiesFile("loginInstruction", this)));

    LoginForm form = new LoginForm("loginform", new SimpleUser(), pageParameters);
    form.add(new FeedbackPanel("feedback"));

    add(form);
}
public final class LoginForm extends Form<SimpleUser>
{
    PageParameters pageParameters;

    public LoginForm(String id, SimpleUser simpleUser, PageParameters pageParameters)
    {
        super(id, new CompoundPropertyModel<SimpleUser>(simpleUser));
        this.pageParameters = pageParameters;

        add(new TextField<String>("username").setRequired(true).add(StringValidator.maximumLength(50)));
        add(new PasswordTextField("password").setResetPassword(true).add(StringValidator.maximumLength(50)));

   }


    /**
     * Called upon form submit. Attempts to authenticate the user.
     */
    protected void onSubmit()
    {
        SimpleUser user = getModel().getObject();
        String username = user.getUsername();
        String password = user.getPassword();

        login(username, password, pageParameters);
    }
}