John
John

Reputation: 189

Spring 3 Web MVC - @Controller method() pre & post processing functionality through annotations

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

Answers (1)

Alex
Alex

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

Related Questions