4

私はSpring 3.1 MVCを使用しており、リクエストの1つでURLであるパラメータを取得しています。たとえばhttp:/myapp/controllername?url=someurl 、アプリケーションで何らかの URL が構成されているかどうかをコントローラー メソッドで確認する必要があります。

RequestMappingHandlerMappingインスタンスを使用して取得しようとしました

Map<RequestMappingInfo, HandlerMethod> handlerMethods = handlerMapping.getHandlerMethods();

しかし、私はURLである文字列を持っていRequestMappingInfoます.URLだけに基づくコンストラクターを持たないこのマップを検索するには、これからオブジェクトを作成する必要があります.

コントローラーのコードを使用して、Spring MVC 3.1 に URL マッピングが存在するかどうかを確認するにはどうすればよいですか?

4

1 に答える 1

4

requestMappingInfo.getPatternsCondition() を使用してマッピング パスを確認できます。URL文字列と比較するためのtoStringメソッドがあります。

Set<RequestMappingInfo> rmSet = handlerMapping.getHandlerMethods().keySet();
for (RequestMappingInfo rm : rmSet) {

    if("[YourURLPath]".equals(rm.getPatternsCondition().toString())) {
        // URL mapping matched 
    }
}

例: URLhttp://mydomain/test/abcの場合、上記の条件は次のようになります。

if("[/test/abc]".equals(rm.getPatternsCondition().toString()))

以下のように、コントローラーで handlerMapping オブジェクトを既に自動配線していると思います

@Autowired
private RequestMappingHandlerMapping handlerMapping;
于 2012-11-28T08:42:49.577 に答える