我可以指定控制器级别请求映射对于 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() =].但不推荐这样做.
我正在开发一个 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() =].但不推荐这样做.