4

すべてのマッピングを同じ場所に保持したいので、XML 構成を使用します。

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

    <property name="mappings">
        <value>
            /video/**=videoControllerr
            /blog/**=blogController
        </value>
    </property>
    <property name="alwaysUseFullPath">
        <value>true</value>
    </property>
</bean>

別のコントローラーで同じ名前の 2 つ目のリクエスト マッピングを作成すると、

@Controller
public class BlogController {
    @RequestMapping(value = "/info", method = RequestMethod.GET)
    public String info(@RequestParam("t") String type) {
        // Stuff
    }
}

@Controller
public class VideoController {
    @RequestMapping(value = "/info", method = RequestMethod.GET)
    public String info() {
        // Stuff
    }
}

例外があります:

Caused by: java.lang.IllegalStateException: Cannot map handler 'videoController' to URL path [/info]: There is already handler of type [class com.cyc.cycbiz.controller.BlogController] mapped.

異なるコントローラーで同じリクエスト マッピングを使用する方法はありますか?

次のように2つのURLが必要です。

/video/info.html

/blog/info.html

Spring MVC 3.1.1 の使用

編集: 私だけではありません: https://spring.io/blog/2008/03/24/using-a-hybrid-annotations-xml-approach-for-request-mapping-in-spring-mvc

アプリの残りの部分は完全に機能します。

4

2 に答える 2

5

コントローラのレベルでリクエストマッピングを配置するだけです。

@Controller
@RequestMapping("/video")
public class VideoController {
    @RequestMapping(value = "/info", method = RequestMethod.GET)
    public String info() {
        // Stuff
    }
}

@Controller
@RequestMapping("/blog")
public class BlogController {
    @RequestMapping(value = "/info", method = RequestMethod.GET)
    public String info(@RequestParam("t") String type) {
        // Stuff
    }
}
于 2012-06-29T03:45:02.600 に答える