【问题标题】:Thymeleaf 3 URL resolving not working with Spring Boot 4 + Spring SecurityThymeleaf 3 URL 解析不适​​用于 Spring Boot 4 + Spring Security
【发布时间】:2017-06-09 05:08:02
【问题描述】:

在 Spring Boot 4 中使用 Gradle 配置配置 Thymeleaf 3 之后

compile('org.springframework.boot:spring-boot-starter-thymeleaf')
compile('org.thymeleaf:thymeleaf:3.0.3.RELEASE')

ext['thymeleaf.version'] = '3.0.3.RELEASE'
ext['thymeleaf-layout-dialect.version'] = '2.1.2'

网址解析器无法正确解析 Thymeleaf 视图中的网址:

<link rel="stylesheet" href="/css/login.css" data-th-href="@{~/css/login.css}">

变成了

<link rel="stylesheet" href="/css/login.css">

我已经进行了一些调试,首先,在请求期间,我注意到 SaveToSessionResponseWrapperSaveContextOnUpdateOrErrorWrapper 的子集)被这样初始化:

public SaveContextOnUpdateOrErrorResponseWrapper(HttpServletResponse response,
        boolean disableUrlRewriting) {
    super(response);
    this.disableUrlRewriting = disableUrlRewriting;
}

传递的参数是FireWalledResponsefalse。后者导致以下方法完全禁用 URL 的转发:

@Override
public final String encodeURL(String url) {
    if (this.disableUrlRewriting) {
        return url;
    }
    return super.encodeURL(url);
}

现在,如果我在构造函数中放置一个断点并强制disableUrlRewritingtrue,它最终会执行HttpServletResponseImpl.isEncodeable,然后在这里失败:

    } else if(hreq.isRequestedSessionIdFromCookie()) {
        return false;

在这一点上,我不确定出了什么问题。我找不到任何出现此错误的人,它既不适用于 starter-tomcat 也不适用于 starter-undertow,但我还没有在 Tomcat 中进行彻底的调试。

【问题讨论】:

  • 您期望它解决什么问题?
  • @holmis83 一个上下文相关的 URL

标签: java spring spring-boot spring-security thymeleaf


【解决方案1】:

@{~/css/login.css} 是 Thymeleaf 中的 服务器相关 URL。

如果您想要 上下文相关 URL,请省略波浪号 (~) 字符:

<link rel="stylesheet" href="/css/login.css" data-th-href="@{/css/login.css}">

详见Standard URL Syntax文章。

【讨论】:

  • 如果我使用它,它仍然会转换为/css/login.css。无论我尝试什么 URL,都会发生同样的事情。
【解决方案2】:

你应该使用

<link rel="stylesheet" href="/css/login.css" th:href="@{/css/login.css}">

没有data-th-href

【讨论】:

  • 与那个相同的问题,它根本无法解决。我什至不明白为什么 disableUrlRewriting 被设置为 true。
猜你喜欢
  • 2021-01-17
  • 2021-03-25
  • 2020-08-15
  • 2014-07-04
  • 2020-08-05
  • 2016-03-13
  • 2015-04-20
  • 1970-01-01
  • 2016-04-16
相关资源
最近更新 更多