我在理解我做错了什么时遇到了一些问题。
我做了什么:
当我启动服务器并浏览localhost / MyApp时会发生什么:
当我启动服务器,浏览localhost / MyApp,转到我的应用程序中的另一个页面然后返回MyStartPage时会发生什么:
当我执行以下操作时,它也有效:
在我的应用程序中覆盖getHomePage()并返回MyLoginPage。 MyLoginPage包含MySigninPanel。在MySigninPanel中,我重写onSignInSucceeded(),如下所示:
@Override
protected void onSignInSucceeded() {
setResponsePage(new MyStartPage());
}
当用户第一次点击WebMarkupContainer时,有人可以了解一下让TextField正常工作的正确方法吗?
提前致谢!
//编辑:
这似乎只是Firefox中的问题,或者至少它在IE9中的Chrome IE9和IE8模式下运行良好。
答案 0 :(得分:1)
除非您使用点击事件提交表单,否则不会使用用户输入的数据更新您的TextField模型。您的TextField应该是该Form的子级。如果是,则将其内容发送到服务器,转换为目标类型并进行验证。成功后,您将能够查询模型并查看在页面上输入的数据。
为此,您应该使用AjaxFormSubmitBehavior而不是您当前使用的AjaxEventBehavior:
webMarkupContainer.add(new AjaxFormSubmitBehavior(form, "onclick") {
@Override
protected void onSubmit(AjaxRequestTarget target) {
// You can now see what was entered in your TextField
System.out.println(textField.getModelObject());
}
@Override
protected void onError(AjaxRequestTarget target) {
// An error occurred and you should provide some kind of feedback
}
});
答案 1 :(得分:0)
嗯,我有一个解决方案,虽然我不确定为什么它的工作原理。我添加了
mountPage("invoice/overview", OverviewPage.class);
在我的WebApplication中,现在它在FireFox中工作(在我的初始帖子中,OverviewPage被称为'MyStartPage')。
以下是wicket.ajax.baseurl和浏览器中输入的网址在更改之前的样子,当它不起作用时:
baseUrl:wicket/bookmarkable/eyesys.web.invoice.overview.OverviewPage
浏览器网址:wicket/bookmarkable/eyesys.web.invoice.overview.OverviewPage?1
改变之后:
baseUrl:invoice/overview
浏览器网址:invoice/overview?1