当前位置: 首页 > 知识库问答 >
问题:

Thymeleaf-取消内联JavaScript表达式的一部分的引号

司空俊悟
2023-03-14

我有一个springboot项目,需要呈现脚本元素的一部分,如下所示。(假设getMessage函数是在其他地方定义的。)

预期产出:

<script type="text/javascript">
    /*<![CDATA[*/
    var message = 'Hello, John' + getMessage();
    alert(message);
    /*]]>*/
</script>

其中John是Spring模型属性。

是否可以使整个'Hello, John'getMessage()在一个Thymeleaf表达式中?或者,将Hello, JohngetMessage()分配给单独的JavaScript变量,然后将它们连接起来是唯一的方法吗?我尝试了以下内容,但似乎内联的JavaScript表达式总是被引用。

<script type="text/javascript" th:inline="javascript">
    /*<![CDATA[*/
    var message = /*[[|'Hello, ${name}' + getMessage()|]]*/ 'Hello, John';
    alert(message);
    /*]]>*/
</script>

实际产出:

<script type="text/javascript">
    /*<![CDATA[*/
    var message = "'Hello, John' + getMessage()";
    alert(message);
    /*]]>*/
</script>

顺便说一下,我使用的是Thymeleaf2.1。

共有2个答案

苏志
2023-03-14

发现通过使用特殊注释语法/*[…]*/ 我可以取消引用thymeleaf表达式后面的部分。

/*[+
var message = [[|Hello, ${name}|]] + getMessage();
+]*/

结果:


var message = 'Hello, John' + getMessage();

在胸腺叶2.1工程。

拓拔坚
2023-03-14

[…] 符号用于转义内联:它将内联中的所有内容转换为格式良好的Javascript字符串。

因为您还想调用某些东西,所以需要使用[(…)] 符号:

js prettyprint-override">var message = /*[('Hello, ${name}' + getMessage())]*/ 'Hello, John';

但是,请注意,这种方式不会自动获得转义字符串,因此如果${name}包含单引号字符(),则会得到格式不正确的javascript表达式。你需要设法解决这个问题。

更多信息: Thymeleaf: Javascript内联

 类似资料:
  • 我有一个使用Thymeleaf的Spring启动应用程序。我正在使用字符串值设置一个模型变量,并希望在javascript中将其用作变量值。 在Java中,我执行以下操作: 我的HTML代码如下所示: JavaScript中的结果应该是: 但是我得到的是超文本标记语言: 我在超文本标记语言/JavaScript中尝试了不同的东西: 仅使用一个括号- JavaScript中没有正确的字符串。我怎样才

  • 问题内容: 我想要一个正则表达式从HTML页面提取标题。目前我有这个: 是否有一个正则表达式仅提取 的内容,所以我不必删除标签? 问题答案: 用在正则表达式和python中检索捕获的字符串(将返回如果没有找到结果,所以 不要用直接):

  • 我有一个带表单的thymeleaf代码片段。我想验证这张表格。 这里有个例外: ${#fields.haserrors('name')} 那么我如何将name param放入引号中呢?

  • 问题内容: 我想要一个正则表达式从HTML页面提取标题。目前我有这个: 是否有一个正则表达式仅提取的内容,所以我不必删除标签? 问题答案: 用在正则表达式和中检索捕获的字符串(将返回如果没有找到结果,所以不要用直接):

  • 问题内容: 考虑以下(非常简化的)示例字符串: 如您所见,它是两个值,以逗号分隔。 现在,我 可以 将其与以下内容匹配: 问题是,我必须写两次。对于小模式,这并不是很糟糕,但是对于更复杂的正则表达式,两次编写完全相同的东西会使结束模式变得庞大而繁琐。这似乎也是多余的。 我尝试使用命名捕获组: 但这没用,因为它寻找的是两次,而不是。 有什么方法可以保存模式的一部分,例如,以便以后可以在同一模式中使用

  • 使用SpringMVC和Thymeleaf,我正在构建一个包含一些javascript的html视图。 在页面中,th: each与迭代值一起使用,为一组按钮提供唯一的超文本标记语言id。 我的问题出现在尝试生成javascript时,该javascript将对每个按钮id使用jQuery引用。 在另一种视图解析语言中,我会使用代码: (以上可能不是100%语法正确,但我希望你明白——我试图做的是