我是否可以指定控制器级别请求映射对于Spring MVC控制器类中的特定方法无效?

时间:2016-05-09 12:58:05

标签: spring spring-mvc spring-annotations

我正在开发一个Spring MVC应用程序,我在控制器类中遇到以下问题,该类在类级别使用 @RequestMapping(" / profilo /")进行注释

所以我有这样的事情:

@Controller
@RequestMapping("/profilo/")
public class ProfiloController extends BaseController {

    ..................................................................
    ..................................................................
    SOME CONTROLLER METHOD THAT WORK CORRECTLY
    ..................................................................
    ..................................................................

    @RequestMapping(value = "utenze/{username}/confermaEmail/{email:.+}", method = RequestMethod.GET)
    public String confermaModificaEmail(@PathVariable String username, @PathVariable String email, Model model) {

        logger.debug("INTO confermaModificaEmail(), indirizzo e-mail: " + email);
        .......................................................................
        .......................................................................
        .......................................................................
    }
}

因此,正如您在前面的代码片段中看到的那样,我有 ProfiloController 类,用 @RequestMapping(&#34; / profilo /&#34;)<注释< / strong>所以这意味着此类控制器方法处理的所有HTTP请求都必须以URL中的 / profilo / 开头。

除了必须处理URL的 confermaModificaEmail()方法之外,此类的所有方法都是如此:

http://localhost:8080/my-project/utenze/mario.rossi/confermaEmail/a.nobili@siatec.net

不要与 / profilo / 一起开始。

因此,我可以指定对于控制器的这种特定方法, @RequestMapping(&#34; / profilo /&#34;)控制器级别映射无效,必须不予考虑?

1 个答案:

答案 0 :(得分:2)

这是不可能的。

Spring保持了一个正确的@Controller结构,该结构表示所有与ControllerName相关的端点(即你的案例中的.Portfolio)都应该保存在这个类中。

理想情况下,任何与功能无关的其他网址都应保留为不同Controller类的一部分。

如果您仍想保留在同一个控制器中,请尝试通过将http调用从“/ portfolio /&lt;”示例“&gt;”重定向到所需的URL来调用endPoint url confermaModificaEmail()。但这不是推荐的