gpt4 book ai didi

java - Wicket 表格和后退按钮问题

转载 作者:行者123 更新时间:2023-12-01 04:52:32 30 4
gpt4 key购买 nike

我不知道我是否错过了什么,但我有以下问题。我正在使用 wicket 6.5.0,我有一个带有一个字段的简单表单。提交表格将我重定向到另一页。当我按下浏览器(firefox 14)上的后退按钮时,我返回到我的表单,但它是空的。我希望看到它处于我提交的状态。

我还注意到,如果我位于表单的第一页,则我的版本为/?0。提交会将我带到版本为/second?2 的页面,后退按钮会将我带回版本为/?0 的页面。为什么会发生这种情况?为什么我要跳过版本?1?

这是我的代码:WicketApplication.java

public class WicketApplication extends WebApplication
{

@Override
public Class<? extends WebPage> getHomePage()
{
return HomePage.class;
}

@Override
public void init()
{
super.init();
mountPage("second", SecondPage.class);
}
}

HomePage.java:

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()));
}
}
}

主页.html

...
<form wicket:id="form">
<input type="text" wicket:id="field" value="" size="50" /> <input
type="submit" value="submit" />
</form>
...

感谢您的回复。

最佳答案

提交时,因为模型发生了变化,页面变脏了,wicket 增加了页面的版本,并将其添加到页面管理器中。因此,创建了一个版本 1,您可以通过插入 ?1 来访问它。如果您尝试一下,您应该会看到 html Wicket 口中的预期值正在发送回来。

您可以通过覆盖页面上的 isVersioned 并返回 false 来解决此问题。

来自组件 - isVersioned():

If a Page is not versioned then it wont track changes in its components and will use the same Page#getPageId() during its lifetime

这意味着它将根据现有页面 ID 序列化脏页面。

关于java - Wicket 表格和后退按钮问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14740458/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com