java – 为Spring MVC / AOP应用程序实现动态菜单
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 为Spring MVC / AOP应用程序实现动态菜单,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2110字,纯文字阅读大概需要4分钟。
内容图文
![java – 为Spring MVC / AOP应用程序实现动态菜单](/upload/InfoBanner/zyjiaocheng/792/05886a6e88834b00ac6ba126ad58e9c5.jpg)
我希望为我的Spring MVC应用程序实现动态可更改的菜单(无论何时添加带注释的方法或控制器).
我想要的是引入新的注释(@RequestMenuMapping),它将转到@Controller bean及其方法(就像@RequestMapping一样).
Heres是我想要的,User类,生成菜单之类的
Users
Index | List | Signup | Login
使用以下代码:
@Controller
@RequestMapping("user")
@RequestMenuMapping("Users")
public class User {
@RequestMapping("")
@RequestMenuMapping("Index")
public String index(/* no model here - just show almost static page (yet with JSP checks for authority)*/) {
return "user/index.tile";
}
@RequestMapping("list")
@RequestMenuMapping("List")
public String list(Model model) {
model.addAttribute("userList",/* get userlist from DAO/Service */);
return "user/list.tile";
}
@RequestMapping("signup")
@RequestMenuMapping("Signup")
public String signup(Model model) {
model.addAttribute("user",/* create new UserModel instance to be populated by user via html form */);
return "user/signup.tile";
}
@RequestMapping("login")
@RequestMenuMapping("Login")
public String login(Model model) {
model.addAttribute("userCreds",/* create new UserCreds instance to be populated via html form with login and pssword*/);
return "user/login.tile";
}
}
我认为Spring AOP可以帮助我使用@RequestMenuMapping注释切入方法,并通过@AfterReturning将代表网站菜单的内容添加到模型中.
但这提出了两个问题:
>如果在adviced方法中缺少(如.index()),我如何在@AfterReturning建议方法中获取Model实例?
>我如何获得所有方法(如在java反射方法中)和使用@RequestMenuMapping注释的类(如在java反射类中)以构建完整的菜单索引?
解决方法:
InterceptorDemo:
@Aspect
@Component
public class InterceptorDemo {
@Pointcut("@annotation(org.springframework.web.bind.annotation.RequestMapping)")
public void requestMapping() {
}
@Pointcut("@annotation(you.package.RequestMenuMapping)")
public void requestMenuMapping() {
}
@AfterReturning("requestMapping() && equestMenuMapping()")
public void checkServer(JoinPoint joinPoint,Object returnObj) throws Throwable {
Object[] args = joinPoint.getArgs();
Model m = (Model)args[0];
// use joinPoint get class or methd...
}
}
如果你想用你自己拦截Contoller,你可以得到另一个切入点,ProceedingJoinPoint对象可以得到你想要的.
内容总结
以上是互联网集市为您收集整理的java – 为Spring MVC / AOP应用程序实现动态菜单全部内容,希望文章能够帮你解决java – 为Spring MVC / AOP应用程序实现动态菜单所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。