日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

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

發布時間:2023/12/3 javascript 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 涉及CDI和JSF的过期对话的定制错误页面 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

自上次寫博客以來已經有一段時間了。 我一直在考慮寫一些技術博客,但最終卻忙于其他事情。 上周,在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具有范圍的概念(例如:請求范圍,會話范圍,應用程序范圍,對話范圍)。 我們不會詳細介紹它們的含義和使用時間,但讓我們考慮一下此博客中的對話范圍,因為這正是促使該博客的論壇主題中有關討論的內容。

因此,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

總結

以上是生活随笔為你收集整理的涉及CDI和JSF的过期对话的定制错误页面的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。