我第一次使用以下 URL 导航到我的应用程序:
.../主页/?0&用户=x
在调试模式下,我看到 wicket 很好地实例化了我的面板等(显然)。
如果我将 URL 更改为:
.../主页/?0&用户=y
那么什么也没有发生,面板不会重新初始化(对于新用户 => 用户 x 的数据仍然显示),也不会调用 LoadableDetachable 或其他模型。
但是,如果我将 URL 更改为:
.../主页/?1&用户=y
然后所有面板都为用户很好地初始化y
更进一步,如果您将 URL 更改回
.../主页/?0&用户=y
然后再次是用户的数据x被展示。
看起来 Wicket 并不关心 URL 中的参数发生变化来决定是否重新加载组件。 AFAIK 这在 Wicket 1.4 中运行良好。我想我理解这种行为背后的逻辑,但不确定。另外,我想知道如果自定义参数发生更改,如何强制 Wicket 重新加载,以及如何从 URL 中删除“丑陋”?0(如果可能)?
这就是 Wicket 的有状态本质。页面实例化一次,参数解析等等。稍后,您将不同的参数传递给已实例化的页面,但这次根本没有调用其构造函数,因此 PageParameters 不会更新。更改为 ?1 会向 Wicket 请求 id 为 1 的页面,并且由于不存在这样的 Wicket 实例化一个新实例并传递新参数。如果您想始终拥有最新的请求参数,请使用 getRequest().getRequestParameter("user") ,它将为您提供所需的内容。
说得通 ?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)