我有一个像这样的spring(3.1)控制器动作方法:
@RequestMapping(value="/{id}")
public String myAction(@PathVariable("id") long someId) { ... }
我想介绍一个布尔值:
public String myAction(@PathVariable("id") long someId, boolean doBranch) { ... }
但是,我希望根据访问该方法的URL设置布尔值。换句话说,我想要
/foo/123 => myAction(123,false)
/debug/foo/123 => myAction(123,true)
我知道我可以在RequestMapping批注中添加多个URL,但是我还没有找到一种方法来使映射本身影响参数,而没有传入参数或过程(
/foo/123?doBranch=true"
)。我可以以某种方式轻松地扩展Spring来做到这一点吗?还是已经有东西可以做到这一点?
最佳答案
我知道这不是最优雅的方法,但是:
@RequestMapping("/foo/{id}")
public String myActionA(@PathVariable("id") long someId) {
return myAction(someId, true);
}
@RequestMapping("/debug/foo/{id}")
public String myActionB(@PathVariable("id") long someId) {
return myAction(someId, false);
}
public String myAction(@PathVariable("id") long someId, boolean doBranch) { ... }
只需将URL映射到2个不同的方法,即可使用
true
或false
调用第三个方法。