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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

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

發(fā)布時(shí)間:2023/12/3 javascript 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 涉及CDI和JSF的过期对话的定制错误页面 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

自上次寫(xiě)博客以來(lái)已經(jīng)有一段時(shí)間了。 我一直在考慮寫(xiě)一些技術(shù)博客,但最終卻忙于其他事情。 上周,在Coderanch論壇上進(jìn)行了非常有趣的討論。 甚至更有趣,因?yàn)樗婕癑Boss。

熟悉Java EE Web應(yīng)用程序的開(kāi)發(fā)人員會(huì)知道,Web應(yīng)用程序部署描述符(web.xml)允許您指定當(dāng)服務(wù)器拋出特定異常(類(lèi))或錯(cuò)誤代碼時(shí)容器將顯示的“錯(cuò)誤頁(yè)面”,網(wǎng)絡(luò)請(qǐng)求。 這是一個(gè)簡(jiǎn)短的示例:

<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>

足夠簡(jiǎn)單–分別為特定的錯(cuò)誤代碼和異常類(lèi)型定義的幾個(gè)自定義錯(cuò)誤頁(yè)面。 所有這些都很好。 當(dāng)前,在開(kāi)發(fā)Web應(yīng)用程序時(shí),越來(lái)越多的編程模型和框架出現(xiàn)在人們的視野中。 CDI和JSF就是其中一些。 CDI具有范圍的概念(例如:請(qǐng)求范圍,會(huì)話范圍,應(yīng)用程序范圍,對(duì)話范圍)。 我們不會(huì)詳細(xì)介紹它們的含義和使用時(shí)間,但讓我們考慮一下此博客中的對(duì)話范圍,因?yàn)檫@正是促使該博客的論壇主題中有關(guān)討論的內(nèi)容。

因此,CDI允許多個(gè)請(qǐng)求成為“對(duì)話范圍”的一部分。 對(duì)話具有“開(kāi)始”和“結(jié)束”,兩者都可以由應(yīng)用程序管理。 當(dāng)應(yīng)用程序涉及JSF時(shí),所有對(duì)話(id)都會(huì)自動(dòng)傳播到JSF請(qǐng)求。 除了明確的對(duì)話開(kāi)始/結(jié)束界限外,對(duì)話也可能超時(shí)。 涉及對(duì)話已結(jié)束或超時(shí)的請(qǐng)求將遇到異常。

因此,我們知道CDI對(duì)話范圍有一些背景。 因此,讓我們考慮一種情況,當(dāng)引發(fā)“不再存在的對(duì)話”異常(可能是由于超時(shí))時(shí),應(yīng)用程序希望呈現(xiàn)美觀的頁(yè)面。 我們已經(jīng)看到了如何為錯(cuò)誤頁(yè)面配置編寫(xiě)一個(gè)web.xml,它很簡(jiǎn)單:

<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>

很簡(jiǎn)單。 org.jboss.weld.context.NonexistentConversationException是異常類(lèi)類(lèi)型,當(dāng)會(huì)話超時(shí)時(shí)會(huì)拋出該異常類(lèi)(請(qǐng)注意,我們假設(shè)Web應(yīng)用程序依賴于Weld作為CDI規(guī)范實(shí)現(xiàn)庫(kù))。 上面的配置工作正常。 拋出org.jboss.weld.context.NonexistentConversationException時(shí),將顯示my-foo-bar-exception-page.html。 但是,現(xiàn)在讓我們考慮,就像我們應(yīng)用程序的其他部分一樣,我們希望在錯(cuò)誤頁(yè)面中包含JSF。 因此,讓我們將錯(cuò)誤頁(yè)面指向映射到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>

請(qǐng)注意,我們將“ nocid”參數(shù)作為錯(cuò)誤頁(yè)面位置的查詢字符串的一部分傳遞。 “ nocid”參數(shù)的值實(shí)際上并不重要,但是為了保持該值的邏輯性,我們?cè)谶@里使用了“ true”值。 完成此更改后,您將開(kāi)始注意到錯(cuò)誤頁(yè)面(由JSF支持)現(xiàn)在可以正確呈現(xiàn)!

我們花了一段時(shí)間才在該論壇線程中找到此解決方案,因?yàn)樗雌饋?lái)很簡(jiǎn)單,應(yīng)該可以“正常工作”,但事實(shí)并非如此。這是我一直在談?wù)摰腃oderanch論壇線程 。 感謝Greg Charles找出如何傳遞該nocid參數(shù)。

參考: Jaikiran My Wiki博客上來(lái)自JCG合作伙伴 Jaikiran Pai的涉及CDI和JSF的過(guò)期對(duì)話的自定義錯(cuò)誤頁(yè)面 。

翻譯自: https://www.javacodegeeks.com/2013/01/custom-error-pages-for-expired-conversations-involving-cdi-and-jsf.html

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。