Java Wicket表单和返回按钮问题
我不知道我是否错过了什么,但我有以下问题。 我使用的是wicket 6.5.0,我有一个字段的简单表单。提交表单会在另一页上重定向我。当我按下浏览器(firefox 14)上的后退按钮时,我返回到我的表单,但它是空的。我想在我提交的状态下看到它 我还注意到,如果我在表单的第一页,那么我有version/?0。提交带我到版本为/second?2的页面时,返回按钮将带我回到版本为/?0的页面。 为什么会这样?为什么跳过版本?1 这是我的密码: WicketApplication.javaJava Wicket表单和返回按钮问题,java,forms,wicket,back-button,Java,Forms,Wicket,Back Button,我不知道我是否错过了什么,但我有以下问题。 我使用的是wicket 6.5.0,我有一个字段的简单表单。提交表单会在另一页上重定向我。当我按下浏览器(firefox 14)上的后退按钮时,我返回到我的表单,但它是空的。我想在我提交的状态下看到它 我还注意到,如果我在表单的第一页,那么我有version/?0。提交带我到版本为/second?2的页面时,返回按钮将带我回到版本为/?0的页面。 为什么会这样?为什么跳过版本?1 这是我的密码: WicketApplication.java publi
public class WicketApplication extends WebApplication
{
@Override
public Class<? extends WebPage> getHomePage()
{
return HomePage.class;
}
@Override
public void init()
{
super.init();
mountPage("second", SecondPage.class);
}
}
公共类WicketApplication扩展了WebApplication
{
@凌驾
当您提交时,由于模型已更改,页面被弄脏,wicket会增加页面的版本并将其添加到页面管理器中。因此,创建了一个版本1,您可以通过插入?1来访问。如果您尝试,您应该会看到html wicket发送回的预期值
您可以通过覆盖页面上的isVersioned,返回false来解决这个问题
来自组件-isVersioned():
如果页面未进行版本控制,则它不会跟踪其组件中的更改,并将在其生存期内使用相同的页面#getPageId()
这意味着它将根据现有页面id序列化脏页
public class HomePage extends WebPage {
private static final long serialVersionUID = 1L;
public HomePage(final PageParameters parameters) {
super(parameters);
add(new SimpleForm("form"));
}
public final class SimpleForm extends Form<Void>
{
private static final long serialVersionUID = -562538189475312724L;
private final ValueMap properties = new ValueMap();
public SimpleForm(final String id)
{
super(id);
add(new TextField<String>("field", new PropertyModel<String>(properties, "field")));
}
@Override
public final void onSubmit()
{
setResponsePage(new SecondPage(getPageParameters()));
}
}
}
...
<form wicket:id="form">
<input type="text" wicket:id="field" value="" size="50" /> <input
type="submit" value="submit" />
</form>
...