java - Wicket setPageExpiredErrorPage 仅针对特定页面?

标签 java apache request wicket

有什么办法吗?

我听说了有关实现请求周期的一些信息,如何实现?

已尝试 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 implementationsonRequestHandlerExecuted 中。

关于java - Wicket setPageExpiredErrorPage 仅针对特定页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18053833/

相关文章:

java - 如果在其他配置文件中添加路由,为什么主配置中的路由未加载?

java - 变量定义在外循环和内循环之间有区别吗?

java - 一种算法,其中最终输出在 y 和 x 之间随机选择,但获得高值的机会较低

java - 如何迭代并从 session 中获取所有用户名

apache - 提高水槽性能的指导方针是什么

java - apache tomcat 8.0.9 没有突然启动

apache - 如何在 .htaccess 中为 IE 9 设置 HTTP header

javascript - 在 JavaScript/jQuery 中向 API 发出 POST 请求

php - Symfony 请求 - 获取内部服务器错误

node.js - 如何在nodejs中的端点调用中传递变量