首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

基于Struts2和freemarker的错误提示信息的统一处理

2012-10-17 
基于Struts2和freemarker的异常提示信息的统一处理public?abstract?class?BaseException?extends?RuntimeE

基于Struts2和freemarker的异常提示信息的统一处理

public?abstract?class?BaseException?extends?RuntimeException?基于Struts2和freemarker的错误提示信息的统一处理{
基于Struts2和freemarker的错误提示信息的统一处理????private?static?final?long?serialVersionUID?=?-6765360320533958383L;
基于Struts2和freemarker的错误提示信息的统一处理
基于Struts2和freemarker的错误提示信息的统一处理????private?String?messageCode;
基于Struts2和freemarker的错误提示信息的统一处理
基于Struts2和freemarker的错误提示信息的统一处理基于Struts2和freemarker的错误提示信息的统一处理????public?String?getMessageCode()?基于Struts2和freemarker的错误提示信息的统一处理{
基于Struts2和freemarker的错误提示信息的统一处理????????return?messageCode;
基于Struts2和freemarker的错误提示信息的统一处理????}
基于Struts2和freemarker的错误提示信息的统一处理
基于Struts2和freemarker的错误提示信息的统一处理基于Struts2和freemarker的错误提示信息的统一处理????public?void?setMessageCode(String?messageCode)?基于Struts2和freemarker的错误提示信息的统一处理{
基于Struts2和freemarker的错误提示信息的统一处理????????this.messageCode?=?messageCode;
基于Struts2和freemarker的错误提示信息的统一处理????}
基于Struts2和freemarker的错误提示信息的统一处理
基于Struts2和freemarker的错误提示信息的统一处理基于Struts2和freemarker的错误提示信息的统一处理????public?BaseException()?基于Struts2和freemarker的错误提示信息的统一处理{
基于Struts2和freemarker的错误提示信息的统一处理????????super();
基于Struts2和freemarker的错误提示信息的统一处理????}
基于Struts2和freemarker的错误提示信息的统一处理
基于Struts2和freemarker的错误提示信息的统一处理基于Struts2和freemarker的错误提示信息的统一处理????public?BaseException(String?message)?基于Struts2和freemarker的错误提示信息的统一处理{
基于Struts2和freemarker的错误提示信息的统一处理????????super(message);
基于Struts2和freemarker的错误提示信息的统一处理????}
基于Struts2和freemarker的错误提示信息的统一处理
基于Struts2和freemarker的错误提示信息的统一处理基于Struts2和freemarker的错误提示信息的统一处理????public?BaseException(String?message,?Throwable?cause)?基于Struts2和freemarker的错误提示信息的统一处理{
基于Struts2和freemarker的错误提示信息的统一处理????????super(message,?cause);
基于Struts2和freemarker的错误提示信息的统一处理????}
基于Struts2和freemarker的错误提示信息的统一处理
基于Struts2和freemarker的错误提示信息的统一处理基于Struts2和freemarker的错误提示信息的统一处理????public?BaseException(Throwable?cause)?基于Struts2和freemarker的错误提示信息的统一处理{
基于Struts2和freemarker的错误提示信息的统一处理????????super(cause);
基于Struts2和freemarker的错误提示信息的统一处理????}
基于Struts2和freemarker的错误提示信息的统一处理
基于Struts2和freemarker的错误提示信息的统一处理基于Struts2和freemarker的错误提示信息的统一处理????public?BaseException(String?messageCode,?String?message)?基于Struts2和freemarker的错误提示信息的统一处理{
基于Struts2和freemarker的错误提示信息的统一处理????????super(message);
基于Struts2和freemarker的错误提示信息的统一处理????????setMessageCode(messageCode);
基于Struts2和freemarker的错误提示信息的统一处理
基于Struts2和freemarker的错误提示信息的统一处理????}
基于Struts2和freemarker的错误提示信息的统一处理
基于Struts2和freemarker的错误提示信息的统一处理基于Struts2和freemarker的错误提示信息的统一处理????public?BaseException(String?messageCode,?String?message,?Throwable?cause)?基于Struts2和freemarker的错误提示信息的统一处理{
基于Struts2和freemarker的错误提示信息的统一处理????????super(message,?cause);
基于Struts2和freemarker的错误提示信息的统一处理????????setMessageCode(messageCode);
基于Struts2和freemarker的错误提示信息的统一处理????}

基于Struts2和freemarker的错误提示信息的统一处理基于Struts2和freemarker的错误提示信息的统一处理public?class?BusinessException?extends?BaseException?基于Struts2和freemarker的错误提示信息的统一处理{
基于Struts2和freemarker的错误提示信息的统一处理
基于Struts2和freemarker的错误提示信息的统一处理????private?static?final?long?serialVersionUID?=?-1657938434382769721L;
基于Struts2和freemarker的错误提示信息的统一处理???????????????????
基于Struts2和freemarker的错误提示信息的统一处理基于Struts2和freemarker的错误提示信息的统一处理????public?BusinessException()?基于Struts2和freemarker的错误提示信息的统一处理{
基于Struts2和freemarker的错误提示信息的统一处理????????super();
基于Struts2和freemarker的错误提示信息的统一处理????}
基于Struts2和freemarker的错误提示信息的统一处理????
基于Struts2和freemarker的错误提示信息的统一处理基于Struts2和freemarker的错误提示信息的统一处理????public?BusinessException(String?message,?Throwable?cause)?基于Struts2和freemarker的错误提示信息的统一处理{
基于Struts2和freemarker的错误提示信息的统一处理????????super(message,?cause);
基于Struts2和freemarker的错误提示信息的统一处理????}
基于Struts2和freemarker的错误提示信息的统一处理????
基于Struts2和freemarker的错误提示信息的统一处理基于Struts2和freemarker的错误提示信息的统一处理????public?BusinessException(Throwable?cause)?基于Struts2和freemarker的错误提示信息的统一处理{
基于Struts2和freemarker的错误提示信息的统一处理????????super(cause);
基于Struts2和freemarker的错误提示信息的统一处理????}
基于Struts2和freemarker的错误提示信息的统一处理????
基于Struts2和freemarker的错误提示信息的统一处理基于Struts2和freemarker的错误提示信息的统一处理????public?BusinessException(String?messageCode,?String?message)?基于Struts2和freemarker的错误提示信息的统一处理{
基于Struts2和freemarker的错误提示信息的统一处理????????super(messageCode,?message);
基于Struts2和freemarker的错误提示信息的统一处理????????setMessageCode(messageCode);
基于Struts2和freemarker的错误提示信息的统一处理????}
基于Struts2和freemarker的错误提示信息的统一处理????
基于Struts2和freemarker的错误提示信息的统一处理基于Struts2和freemarker的错误提示信息的统一处理????public?BusinessException(String?messageCode,?String?message,?Throwable?cause)?基于Struts2和freemarker的错误提示信息的统一处理{
基于Struts2和freemarker的错误提示信息的统一处理????????super(messageCode,?message,?cause);
基于Struts2和freemarker的错误提示信息的统一处理????????setMessageCode(messageCode);
基于Struts2和freemarker的错误提示信息的统一处理????}
基于Struts2和freemarker的错误提示信息的统一处理}
基于Struts2和freemarker的错误提示信息的统一处理

拦截器类:ErrorHandlingInterceptor.java 用于拦截异常,并在此统一处理
基于Struts2和freemarker的错误提示信息的统一处理基于Struts2和freemarker的错误提示信息的统一处理public?class?ErrorHandlingInterceptor?extends?AbstractInterceptor?基于Struts2和freemarker的错误提示信息的统一处理{
基于Struts2和freemarker的错误提示信息的统一处理
基于Struts2和freemarker的错误提示信息的统一处理????private?static?final?long?serialVersionUID?=?1L;
基于Struts2和freemarker的错误提示信息的统一处理
基于Struts2和freemarker的错误提示信息的统一处理????@Override
基于Struts2和freemarker的错误提示信息的统一处理基于Struts2和freemarker的错误提示信息的统一处理????public?String?intercept(ActionInvocation?invocation)?throws?Exception?基于Struts2和freemarker的错误提示信息的统一处理{
基于Struts2和freemarker的错误提示信息的统一处理基于Struts2和freemarker的错误提示信息的统一处理????????try?基于Struts2和freemarker的错误提示信息的统一处理{
基于Struts2和freemarker的错误提示信息的统一处理????????????return?invocation.invoke();
基于Struts2和freemarker的错误提示信息的统一处理基于Struts2和freemarker的错误提示信息的统一处理????????}?catch?(Exception?e)?基于Struts2和freemarker的错误提示信息的统一处理{
基于Struts2和freemarker的错误提示信息的统一处理????????????e.printStackTrace();
基于Struts2和freemarker的错误提示信息的统一处理????????????handleException(e);
基于Struts2和freemarker的错误提示信息的统一处理????????}
基于Struts2和freemarker的错误提示信息的统一处理????????return?Action.INPUT;
基于Struts2和freemarker的错误提示信息的统一处理????}
基于Struts2和freemarker的错误提示信息的统一处理????
基于Struts2和freemarker的错误提示信息的统一处理基于Struts2和freemarker的错误提示信息的统一处理????/**?*//**
基于Struts2和freemarker的错误提示信息的统一处理?????*?处理异常
基于Struts2和freemarker的错误提示信息的统一处理?????*?@param?e
基于Struts2和freemarker的错误提示信息的统一处理?????*/
基于Struts2和freemarker的错误提示信息的统一处理基于Struts2和freemarker的错误提示信息的统一处理????private?void?handleException(Exception?e)?基于Struts2和freemarker的错误提示信息的统一处理{
基于Struts2和freemarker的错误提示信息的统一处理????????boolean?handled?=?false;
基于Struts2和freemarker的错误提示信息的统一处理????????Throwable?throwEx?=?e;
基于Struts2和freemarker的错误提示信息的统一处理基于Struts2和freemarker的错误提示信息的统一处理????????while?(throwEx?!=?null)?基于Struts2和freemarker的错误提示信息的统一处理{
基于Struts2和freemarker的错误提示信息的统一处理基于Struts2和freemarker的错误提示信息的统一处理????????????if(throwEx?instanceof?BusinessException)?基于Struts2和freemarker的错误提示信息的统一处理{
基于Struts2和freemarker的错误提示信息的统一处理????????????????BusinessException?be?=?(BusinessException)throwEx;
基于Struts2和freemarker的错误提示信息的统一处理????????????????String?errorCode?=?be.getMessageCode();
基于Struts2和freemarker的错误提示信息的统一处理????????????????
基于Struts2和freemarker的错误提示信息的统一处理????????????????//?从缓存中通过ErrorCode取得对应message
基于Struts2和freemarker的错误提示信息的统一处理????????????????//?实现略
基于Struts2和freemarker的错误提示信息的统一处理????????????????String?errorMsg?=?getMessage(errorCode);
基于Struts2和freemarker的错误提示信息的统一处理????????????????
基于Struts2和freemarker的错误提示信息的统一处理????????????????//?页面显示错误提示信息
基于Struts2和freemarker的错误提示信息的统一处理????????????????fillError4Display(errorMsg);
基于Struts2和freemarker的错误提示信息的统一处理????????????????handled?=?true;
基于Struts2和freemarker的错误提示信息的统一处理????????????}?
基于Struts2和freemarker的错误提示信息的统一处理????????????throwEx?=?throwEx.getCause();
基于Struts2和freemarker的错误提示信息的统一处理????????}
基于Struts2和freemarker的错误提示信息的统一处理????????
基于Struts2和freemarker的错误提示信息的统一处理基于Struts2和freemarker的错误提示信息的统一处理????????if(!handled)?基于Struts2和freemarker的错误提示信息的统一处理{
基于Struts2和freemarker的错误提示信息的统一处理????????????fillDefaultError();
基于Struts2和freemarker的错误提示信息的统一处理????????}
基于Struts2和freemarker的错误提示信息的统一处理????}
基于Struts2和freemarker的错误提示信息的统一处理????
基于Struts2和freemarker的错误提示信息的统一处理基于Struts2和freemarker的错误提示信息的统一处理????private?HttpServletRequest?getRequest()?基于Struts2和freemarker的错误提示信息的统一处理{
基于Struts2和freemarker的错误提示信息的统一处理????????return?(HttpServletRequest)ActionContext.getContext().get(StrutsStatics.HTTP_REQUEST);
基于Struts2和freemarker的错误提示信息的统一处理????}
基于Struts2和freemarker的错误提示信息的统一处理????
基于Struts2和freemarker的错误提示信息的统一处理基于Struts2和freemarker的错误提示信息的统一处理????private?void?fillDefaultError()?基于Struts2和freemarker的错误提示信息的统一处理{
基于Struts2和freemarker的错误提示信息的统一处理????????fillError4Display("系统忙,请稍候再试。");
基于Struts2和freemarker的错误提示信息的统一处理????}
基于Struts2和freemarker的错误提示信息的统一处理????
基于Struts2和freemarker的错误提示信息的统一处理基于Struts2和freemarker的错误提示信息的统一处理????private?void?fillError4Display(String?msg)?基于Struts2和freemarker的错误提示信息的统一处理{
基于Struts2和freemarker的错误提示信息的统一处理????????getRequest().setAttribute("_error_msg_",?msg);
基于Struts2和freemarker的错误提示信息的统一处理????}
基于Struts2和freemarker的错误提示信息的统一处理}

拦截所有的异常,并对其进行处理。
当为 自定义的BusinessException时,根据抛出异常时的msgCode,取得对应的显示信息。
msgCode与显示信息的对应关系 可先配置好,系统启动时将其缓存起来。

如果非BusinessException,则统一显示为 “系统忙,请稍候再试。”

将要显示的信息设置到Request中,下面来看看Freemarker模板的写法:

msg.ftl

基于Struts2和freemarker的错误提示信息的统一处理<div?id='_err_msg_div'>
基于Struts2和freemarker的错误提示信息的统一处理????<#if?Request['_error_msg_']?exists>
基于Struts2和freemarker的错误提示信息的统一处理????????${Request['_error_msg_']}
基于Struts2和freemarker的错误提示信息的统一处理????</#if>
基于Struts2和freemarker的错误提示信息的统一处理</div>
基于Struts2和freemarker的错误提示信息的统一处理
基于Struts2和freemarker的错误提示信息的统一处理基于Struts2和freemarker的错误提示信息的统一处理<script?type="text/javascript">基于Struts2和freemarker的错误提示信息的统一处理
基于Struts2和freemarker的错误提示信息的统一处理基于Struts2和freemarker的错误提示信息的统一处理if?(!this.Message)?基于Struts2和freemarker的错误提示信息的统一处理{
基于Struts2和freemarker的错误提示信息的统一处理基于Struts2和freemarker的错误提示信息的统一处理????this.Message?=?基于Struts2和freemarker的错误提示信息的统一处理{};
基于Struts2和freemarker的错误提示信息的统一处理基于Struts2和freemarker的错误提示信息的统一处理????(function()?基于Struts2和freemarker的错误提示信息的统一处理{
基于Struts2和freemarker的错误提示信息的统一处理基于Struts2和freemarker的错误提示信息的统一处理????????/**//**
基于Struts2和freemarker的错误提示信息的统一处理?????????*?show?client?message
基于Struts2和freemarker的错误提示信息的统一处理?????????*/
基于Struts2和freemarker的错误提示信息的统一处理基于Struts2和freemarker的错误提示信息的统一处理????????Message.showMsg?=?function(msg)?基于Struts2和freemarker的错误提示信息的统一处理{
基于Struts2和freemarker的错误提示信息的统一处理????????????document.getElementById("_err_msg_div").innerHTML?=?msg;
基于Struts2和freemarker的错误提示信息的统一处理????????};
基于Struts2和freemarker的错误提示信息的统一处理????})();
基于Struts2和freemarker的错误提示信息的统一处理};
基于Struts2和freemarker的错误提示信息的统一处理</script>
在使用时,只要在页面上想要展现异常信息的地方插入如下代码即可:
基于Struts2和freemarker的错误提示信息的统一处理<#include?"/msg.ftl">

这样 系统中的异常 将会被统一的显示。

当使用js做前台的表单验证的时候,提示用户的输入有问题,则可以使用 Message.showMsg('...'),提示信息也会显示在同一个位置。

这样就实现了异常提示信息的统一展示了。

这是一个比较简易的实现,只提供一个思路。

热点排行