Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 来自HttpServletResponse的Spring MVC相对重定向_Java_Spring_Spring Mvc - Fatal编程技术网

Java 来自HttpServletResponse的Spring MVC相对重定向

Java 来自HttpServletResponse的Spring MVC相对重定向,java,spring,spring-mvc,Java,Spring,Spring Mvc,鉴于这种相对重定向到另一个控制器的方法: @Controller @RequestMapping("/someController") public class MyController { @RequestMapping("/redirme") public String processForm(ModelMap model) { return "redirect:/someController/somePage"; } } 如

鉴于这种相对重定向到另一个控制器的方法:

@Controller
@RequestMapping("/someController")
public class MyController {
    @RequestMapping("/redirme")
    public String processForm(ModelMap model) {            
        return "redirect:/someController/somePage";
    }
}
如果我在一个拦截器中,我如何模拟相同的相对重定向

public class MyInterceptor extends HandlerInterceptorAdapter {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception
    {
        response.sendRedirect("/someController/somePage");
        return false;
    }
}
现在使用拦截器,当我真的想在application.com/deployment/someController/somePage时,我将在application.com/someController/somePage结束。肯定有一个“spring”解决方案吗?

在参考、查看UrlBasedViewResolver的源代码以及gotuskar的评论之后,我觉得很傻,因为我不知道这会起作用,也没有一个解决方案:

public class MyInterceptor extends HandlerInterceptorAdapter {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception
    {
        StringBuilder targetUrl = new StringBuilder();
        if (this.redirectURL.startsWith("/")) {
            // Do not apply context path to relative URLs.
            targetUrl.append(request.getContextPath());
        }
        targetUrl.append(this.redirectURL);

        if(logger.isDebugEnabled()) {
            logger.debug("Redirecting to: " + targetUrl.toString());
        }

        response.sendRedirect(targetUrl.toString());
        return false;
    }
}

将我的评论转换为答案-


尝试使用
response.sendRedirect(request.getContextPath()+uri)

根据最近问题的答案的建议,您可以使用
ServletUriComponentsBuilder

是否尝试
response.sendRedirect(request.getContextPath()+uri)?感谢您的支持。但为什么我用这种方式将用户重定向到同一页面时,model.addAttribute(“error”,“error”)不起作用?我无法在重定向页面中显示它。。您对此有什么想法吗?servlet容器仍然会将其转换为绝对重定向