springboot + Thymeleaf + HTML 用动态值替换meta标签内容属性

Springboot + Thymeleaf + HTML replace meta tag content attribute with dynamic value

我需要在 html 中使用动态值填充元标记的内容属性。我正在使用 Spring boot 和 thymeleaf 模板引擎。我尝试寻找解决方案,但所有解决方案要么是零散的,要么不直接回答我的问题。由于我项目的性质,我不想使用 JQuery 或任何其他 javascript 框架,因此发布此查询。

已经尝试过各种 thymeleaf 开箱即用的功能

    @Value("${redirect.url}")
    String redirectUrl;

    @RequestMapping(value = "/")
    @CrossOrigin
    public String index( Model model) {
        model.addAttribute("url", redirectUrl);
        return "index";
    }
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8" />
    <meta http-equiv="Refresh" content="0; url="/> <!-- Need to be able to populate dynamic value  by using thymeleaf-->
</head>
</html>

我除了 url 标签包含从我的控制器传递的实际 URL

我想 post 一个可行的解决方案,以使我自己和将来偶然发现此页面的其他人受益

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>

    <meta charset="UTF-8" />
    <meta http-equiv="Refresh" content="0; url="/>

    <script th:inline="javascript">
        /*<![CDATA[*/
        var myUrl = /*[[${url}]]*/ 'http:localhost:3000';
        var myFinalUrl = "0; url=" + myUrl;
        document.querySelector('meta[http-equiv="Refresh"]').setAttribute('content',myFinalUrl);
        /*]]>*/
    </script>
</head>
</html>

Thymeleaf 原生支持 th:content 属性。无需使用 javascript hack。 See the list of supported attributes.

<meta http-equiv="Refresh" th:content="|0; url=${url}|" />