【问题标题】:Dynamically add JavaScript resources in Thymeleaf在 Thymeleaf 中动态添加 JavaScript 资源
【发布时间】:2021-01-17 06:02:28
【问题描述】:

我有 timeago.js 插件,它需要一些语言环境文件。但你不能一次全部添加。它应该是相对当前的语言环境。所以我需要类似 switch 或 if 条件来添加资源。我已经尝试过了,但它不起作用。

<script th:if="${#locale == 'az_AZ'}" th:src="@{/resources/jquery/js/jquery.timeago.az.js}" type="text/javascript"></script>
<script th:if="${#locale == 'ru_RU'}" th:src="@{/resources/jquery/js/jquery.timeago.ru.js}" type="text/javascript"></script>

【问题讨论】:

    标签: javascript spring spring-boot thymeleaf


    【解决方案1】:

    我建议使用 #locale.language 仅获取上下文语言环境的语言部分 - 特别是因为您需要匹配 JS 文件名。

    所以,是这样的:

    <script th:inline="javascript" 
            th:if="${#locale.language == 'en'}"  
            th:src="@{/resources/jquery/js/jquery.timeago.en.js}" 
            type="text/javascript"></script>
    <script th:inline="javascript" 
            th:if="${#locale.language == 'ru'}"  
            th:src="@{/resources/jquery/js/jquery.timeago.ru.js}" 
            type="text/javascript"></script>
    

    但您可以通过在您的 src URL 中直接使用 #locale.language 值来进一步简化此操作:

    <script th:inline="javascript" 
            th:src="@{/resources/jquery/js/jquery.timeago.{lang}.js(lang=${#locale.language})}" 
            type="text/javascript"></script>
    

    现在,不需要使用任何th:if 语句,您只需要一个&lt;script&gt; 标签,而不是一长串可能的标签。

    【讨论】:

    • 谢谢。旁注,如果您需要考虑这一点……如果语言环境没有相关的 JS 脚本,则这两种方法都不会提供“默认”或“后备”语言代码。为此可能需要一种不同的方法。两种可能性:评估服务器上的语言环境;使用 Thymeleaf switch 声明。
    • 我忘了提到可能是最好的方法:使用 Thymeleaf properties files 处理本地化。这也允许您定义默认/备用文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    • 1970-01-01
    • 2017-07-26
    • 2016-08-17
    • 2015-01-05
    • 2023-02-15
    相关资源
    最近更新 更多