2012-05-04 71 views
1

我有一個彈簧(3.1)控制器的操作方法是這樣的:我可以將多個URL映射到一個Action,更改布爾參數嗎?

@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註釋,但我還沒有見過的方式有映射本身影響參數,短傳入參數或課程(/foo/123?doBranch=true")。

我能以某種方式輕鬆擴展Spring來做到這一點嗎?或者那裏已經有東西可以做到這一點?

+0

我們你的最終目標是什麼?這聽起來像一個壞主意...... – les2

+0

@ les2我想要一些方法返回額外的信息或診斷信息,並在不同的URL上有明確的分隔「命名空間」。話雖如此,安全並不是一個問題,只是乾淨的URL。 –

回答

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映射到調用與任何truefalse第三種方法2種不同的方法。

+0

我同意@jjinguy,有時候最簡單的解決方案就是提供一些外觀方法。 Facade方法也使得「調試」變體可以在調用常用的「myAction」方法之前/之後執行其他邏輯(記錄等) –

相關問題