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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > php >内容正文

php

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

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

php cdi

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

熟悉Java EE Web應(yīng)用程序的開發(fā)人員會(huì)知道,Web應(yīng)用程序部署描述符(web.xml)允許您指定當(dāng)服務(wù)器拋出特定異常(類)或錯(cuò)誤代碼時(shí)容器將顯示的“錯(cuò)誤頁(yè)面”,一個(gè)網(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ò)誤代碼和異常類型定義的幾個(gè)自定義錯(cuò)誤頁(yè)面。 所有這些都很好。 目前,在開發(fā)Web應(yīng)用程序時(shí),越來越多的編程模型和框架出現(xiàn)在人們的視野中。 CDI和JSF就是其中一些。 CDI具有范圍的概念(例如:請(qǐng)求范圍,會(huì)話范圍,應(yīng)用程序范圍,會(huì)話范圍)。 我們不會(huì)詳細(xì)介紹它們的含義以及何時(shí)使用它們,但是讓我們考慮一下此Blog中的對(duì)話范圍,因?yàn)檫@正是促使該Blog的論壇主題中的討論內(nèi)容。

因此,CDI允許多個(gè)請(qǐng)求成為“對(duì)話范圍”的一部分。 對(duì)話具有“開始”和“結(jié)束”,兩者都可以由應(yīng)用程序管理。 當(dāng)應(yīng)用程序涉及JSF時(shí),任何對(duì)話(id)都會(huì)自動(dòng)傳播到JSF請(qǐng)求。 除了明確的對(duì)話開始/結(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è)面配置編寫一個(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是異常類類型,當(dāng)會(huì)話超時(shí)時(shí)會(huì)拋出該異常類(請(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”值。 完成此更改后,您將開始注意到錯(cuò)誤頁(yè)面(由JSF支持)現(xiàn)在可以正確呈現(xiàn)!

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

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

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

php cdi

總結(jié)

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

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