【发布时间】:2019-08-08 10:46:18
【问题描述】:
我在 Pre-Handler Interceptor 中获得了 Controller 的 @PathVariable。
Map<String, String> pathVariable = (Map<String, String>) request.getAttribute( HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE );
但我希望修改@PathVariable 值(如下)。
@RequestMapping(value = "{uuid}/attributes", method = RequestMethod.POST)
public ResponseEntity<?> addAttribute(@PathVariable("uuid") String uuid, HttpServletRequest request, HttpServletResponse response) {
//LOGIC
}
在进入控制器之前如何修改拦截器中的@PathVariable("uuid") 值?? 我正在使用 Spring 4.1 和 JDK 1.6。我不能升级它。
【问题讨论】:
-
为什么?该变量是 URL 的一部分,为什么要更改它。一般来说,你不应该这样做。
-
我有两种访问资源的方法。首先使用 UUID 访问(请参见上面给出的代码),最后一种方式是一些可以识别 UUID 的 URI。所以我希望使用最后一种方式修改 URI(一些 URI 到 UUID)。然后,控制器不需要修改。
-
不要...请不要,因为这将是复杂和麻烦的。只需向控制器添加一个方法,该方法正是这样做并重定向到路径 URL,或者只是使用 UUID 调用其他方法。两者都比试图在拦截器中硬塞它更简单。
-
是的,控制器中的其他方法可以将某些 URI 修改为 UUID。我要添加方法。正如你所说。谢谢!
标签: java spring spring-mvc interceptor jdk6