2011-09-13 7 views
3

私のspring mvc(Spring 3.0.2)アプリケーションでは、同じURLパターンを扱いますが、異なるメソッド(GETとSET)を扱う2つのコントローラメソッドがあります。

私はそれが正常に動作し、単一のコントローラクラスでそれらの両方を持っている場合:1つのURLのリクエストハンドラは、別のコントローラにはありません

@Controller 
class MainController { 
    @RequestMapping(value="/somepage", method=RequestMethod.GET) 
    public String getMethod() { 
     return "redirect:/get"; 
    } 
    @RequestMapping(value="/somepage", method=RequestMethod.POST) 
    public String postMethod() { 
     return "redirect:/post"; 
    } 
} 

これらの方法は、2つの異なるコントローラクラスで定義されている場合、それは動作しません。この場合
別がそこで質問が理由です、そしてどのように私は期待通りに動作させることができ

(リクエストメソッドがサポートされていない)
私に405エラーを与えながら、1つの方法だけで動作しますか? :コード機能していない

P.S:

@Controller 
class GetController { 
    @RequestMapping(value="/somepage", method=RequestMethod.GET) 
    public String getMethod() { 
     return "redirect:/get"; 
    } 
} 
@Controller 
class PostController { 
    @RequestMapping(value="/somepage", method=RequestMethod.POST) 
    public String postMethod() { 
     return "redirect:/post"; 
    } 
} 
+0

動作しないコードを表示し、何が動作するかを教えてください。 –

+0

OK、私は質問 – tsds

+1

を更新しました。それらは両方ともコンテキストにありますか:コンポーネントスキャンベースパッケージですか? – Scott

答えて

7

EDIT:

それはそれはマッピングが@RequestMapping注釈からすべてのものによって行われ3.1.0.M2、とOKです縫い目。

最新のSpringバージョンに変更することをお勧めします。

java.lang.IllegalStateException: Cannot map handler 'postController' to URL path [/somepage]: There is already handler of type [class test.GetController] mapped.

私の知る限りでは、ログおよびコードから見ることができるよう、@Controller豆だけのURLにマッピングされ、しばらく:春3.0.5このエラーの


はしばらく豆のインスタンス化を発生しますインスタンス化が行われ、メソッドのディスパッチは後で行われます。

1

は私にはバグのように見えます。 3.0.5までのugprading、または最新の3.1マイルストーンを試してみてください。問題が解決しない場合は、春のJIRAで問題を作成してください。

関連する問題