问题描述
- Java如何在Spring AOP中返回Map
-
Java如何在Spring AOP中返回Map
各路Java业界大神,请帮小弟一把。
在spring mvc的控制器中,需要频繁返回Map来反应前端网页是否修改成功。所以我就想做一个AOP控制所有的void delete*()等方法实现自动加上Map类型返回。
以下是未修改代码:
@RequestMapping("delete")
@ResponseBody
public Map delete(Integer id){
Map<String,String> tipMessages=new HashMap<String,String>(); try{ xxxService.delete(Integer id); tipMessages.put("status", "Y"); tipMessages.put("info","删除成功"); }catch(Exception e){ tipMessages.put("status", "N"); tipMessages.put("info", "删除失败"); } return tipMessages; 理想状态: @Around("pointCut()") public Object doAround(ProceedingJoinPoint pjp) throws Throwable { try{ Object o = pjp.proceed(); //正常处理 tipMessages.put("status", "Y"); tipMessages.put("info","删除成功"); }catch(Exception e){ tipMessages.put("status", "N"); tipMessages.put("info", "删除失败"); } return o; } Class xxxService{ public Map<String,String> delete(){ xxxRepository.delete(); } } 不知从何下手,望大神门指点迷津。
解决方案
http://blog.csdn.net/wangpeng047/article/details/8556800
解决方案二:
spring的AOP之java的动态代理
Spring AOP与Java动态代理
解决方案三:
@ResponseBody
加了这个标记会返回一个json数据,其实在这个地方,你的中文描述tipMessages.put("info","删除成功");和删除失败,完全可以放在前台用js处理,后台只
返回Y或者N即可。可以按f12,看下Network,看你的请求返回的是什么,用JS进行处理。
解决方案四:
这块我也不太会,不过感觉你那个方法得改成:
@Around("pointCut()")
public Object doAround(ProceedingJoinPoint pjp) throws Throwable {
Map<String,String> tipMessages=new HashMap<String,String>();
try{
tipMessages = (Map<String,String>) pjp.proceed();
//正常处理
tipMessages.put("status", "Y");
tipMessages.put("info","删除成功");
}catch(Exception e){
tipMessages.put("status", "N");
tipMessages.put("info", "删除失败");
}
return tipMessages;
}
时间: 2025-01-13 11:25:19