Thymeleaf:将文字与变量结合起来

时间:2018-04-20 08:26:35

标签: javascript html html5 spring-boot thymeleaf

我在Thymeleaf中有这段代码:

charset = list(reduce(lambda x, y: set(y) | x, structures, set()))

但是我收到了解析错误

4 个答案:

答案 0 :(得分:2)

我有两点意见:

打开代码?

某些Thymeleaf模板模式要求模板格式正确。如果是这种情况,任何未关闭的 img标记都将导致解析错误。

当发生这种情况时,java堆栈跟踪是提供信息的:

org.xml.sax.SAXParseException: The element type "img" must be terminated by the matching end-tag "</img>".

但您在浏览器中看到的错误不是

Exception parsing document: template="home", line 19 - column 6

我最低配置的Spring Boot应用程序默认使用其中一种更严格的模式(HTML5XML?),因此@ Metroids&#39;和@ ErikMD的答案给我一个解析错误,但如果我关闭图片标签,两者都有效。

如果您的情况不是这样,那么使用java堆栈跟踪更新问题可能有所帮助。

<强>管道

我认为所有这些撇号和加号都会使标记难以阅读(和写入)。使用literal substitutions with pipes可以说更易读(并且更不容易出错):

<img th:onmouseover="|javascript:imageName('ImageName${image.id}');|" />

甚至:

<img th:onmouseover="|imageName('ImageName${image.id}')|" />

如果你不喜欢这种方法,你也可以通过删除theImageName之后的反斜杠来解决问题中的代码:

<img th:onmouseover="'javascript:imageName(\'theImageName' + ${image.id} +'\');'" />

答案 1 :(得分:1)

你可以尝试以下

<img th:onmouseover="'javascript:imageName(\''+ theImageName\' + ${image.id} +'\');'"> 

答案 2 :(得分:1)

我将其格式化为:

<tr th:each="image: ${images}" >
    <img th:onmouseover="${'javascript:imageName(''theImageName' + image.id + ''');'}"> 
</tr>

答案 3 :(得分:0)

您可以尝试使用以下代码吗?

<img th:attr="onmouseover=${'javascript:imageName(''theImageName' + image.id + ''');'}">

这个答案的灵感来自that other SO answer,而Thymeleaf文档的相关部分是5.1: Setting the value of any attribute