九里徐州网站开发,wordpress不同分类,黄冈人才网最新招聘,成都建网站的公司php cdi自上次写博客以来已经有一段时间了。 我一直在想写一些技术博客#xff0c;但最终却忙于其他事情。 上周#xff0c;在Coderanch论坛上进行了非常有趣的讨论。 甚至更有趣#xff0c;因为它涉及JBoss。 熟悉Java EE Web应用程序的开发人员会知道#xff0c;Web应用… php cdi 自上次写博客以来已经有一段时间了。 我一直在想写一些技术博客但最终却忙于其他事情。 上周在Coderanch论坛上进行了非常有趣的讨论。 甚至更有趣因为它涉及JBoss。 熟悉Java EE Web应用程序的开发人员会知道Web应用程序部署描述符web.xml允许您指定当服务器抛出特定异常类或错误代码时容器将显示的“错误页面”一个网络请求。 这是一个简短的示例 web-app ... !-- A custom error page for error code 500 -- error-page error-code500/error-code location/my-foo-bar-500-page.html/location /error-page !-- A custom error page for exception type org.myapp.foo.bar.MyException -- error-page exception-typeorg.myapp.foo.bar.MyException/exception-type location/my-foo-bar-exception-page.html/location /error-page ... /web-app 足够简单–分别为特定错误代码和异常类型定义的几个自定义错误页面。 所有这些都很好。 目前在开发Web应用程序时越来越多的编程模型和框架出现在人们的视野中。 CDI和JSF就是其中一些。 CDI具有范围的概念例如请求范围会话范围应用程序范围会话范围。 我们不会详细介绍它们的含义以及何时使用它们但是让我们考虑一下此Blog中的对话范围因为这正是促使该Blog的论坛主题中的讨论内容。 因此CDI允许多个请求成为“对话范围”的一部分。 对话具有“开始”和“结束”两者都可以由应用程序管理。 当应用程序涉及JSF时任何对话id都会自动传播到JSF请求。 除了明确的对话开始/结束界限外对话也可能超时。 涉及对话已结束或超时的请求将遇到异常。 因此我们知道CDI对话范围有一些背景。 因此让我们考虑一种情况当引发“不再存在的对话”异常可能是由于超时时应用程序希望呈现美观的页面。 我们已经看到了如何为错误页面配置编写一个web.xml它很简单 web-app ... !-- A custom error page for exception type org.jboss.weld.context.NonexistentConversationException -- error-page exception-typeorg.jboss.weld.context.NonexistentConversationException/exception-type location/my-foo-bar-exception-page.html/location /error-page ... /web-app 很简单。 org.jboss.weld.context.NonexistentConversationException是异常类类型当会话超时时会抛出该异常类请注意我们假设Web应用程序依赖于Weld作为CDI规范实现库。 上面的配置工作正常。 抛出org.jboss.weld.context.NonexistentConversationException时将显示my-foo-bar-exception-page.html。 但是现在让我们考虑就像我们应用程序的其他部分一样我们希望在错误页面中包含JSF。 因此让我们将错误页面指向映射到JSF servlet的URL模式 web-app ... !-- A custom error page for exception type org.jboss.weld.context.NonexistentConversationException. Notice the nocid parameter being passed to make sure that the non-existent conversation id isnt passed to the error page -- error-page exception-typeorg.jboss.weld.context.NonexistentConversationException/exception-type location/my-foo-bar-exception-page.xhtml?nocidtrue/location /error-page ... /web-app 请注意我们将nocid参数作为错误页面位置的查询字符串的一部分传递。 “ nocid”参数的值实际上并不重要但是为了保持该值的逻辑性我们在这里使用了“ true”值。 完成此更改后您将开始注意到错误页面由JSF支持现在可以正确呈现 我们花了一段时间才在该论坛线程中获得此解决方案因为它看起来很简单应该可以“正常工作”但事实并非如此。这是我一直在谈论的Coderanch论坛线程 。 感谢Greg Charles找出如何传递nocid参数。 参考在Jaikiran My Wiki博客上来自我们的JCG合作伙伴 Jaikiran Pai的涉及CDI和JSF的过期对话的自定义错误页面 。 翻译自: https://www.javacodegeeks.com/2013/01/custom-error-pages-for-expired-conversations-involving-cdi-and-jsf.htmlphp cdi