各路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();
}
}
不知从何下手,望大神门指点迷津。
这块我也不太会,不过感觉你那个方法得改成:
@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;
}
http://blog.csdn.net/wangpeng047/article/details/8556800
@ResponseBody
加了这个标记会返回一个json数据,其实在这个地方,你的中文描述tipMessages.put("info","删除成功");和删除失败,完全可以放在前台用js处理,后台只
返回Y或者N即可。可以按f12,看下Network,看你的请求返回的是什么,用JS进行处理。