我可以将多个URL映射到Action,更改布尔参数吗?

时间:2012-05-04 01:16:25

标签: java spring spring-mvc

我有一个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来做到这一点吗?或者那里有什么可以做到的?

1 个答案:

答案 0 :(得分:4)

我知道这不是最优雅的方式,但是:

@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) { ... }

只需将网址映射到使用truefalse调用第三种方法的两种不同方法。