有什么办法吗?
我听说了有关实现请求周期的一些信息,如何实现?
已尝试 How can I get the responsePage from a RequestCycle in Wicket 1.5?这个,但不起作用。
最佳答案
您在 Wicket 中得到 PageExpiredException
的原因是因为 Wicket 无法找到该页面。无法确定不再可用的页面类型,因为实际上该页面已不存在。它不复存在,遇到了它的制造者,失去了生命,安息了,它的生命周期现在是“历史”,结束了。这是一个前页面。
所以 Wicket 唯一的办法是提供 PageExpiredException
,并且(在 Wicket 本身)没有办法检索试图恢复的页面。
现在您可以尝试将最后呈现的页面的类存储在 session 中,并在 onException() 的 RequestCycleListener 实现中使用它并返回适当的请求处理程序。在代码中:
@Override
public void onRequestHandlerExecuted(RequestCycle cycle, IRequestHandler handler) {
Class<? extends Page> p = null;
if(handler instanceof IPageRequestHandler)
p = ((IPageRequestHandler)handler).getPageClass();
else if(handler instanceof IComponentRequestHandler)
p = ((IComponentRequestHandler)handler).getComponent().getPage().getClass();
MySession.get().setLastPageClass(p);
}
@Override
public IRequestHandler onException(RequestCycle cycle, Exception ex) {
Class<? extends Page> pageClass MySession.get().getLastPageClass();
... return some handler based on your logic
}
您可能想查看更多 IRequestHandler implementations在 onRequestHandlerExecuted
中。
关于java - Wicket setPageExpiredErrorPage 仅针对特定页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18053833/