知识大全 JSF和struts基于框架的错误控制与封装处理
Posted 知
篇首语:既然选择远方,就注定风雨兼程。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 JSF和struts基于框架的错误控制与封装处理相关的知识,希望对你有一定的参考价值。
JSF和struts基于框架的错误控制与封装处理 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
在struts中 通常采用的全局错误控制模式是构建一个baseAction 在其execute方法中完成前台传回方法的dispatch操作 并由 try……catch……捕获程序错误 实现错误的控制和展示 一个典型的BaseAction例子如下
代码
public ActionForward execute(ActionMapping mapping ActionForm form HttpServletRequest request HttpServletResponse response)
……
ActionForward forwardPage = null
try
String parameter = mapping getParameter()
if (parameter == null)
String message = messages getMessage( dispatch handler mapping getPath())
response sendError( message)
return null
String name = processReqCode(request getParameter(parameter))
forwardPage = dispatchMethod(mapping form request response name)
catch (BaseException ex)
if (log isDebugEnabled())
log debug( 发生错误 ex)
forwardPage = processBaseException(request mapping ex)
catch (Throwable ex)
log error( 发生错误 ex)
ActionMessages errors = new ActionMessages()
ByteArrayOutputStream ostr = new ByteArrayOutputStream()
ex printStackTrace(new PrintStream(ostr))
errors add( apache struts action GLOBAL_MESSAGE new ActionMessage(ostr toString()))
saveErrors(request errors)
forwardPage = mapping findForward( syserror )
output setStatus( fail )
output setError(ex getMessage())
……
由于JSF采用了managed bean JSP页面直接通过调用managed bean中的方法完成数据交互 不能像struts一样通过捕获dispatch操作过程抛出的异常来完成错误的处理(因为根本就没有dispatch方法) 似乎jsf根本就不支持全局的错误处理
如果在managed bean中throw 一个exception(这里是AppException) 观察一下控制台的日志 可以看到其实错误是从一个ActionListener的实现中抛出的(针对myfaces 这里是ActionListenerImpl) 参考jsf的生命周期过程 方法出来了
代码
public class GlobalActionListener extends ActionListenerImpl
public void processAction(ActionEvent event) throws AbortProcessingException
FacesContext facesContext = FacesContext getCurrentInstance()
Application application = facesContext getApplication()
ActionSource actionSource = (ActionSource) event getComponent()
MethodBinding methodBinding = actionSource getAction()
String fromAction = null String oute = null
if (methodBinding != null)
fromAction = methodBinding getExpressionString()
try
oute = (String) methodBinding invoke(facesContext null)
catch (EvaluationException e)
Throwable cause = e getCause()
if (cause != null && cause instanceof AppException)
//这里需要根据框架的不同 判断实例是否是程序中手动抛出的错误
FacesUtils addErrorMessage(event getComponent() getClientId(facesContext) cause getMessage())
else
throw (AbortProcessingException) cause
catch (RuntimeException e)
throw new FacesException( Error calling action method of ponent with id + event getComponent() getClientId(facesContext) e)
NavigationHandler navigationHandler = application getNavigationHandler()
navigationHandler handleNavigation(facesContext fromAction oute)
// Render Response if needed
facesContext renderResponse()
监听器配置 faces config application xml
代码
<application> <variable resolver> springframework web jsf DelegatingVariableResolver</variable resolver> <message bundle>resources application</message bundle> <locale config> <default locale>en</default locale> </locale config> <action listener> snailportal webframework listener GlobalActionListener</action listener> </application>
cha138/Article/program/Java/ky/201311/28909相关参考
知识大全 基于hibernate的开源通用查询框架-bba96
bba框架当前版本包含 bbacore核心框架封装HibernateCriteria提供方便的查询以及分页支持查询参数 bbastruts基于Struts的开发框架依赖core提供便捷的CRU
简谈JSF与Struts的功能比较[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 首先事件
简谈JSF与Struts的功能比较[4] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Back
简谈JSF与Struts的功能比较[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 上述两个
JSF与Struts的比较超易懂![1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Stru
JSF与Struts的比较超易懂![3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Back
Java进阶:深入分析JSF与Struts的异同[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧
Java进阶:深入分析JSF与Struts的异同[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧
简谈JSF与Struts的功能比较[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在Str
JSF与Struts的比较超易懂![2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 正如St