Reputation: 189
I'd like to be able to have the following:
@Controller
public class MyController {
@RequestMapping(value="/someurl", method=RequestMethod.GET)
@PreProcess
@PostProcess
public String doStuff(ModelMap map) {
//do stuff
return "someurl";
}
}
The @PreProcess
and @PostProcess
are arbitrarily named Annotations.
I've been looking for a working example of this but I can't find any. I've looked at AOP and the use of the @Aspect
annotation but I found it quite complex. A working example of what I'm trying to do would be great.
I've sampled Spring Security in the past but this isn't quite what I need because I need the processing to be custom, pretty much anything I want.
I know that this functionality is available in .Net MVC. Hoping it's available in Spring also.
Any help or pointers really appreciated.
Upvotes: 3
Views: 8669
Reputation: 25613
You can annotate a method with @ModelAttribute
to execute a method before a controller method. Or use an interceptor
Example with @ModelAttribute
@Controller
public class MyController {
@RequestMapping(value="/someurl", method=RequestMethod.GET)
public String doStuff(@ModelAttribute("something") Something something, ModelMap map) {
//do stuff
// here you can do what you want with something it has been provided to you in the method parameters
return "someurl";
}
@ModelAttribute("something")
public Something something() {
// do what you need
return new Something();
}
}
The something()
method will be called before every method having a @RequestMapping
annotation, thus before the doStuff()
method.
Upvotes: 6