2012-05-04 9 views
1

私はこのような春(3.1)コントローラのアクションメソッドがあります。アクションに複数のURLをマップし、ブール値のパラメータを変更することはできますか?

@RequestMapping(value="/{id}") 
public String myAction(@PathVariable("id") long someId) { ... } 

を私はブール値を紹介したい:

public String myAction(@PathVariable("id") long someId, boolean doBranch) { ... } 

しかし、私はブール値がどのURLに基​​づいて設定することにしたいですメソッドにアクセスします。言い換えれば、私はRequestMapping注釈に複数のURLを追加することができます知っているが、私は、パラメータまたはコースを渡すの短い、マッピング自体は、パラメータに影響を与える持ってする方法を見ていない

/foo/123 => myAction(123,false) 
/debug/foo/123 => myAction(123,true) 

をしたいです(/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) { ... } 

は、単にtrueまたはfalseのいずれかで第三の方法を呼び出す2種類の方法にURLをマッピングします。

+0

私は@ jjinguyに同意します。時には最も単純な解決策は、いくつかのファサードメソッドを提供することです。ファサードメソッドのアプローチは、一般的な "myAction"メソッドが呼び出される前/後に他のロジック(ロギングなど)を潜在的に実行するための "デバッグ" –

関連する問題