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

歡迎訪問 生活随笔!

生活随笔

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

javascript

jsf集成spring_Spring和JSF集成:异常处理

發(fā)布時間:2023/12/3 javascript 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jsf集成spring_Spring和JSF集成:异常处理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

jsf集成spring

大多數(shù)JSF開發(fā)人員都會熟悉“發(fā)生錯誤”頁面,當(dāng)在他們的代碼某處引發(fā)意外異常時,該頁面就會顯示。 該頁面在開發(fā)時確實很有用,但對于生產(chǎn)應(yīng)用程序通常不是您想要的。 通常,在使用庫存JSF替換此頁面時,通常有兩種選擇。 您可以在web.xml中使用定義一些HTML <error-page>元素, 也可以 編寫自定義ExceptionHandler

這兩個選項都不是Spring開發(fā)人員的理想選擇, <error-page>元素往往過于簡單,并且很難將Spring概念(例如依賴項注入)與自定義ExceptionHandler一起使用 。 幸運的是,JSF和Spring都是這么一個非常可擴展的框架項目 ,我一直在努力整合這些技術(shù)可以提供一些引人注目的替代品。

第一個可用選項允許ExceptionHandler被注冊為Spring Bean。 可以使用新的org.springframework.springfaces.exceptionhandler.ExceptionHandler接口,而不是使用現(xiàn)有的javax.faces.context.ExceptionHandler類。 該接口非常簡單,它定義了一個單一的handle方法,如果已處理了異常,則該方法應(yīng)返回true 。 該接口使用泛型來限制所考慮的異常類型。

public interface ExceptionHandler<E extends Throwable> {boolean handle(E exception, ExceptionQueuedEvent event) throws Exception; }

當(dāng)JSF發(fā)生異常時,將查詢實現(xiàn)ExceptionHandler接口的所有相關(guān)bean。 返回true的第一個處理程序?qū)ⅰ矮@勝”,隨后的處理程序?qū)⒉粫徽{(diào)用。 如果需要對處理程序進行排序,則可以使用org.springframework.core.Ordered接口或@Ordered批注。 當(dāng)然,既然異常處理程序是常規(guī)的Spring Bean,則可以使用所有標(biāo)準(zhǔn)的Spring功能,例如依賴項注入和AOP。

現(xiàn)在我們有了基本的異常處理程序掛鉤,我們可以繼續(xù)提供一些有用的實現(xiàn):

有時,處理某些異常的最佳方法是僅顯示一條消息并保留在當(dāng)前屏幕上。 例如,假設(shè)搜索查詢范圍太廣時服務(wù)會拋出TooManyResultsException 。 一條簡單的消息告訴用戶“使用更精確的條件重試”可能是唯一需要的異常處理。 org.springframework.springfaces.exceptionhandler.ObjectMessageExceptionHandler類基于將對象映射到消息的先前工作 。 在您的Spring MessageSource中包含一個帶有Exception的全限定名稱的項作為鍵,如果拋出該異常,將顯示FacesMessage 。

com.mycorp.search.TooManyResultsException=Too many results found, please try again with more precise search terms

您可以輕松地將任意數(shù)量的異常映射到消息,甚至可以使用消息字符串中的' {property} '占位符來引用異常的屬性 。 可以使用標(biāo)準(zhǔn)JSF技術(shù)(通常是<h:messages />組件)在屏幕上顯示消息 。

快速將異常映射到消息的支持很好,但是對于許多應(yīng)用程序來說,這還遠遠不夠,編寫ExceptionHandler bean很快會變得很麻煩。 最終的可選選項是org.springframework.springfaces.mvc.exceptionhandler.DispatcherExceptionHandler 。 DispatcherExceptionHandler在JSF和Spring MVC之間提供了一個橋梁,使您可以像在其他任何Spring MVC應(yīng)用程序中一樣在@Controller中使用@ExceptionHandler注釋。 用@ExceptionHandler注釋的方法實際上是通用的,并且可以具有非常靈活的簽名。 您可以直接處理異常或返回應(yīng)呈現(xiàn)的視圖:

@ExceptionHandler public String handle(ExampleException e) {return 'redirect:errorpage'; }

在Spring MVC上使用@ExceptionHandler批注是很自然的事情 ,并且有很多關(guān)于該主題的文章 。 希望現(xiàn)有的JSF開發(fā)人員將發(fā)現(xiàn)Spring MVC編程風(fēng)格是標(biāo)準(zhǔn)JSF的一種有吸引力的替代方案。

請查看本系列的其他文章 ,如果您想檢查異常處理代碼,那么“ org.springframework.springfaces.exceptionhandler”和“ org.springframework.springfaces.mvc.exceptionhandler”軟件包是一個很好的起點。 。

參考: Phil Webb博客博客中我們JCG合作伙伴 Phillip Webb的Spring和JavaServer Faces集成:異常處理 。


翻譯自: https://www.javacodegeeks.com/2012/07/spring-jsf-integration-exception.html

jsf集成spring

總結(jié)

以上是生活随笔為你收集整理的jsf集成spring_Spring和JSF集成:异常处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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