无状态wicket页面仍然附加了页面版本URL参数 - 如何调试?

时间:2013-01-16 17:36:44

标签: parameters wicket stateless

我正在尝试使我的项目的页面完全无状态(更多页面来)并通过去除页面版本号,例如/mypage/?0

页面将statelessHint设置为true,我还在onBeforeRender中验证isStateless返回true。 我还使用@StatelessComponent注释来确保页面及其子组件确实非常无状态。

因此,似乎所有内容都是无状态的,但版本参数仍然附加到URL

我无法附加代码,因为它是一个包含许多组件且涉及大量继承的庞大构造。当然,我不希望有人告诉我哪里有问题,而是希望有些人能给我一个暗示何时在Wicket的来源中设置一个断点以找出问题所在。例如。任何人都可以告诉我哪个Wicket类负责决定是否附加版本参数?

提前致谢, 彼得

2 个答案:

答案 0 :(得分:5)

要确认网页是无状态的,您必须拨打Page#isPageStateless而不是Page#isStateless

为了完整起见,我还要提到@StatelessComponent本身什么都不做,但你必须安装StatelessChecker

getComponentPreOnBeforeRenderListeners().add(new StatelessChecker());
Application#init中的

。我认为它工作得很好,它应该找到任何有状态的组件。

答案 1 :(得分:2)

很明显,@StatelessComponent对所有子组件并不总是可靠的:(

您可以通过将org.apache.wicket.Page的日志级别设置为DEBUG来调试此操作,这会将大量行添加到控制台输出中。 Grep for“is not stateless因为”找到有关有状态的渲染组件的消息。

就我而言,它是Image,其getStatelessHint()方法返回false(不明白为什么)。