1

我有一个这样的弹簧(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)

我知道我可以将多个 url 添加到 RequestMapping 注释中,但我还没有看到让映射本身影响参数的方法,除非传入参数或课程 ( /foo/123?doBranch=true")。

我可以以某种方式轻松地扩展 Spring 来做到这一点吗?或者那里已经有东西可以做到这一点?

4

1 回答 1

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

只需将 URL 映射到 2 个不同的方法,这些方法使用true或调用第三种方法false

于 2012-05-04T01:21:43.607 回答