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

Can I specify that a controller level request mapping is not valid for a specific method into a Spring MVC controller class?

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

所以我有这样的东西:

@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 class,它用 @RequestMapping("/ profilo/") 所以这意味着这个 class 的控制器方法处理的所有 HTTP 请求都必须从 /profilo/ 开始 URL.

除了 confermaModificaEmail() 必须处理 URL 的方法外,此 class 的所有方法都是正确的:

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

不以 /profilo/ 开头。

那么我可以指定对于控制器的这个特定方法,@RequestMapping("/profilo/") 控制器级别映射无效并且必须不考虑吗?

这是不可能的。

Spring 维护了一个正确的 @Controller 结构,它表示与 ControllerName 相关的所有端点(即您的情况下的 .Portfolio)应保留在此 class.

理想情况下,与功能无关的任何其他 url 应作为不同控制器的一部分 class。

如果您仍想保留在同一个控制器中,请尝试通过将 http 调用从“/portfolio/<"sample"> 重定向到所需的 [=24] 来调用端点 url confermaModificaEmail() =].但不推荐这样做.