我有一个像这样的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个不同的方法,即可使用truefalse调用第三个方法。

07-26 02:06