php cdi

自上次写博客以来已经有一段时间了。 我一直在想写一些技术博客,但最终却忙于其他事情。 上周,在Coderanch论坛上进行了非常有趣的讨论。 甚至更有趣,因为它涉及JBoss。

熟悉Java EE Web应用程序的开发人员会知道,Web应用程序部署描述符(web.xml)允许您指定当服务器抛出特定异常(类)或错误代码时容器将显示的“错误页面”,一个网络请求。 这是一个简短的示例:

<web-app>  ...  <!-- A custom error page for error code == 500 -->  <error-page>   <error-code>500</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-type>org.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-type>org.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  isn't passed to the error page  -->  <error-page>   <exception-type>org.jboss.weld.context.NonexistentConversationException</exception-type>   <location>/my-foo-bar-exception-page.xhtml?nocid=true</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.html

php cdi

php cdi_涉及CDI和JSF的过期对话的定制错误页面相关推荐

  1. 涉及CDI和JSF的过期对话的定制错误页面

    自上次写博客以来已经有一段时间了. 我一直在考虑写一些技术博客,但最终却忙于其他事情. 上周,在Coderanch论坛上进行了非常有趣的讨论. 甚至更有趣,因为它涉及JBoss. 熟悉Java EE ...

  2. Shiro session过期跳转到登录页面问题

    Shiro session过期跳转到登录页面问题 shrio的session过期后(工程重启或者用户长时间没进行任何操作),当客户端再次向服务端发起请求时,shrio会判断用户没有登录授权,然后对请求 ...

  3. ajaxsetup获取ajax的url_ajaxsetup,组合拦截器处理session过期,跳转登录页面

    当前位置:我的异常网» Ajax » ajaxsetup,组合拦截器处理session过期,跳转登录页面 ajaxsetup,组合拦截器处理session过期,跳转登录页面 www.myexcepti ...

  4. php cdi_配置CDI对话的超时

    php cdi 在开发JSF应用程序时,CDI对话范围是一个很好的功能. 想象一下,您有大型数据表,需要很长时间才能加载. 由于高内存消耗,您通常不希望将加载的数据放置在会话作用域的Bean中. 而且 ...

  5. php cdi_集成CDI和WebSockets

    php cdi 考虑尝试一个简单的Java EE 7原型应用程序,该应用程序涉及JAX-RS(REST),WebSockets和CDI. 注意 :不想让它成为破坏者-但本文主要讨论我在尝试使用Web套 ...

  6. php cdi_使用CDI的InjectionPoint注入配置值

    php cdi 依赖注入是用于组织类依赖的一项出色技术. 当前类中需要的所有类实例都是在运行时从DI容器提供的. 但是您的配置呢? 当然,您可以创建一个" Configuration&quo ...

  7. php cdi_异步CDI事件

    php cdi 几天前,在我们的常规代码审查中,我的一位同事提出了一个问题,即如果可能,一次同时调用CDI观察者(这样的方法带有参数@Observes )将发生多次?用于不同的事件实例. 换句话说,在 ...

  8. jsf如何通过按钮切换在同一个页面上的非公共部分显示不同的内容

    2019独角兽企业重金招聘Python工程师标准>>> 在jsf中,同一个页面上有公有的内容,也有非公有的内容,通过一个按钮进行切换来显示不同的内容(通过ajax实现):    前台 ...

  9. aspjpeg已过期_Persits.Jpeg.1错误’800a0004′ AspJpeg组件过期解决方法 - YangJunwei

    最近一直很郁闷,原来正常使用的论坛签名显示博客最新文章的小插件最近一直显示红X,也找不出原因,也就没有再纠结了. 今天在做东西的时候,需要给上传的商品图片加水印,检测发现AspJpeg 1.5组件安装 ...

最新文章

  1. 准确判断他人忠诚度的有效办法
  2. JAVA--网络编程
  3. 属性提取器:获取ListView即时更新其元素的最佳方法
  4. leetcode174. 地下城游戏(动态规划)
  5. linux如何建立隐藏目录,【Linux】文件与目录的默认权限与隐藏权限
  6. 说说那些死于决斗的大牛
  7. bootstrap项目实例_101个Python项目打包放送,工作学习必备(源码放送)
  8. 说道说道 ios 图片尺寸的问题
  9. Spark scala和java的api使用
  10. 计算机内存的基本储存单元,计算机信息存储单元的结构解析
  11. ASP.NET的路由系统
  12. python中的urllib模块中的方法
  13. Java实战项目,附带源码+视频教程。
  14. 简单python爬虫爬取游戏wiki立绘
  15. 棚卸資産管理の用語一覧(Glossary of inventory control terms and phrases)
  16. 长期应用阿达木单抗时所产生的抗抗体会影响疗效
  17. 心态-《不抱怨的世界》书中的精髓:通过4个步骤,成为一个不抱怨、每天都快乐的人。
  18. 返回结果的HTTP状态码-HTTP(四)
  19. Java工程师培训课(十一、新的开始)
  20. mysql 的基本表的应用_Mysql的基本应用笔记1

热门文章

  1. Spring Boot 自动配置的 “魔法” 是如何实现的?
  2. JVM发生OOM的 8 种原因、及解决办法
  3. JavaFX官方教程(八)之JavaFX中的动画和视觉效果
  4. 青蛙跳台阶的问题——Fibonacci
  5. 零配置 之 Spring注解实现Bean定义
  6. Java 9 中的9个新特性
  7. 接口 DataInput
  8. TypeError: Cannot set property 'msg' of undefined
  9. keyshot卡住了还能保存吗_相机希望你知道的13件事 keyshot相机切换事件
  10. Linux ss命令 报错,ECS Linux中ss命令显示连接状态的使用说明