views:

8818

answers:

4

In Spring annotation-based controller, is it possible to map different query strings using RequestMapping to different methods.

for example

@RequestMapping("/test.html?day=monday")
public void writeMonday() {
}


@RequestMapping("/test.html?day=tuesday")
public void writeTuesday() {
}

Thanks.

+18  A: 

Yes, you can use the params element:

@RequestMapping("/test.html", params = "day=monday")
public void writeMonday() {
}

@RequestMapping("/test.html", params = "day=tuesday")
public void writeTuesday() {
}

You can even map based on the presence or absence of a param:

@RequestMapping("/test.html", params = "day")
public void writeSomeDay() {
}

@RequestMapping("/test.html", params = "!day")
public void writeNoDay() {
}
Hilton Campbell
This showed syntax error for me(on Spring 3), but the following worked.@RequestMapping(value="/test.html", params = "day=monday")
pMan
+6  A: 

or you could do something like:

@RequestMapping("/test.html")
public void writeSomeDay(@RequestParam String day) {
   // code to handle "day" comes here...
}
A: 

How can you pass a form?

newJava
A: 

public void writeSomeDay(@ModelAttribute("form") Form form,BindingResult result) {

...

}

Sunil