Thymeleaf: 在Javascript中使用带有 'th:href' 的链接

3

我有以下链接:

<a th:href="@{/linkToPage}">...</a>

这很奏效。但现在我有一个解决办法,我需要在Javascript中“创建”这个链接:

$('#div').html(
    '<a th:href="@{/linkToPage}">...</a>'
);

但是现在链接已经不能使用了。有没有办法使链接重新生效,并调用控制器中对应的“get”方法?非常感谢。

Thymeleaf模板通常在服务器端执行,而JavaScript通常在客户端浏览器上执行。因此,浏览器渲染引擎不知道th:ref属性。使用纯JavaScript,我猜你只能设置链接目标而没有th:前缀。 - Andre Albert
可以!但是一般来说,这样做是个好主意吗?(顺便说一下:我正在使用Spring MVC并在控制器中调用一个get方法) - manu
我不熟悉Spring MVC,但在不同的上下文中使用thymeleaf引擎。如果它与Spring MVC有关,您可能需要添加一个Spring MVC相关标签,以便通知这里的其他专家受众。 - Andre Albert
1个回答

10

您可以使用Thymeleaf脚本内联来实现。尝试在script标记中添加th:inline="javascript",并将link变量初始化以在脚本中使用。您可以在此处了解更多关于Thymeleaf脚本内联的信息。

<script type="text/javascript" th:inline="javascript">
/*<![CDATA[*/

    var link = /*[[@{/linkToPage}]]*/'';

    $('#div').html(
        '<a href="' + link + '">...</a>'
    );

 /*]]>*/
 <script>

正是我所需要的!非常感谢! - manu
有没有一种方法可以像这样连接链接:var linkName ='linkToPage'; var link = /*[[{/ + linkName + }[[*/ - manu
1
正如@andre-albert在上面的评论中所说,Thymeleaf模板通常在服务器端执行,因此您无法将JavaScript变量放入Thymeleaf内联脚本中。如果我理解您的问题,您可以通过以下方式实现:var baseLink = /*[[@{/}]]*/; var pageName = '/page-name'; var pageLink = baseLink + pageName; - Stefano Curcio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接