java - 如何在传递给 HttpServletResponse.sendRedirect 的 URL 中禁用大括号评估

标签 java spring-mvc tomcat servlets curly-braces

我有一个 URL 缩短程序,它应该将 Redirect(URL) 发送到用户指定的 URL。 有时 URL 包含大括号,如下所示:http://example.com?someparam={something}

我在 Tomcat 服务器上的 Spring MVC 应用程序没有向客户端浏览器发送响应 302,而是给出了没有文本的错误 404。

显然这是在进行某种 URL 变量评估,我可以禁用它吗?我找不到有关此功能的文档。

最佳答案

我知道这是一个老问题,但我认为 OP 正在寻找一种方法来阻止 Spring 在重定向 URL 中进行变量替换

我遇到了完全相同的问题,修复方法是使用 RedirectView 在 RedirectView 中您可以设置 setExpandUriTemplateVariables(false)

这使得它重定向到准确给出的 url,而 Spring 没有尝试替换其中的任何内容

代码如下

        RedirectView redirect = new RedirectView(redirectUrl);
        redirect.setExpandUriTemplateVariables(false);
        return new ModelAndView(redirect);

希望有帮助

关于java - 如何在传递给 HttpServletResponse.sendRedirect 的 URL 中禁用大括号评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35478586/

相关文章:

java - "Unknow type constant pool at position X"在自 java 8 以来的 tomcat 日志中

tomcat - 为什么在 Alfresco 上配置 CORS 源如此复杂

java - EL 在 glassfish 上的部署问题

java - 如何在Eclipse中查看Java提供的类

java - 如果替换给定键的旧值,put 方法是否会增加 "modCount"?

java - 使用 Glide Library 时,小尺寸图像会自动调整大小

java - 如何在 spring mvc 中覆盖 getSession()

java - 将 Spring xml 配置 Controller 更新为注释

java - 使用 java 正则表达式读取文本文件以匹配多个模式

java - 在 spring-web.xml 中配置多个数据源