Thymeleaf:如何通过data-main

时间:2016-06-01 17:20:02

标签: javascript requirejs thymeleaf

我们有一个项目,我们希望在开发人员环境中使用require.js以及我们未压缩的主app.js,所以我们在主要的Thymeleaf模板html中尝试了这个脚本声明:

<script
    th:if="${@applicationProperties.getStage() == 'dev'}"
    th:src="@{'/js/shared/lib/amd/require.min.js'}"
    data-main="@{'/js/app.js'}">
</script>

在浏览器中观察网络流量显示,加载require.min.js有效,因此Thymeleaf会在th:src中预先设置上下文。

app.js显然也被传递给require,因为您可以看到浏览器正在尝试通过data-main加载您要传递的任何内容。

但是,使用@ {}将上下文添加到"/js/app.js"会产生类似http://localhost:7000/myapp/@%7B'/js/app.js'%7D.js的内容。所以我假设Thymeleaf没有处理data-main标签的值。

使用Thymeleaf的data:main根本不起作用。

如果我们硬编码上下文路径,那么一切都很好:

data-main="/myapp/js/app.js">

那么,我们如何将上下文路径添加到脚本位置?

1 个答案:

答案 0 :(得分:1)

解决方案是:

<script type="text/javascript"
    th:if="${@applicationProperties.getStage() == 'dev'}"
    th:src="@{'/js/shared/lib/amd/require.min.js'}"
    th:attr="data-main=@{/js/app.js}">
</script>

注意,th:attr!

的值中没有撇号