Aop拦截异常弹出消息框,跳转页面

lihuinihao6315 2014-07-11 03:39:02
各位大牛好:
项目约定,异常按处理分类:
1,出错弹出提示(“验证参数”,“业务异常”,..)
2,出错跳转到错误页面 (“xxx文件找不到","xxx类型未处理”,...)
3,出错吞噬掉记录日志 (“缓存读取异常”...)

定义异常注解:@excetpionTest
AOP 拦截异常:


@Autowired
ILogService iLogService;
@Autowired
IExceptionService iExceptionService;

@Pointcut("@annotation(xxx.excetpionTest)")
public void exceptionPointcut() {
}

@Around("exceptionPointcut()")
public Object AroundExceptionAdvicing(ProceedingJoinPoint joinPoint) throws Throwable{

Object o=null;
String message="";
try
{
o = joinPoint.proceed();
}
catch (ValidateParametersThrowToAlertException e) {
message = e.getMessage();
iExceptionService.ExceptionProcessed(e);
//在此处处理异常,如果是1,需要弹出提示
//问题1:怎么区分 拦截的这个方法是 action 而不是 普通的方法?普通方法将异常抛出,action的话 需要弹出错误提示,请问咋弹出?
//问题2:怎么区分 当前的系统是使用 mvc还是struct2? 是看返回值吗?ModelAndView or String?
//问题3:如果是action 返回值 是String 那么弹出 提示该怎么弹出?返回String =“javascript:alert("xxx参数不能为空");”这样行吗?
}
catch ....
finally
{
if(!message.isEmpty())
iLogService.putServiceErrorLog(LogLevel.ERROR,LogStorageModel.TEXT, joinPoint, message);
}
return o;
}


分不够可以 追加,请大神聊一聊,闲话,扯淡,都有分,解决问题重分酬谢
...全文
325 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
lihuinihao6315 2014-07-11
  • 打赏
  • 举报
回复
谢谢 longtian1213大神,回复。 1,项目规约 约定action命名可以通过反射得知是普通方法还是 action 但是不知道在request里 有没有这样的方法,通过request里面的action的类名 拿action的类名去和 拦截到的 方法+类名+参数 去比较。 2,非常感谢 3,要是传标记的话,还是需要团队约定。但是约定这种东西是很不靠谱的。大部分人不太遵守。。
yufengdxw 2014-07-11
  • 打赏
  • 举报
回复
没有这么考虑过
S117 2014-07-11
  • 打赏
  • 举报
回复
我觉得第一个,你应该在项目中统一规定action方法怎么写,以什么做前缀或者后缀什么的,这样你才能区分 第二个呢,你让struct2的action继承ActionSupport,然后你取得目标类,看看他的父类是不是ActionSupport,来区分是mvc还是struct2 最后一个提示的话,你可以传一个标记到页面,页面加载完成后,立即执行个方法去检查这个标记,看看要不要提示,或者怎么提示!
dokia123 2014-07-11
  • 打赏
  • 举报
回复
强势关注!楼主这个问题我也很疑惑。

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧