浏览 3186 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-09-07
最后修改:2010-09-07
一般的struts2异常处理流程分为 1.action抛出的异常 2.action返回error 针对这两种异常,我们通过message文件同一定义异常,在程序中返回异常编码,流程如下: 1.定义异常属性文件XXX.properties
shop.shopaction.error.editshopinfo = 店铺名称或域名已存在,修改失败! shop.vendershopaction.exist.error=店铺不存在 shop.vendershopaction.banner.error=banner图片类型或大小错误 shop.vendershopaction.logo.error=logo图片类型或大小错误 shop.vendershopaction.venderorshop.error=商家或店铺已停用
2.定义struts.xml。 属性文件的引用、全局异常的定义
<constant name="struts.custom.i18n.resources" value="message/message"/>
<global-results> <result name="exception">/WEB-INF/vm/error.vm</result> <result name="error">/WEB-INF/vm/error.vm</result> </global-results> <global-exception-mappings>
<exception-mapping exception="java.lang.Exception" result="exception"/>
</global-exception-mappings>
3.定义velocity.properties
tools.view.servlet.layout.directory=/WEB-INF/vm/layout/ tools.view.servlet.error.template=/WEB-INF/vm/error.vm tools.view.servlet.layout.default.template=default.vm velocimacro.library=/WEB-INF/vm/macro.vm input.encoding=gbk output.encoding=gbk runtime.log.logsystem.class=org.springframework.ui.velocity.CommonsLoggingLogSystem
4.编写error.vm
#* @vtlvariable name="exception" type="java.lang.Exception" *# #* @vtlvariable name="result" type="com.jd.common.web.result.Result" *# #if($exception) #if($!exception.class.simpleName=="NoSuchMethodException") $!response.setStatus(404) 404! 您请求的内容不存在 #else 出错了: $exception.message #end #elseif($result) #if($result.resultCode) #showSimpleError() #else 系统错误 #end #end
5.编写macro.vm(引用的showSimpleError() 方法)
#* @vtlvariable name="module" type="com.jd.common.web.url.JdUrl" *# #* @vtlvariable name="page" type="com.jd.common.util.base.PaginatedArrayList" *# #macro(showSimpleError) #if(!$!actionErrors.empty) #foreach($str in $actionErrors) $!str #break #end #end #end
6. a.action中抛出异常时,struts捕获异常,跳入error.vm中,显示相应内容 b.action返回error时:
String text = getText("shop.shopaction.error.editshopinfo");//店铺名称或域名已存在,修改失败! addActionError(text); 最后在页面显示处调用宏方法
#showSimpleError()
至此,struts2整合velocity的异常处理流程就结束了,关键还是在于对于异常的定义,以及程序中异常处理的方法,每个团队都有自己的一套流程,在此就不再讨论!下面有个例子,感兴趣的可以下载试试,jar包主要就是struts2,和velocity的 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |