2011-06-30 13 views
0

私は春に向けて作業を始め、NetBeansで簡単なスプリングプロジェクトを設定しました。デフォルトでは注釈を使用していないようです。Spring ControllerでhandleRequest関数をパラメータの注釈とともに使用することはできますか?

私のコントローラの1つで、フォームのさまざまなクリックを処理したいと思います。私は達成することができます方法はあり

public class SetupController implements Controller { 
@Override 
public org.springframework.web.servlet.ModelAndView handleRequest(
     HttpServletRequest hsr, HttpServletResponse hsr1) throws Exception { 

:私はいくつかの解決策を見てきたし、それが仕事ができるパラメータチェックを加えることのように思える:

それは要求のすべてのように見えるしかし
@RequestMapping(params = "someAction") 
public ModelAndView doSomeAction() { 

をしようとしていますRequestMappingアノテーションなしで同じ効果?

+1

む〜を、この何春のバージョンですか?永遠にそのインターフェイスのストレートな実装を見たことがありません:) – Affe

答えて

3

古い(コントローラの実装)スタイルと新しい1つの注釈ベースのスタイルを混在させています。

少なくとも1つのクラスではできません(少なくとも混同すべきではありません)。

Spring 3.xを使用している場合は、アノテーションベースのスタイルを使用することを強くお勧めします。

@Controller 
@RequestMapping("/whatever") 
public class DemoController() { 

    @RequestMapping(params="x"); 
    public ModelAndView doX() { 
    } 

    @RequestMapping(params="y"); 
    public ModelAndView doY() { 
    } 
} 

アノテーションベースのスタイルを有効にするには、あなたは、少なくともこの構成設定が必要です。

<!-- Turns on support for mapping requests to Spring MVC @Controller methods 
    Also registers default Formatters and Validators for use across all 
     @Controllers --> 
<mvc:annotation-driven conversion-service="applicationConversionService" /> 
+0

入手しました。私はあなたが正しいと信じています。私のプロジェクトは古いスタイルのコントローラで設定されていたので、古いスタイルコントローラのパラメータに基づいてリクエストを処理する方法はありますか?私はおそらくすべての可能なURLのためのコントローラを提供する方法があることを理解していますが、私はコードを、 "/ whatever"と "/ whatever?x"の下のすべてのパラメータをdoXで処理する場所()中で "/ whatever?y"はdoY()で扱われます。ありがとう! – mikebz

+0

@mikebz:スイッチのhttpパラメータを検査し、このパラメータの正しいメソッド(doX、doY)を呼び出すコントローラを1つ書くことができます。 – Ralph

+0

私はそれを行いますが、より洗練されたソリューションを望んでいました。より洗練されたソリューションが新しい注釈だと思います。 – mikebz

関連する問題