Java Wicket主页初始加载时未更新的模型
我在理解我做错了什么方面遇到了一些问题 我的工作:Java Wicket主页初始加载时未更新的模型,java,firefox,wicket,page-lifecycle,Java,Firefox,Wicket,Page Lifecycle,我在理解我做错了什么方面遇到了一些问题 我的工作: 在我的应用程序中重写getHomePage()。我返回MyStartPage.class MyStartPage是MySubPage的一个子类 MySubPage是MySuperPage的一个子类 在MySuperPage中,我添加了一个面板。此面板有一个TextField和WebMarkupContainer,其中包含一个AjaxEventBehavior(onclick),用于打印TextField的backing modelObject
- 在我的应用程序中重写getHomePage()。我返回MyStartPage.class
- MyStartPage是MySubPage的一个子类
- MySubPage是MySuperPage的一个子类
- 在MySuperPage中,我添加了一个面板。此面板有一个TextField和WebMarkupContainer,其中包含一个AjaxEventBehavior(onclick),用于打印TextField的backing modelObject
- 即使单击WebMarkupContainer时用户输入不是空的,打印的modelObject也是空的
- 单击WebMarkupContainer时,打印的modelObject与用户输入匹配
- 在我的应用程序中重写getHomePage()并返回MyLoginPage。MyLoginPage包含MySigninPanel。在MySigninPanel中,我覆盖OnSignensAcceded(),如下所示:
@Override protected void onSignInSucceeded() { setResponsePage(new MyStartPage()); }
这似乎只是Firefox中的一个问题,或者至少它在IE9中的Chrome IE9和IE8模式下工作正常。除非您提交带有单击事件的表单,否则您的文本字段的模型不会用用户输入的数据更新。您的文本字段应该是该表单的子字段。如果是,则其内容将被发送到服务器,转换为目标类型,并进行验证。成功后,您将能够查询模型并查看页面上输入的数据 为此,应使用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
}
});
嗯,我有一个解决办法,虽然我不知道为什么它会起作用。我补充说
mountPage(“发票/概述”,概述页.class)代码>
在我的Web应用程序中,现在它可以在FireFox中使用(概览页面在我的第一篇文章中被称为“MyStartPage”)
以下是wicket.ajax.baseurl和浏览器中键入的url在更改之前的样子(当它不起作用时):
baseUrl:wicket/bookmarkable/eyesys.web.invoice.overview.OverviewPage
浏览器url:wicket/bookmarkable/eyesys.web.invoice.overview.OverviewPage?1
更改后:
baseUrl:发票/概览
浏览器url:发票/概述?1
感谢您的回复。我正在检查我的代码,实际上我就是这么做的(我尝试使用AjaxEventBehavior并向文本字段添加AjaxFormComponentUpdateingBehavior(onchange),但这也不起作用)。通过您的示例,我了解了为什么当我单击系统中的另一个链接时,它会开始工作,但是每次更改输入后,如果我不这样做,textField的modelObject就不会更改。我看到的是,在我单击另一个链接后,它每次都会工作,包括AjaxEventBehavior和AjaxFormSubmitBehavior。有什么想法吗?