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

标签 javascript html spring-boot thymeleaf

我在 Thymeleaf 中有这段代码:

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

但是我遇到了解析错误

最佳答案

我有两个观察结果:

打开标签?

某些 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' 和 @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} +'\');'" />

关于javascript - Thymeleaf:将文字与变量结合起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49937294/

相关文章:

jquery - 溢出 : hidden in FF

javascript - 在控制台或日志中显示jquery自定义属性

javascript - 没有 jquery ui 的垂直选项卡

javascript - 在不显式转发所有函数的情况下装饰类实例

javascript - 如何允许输入的数字类型有空格和逗号

Java Spring Boot 不记录异常

javascript - jQuery .done 未触发 $.post 请求

html - 向左浮动的 div 移至底部

java - Spring Boot 测试不使用 jmx 属性

rest - Spring Boot REST 服务 : JSON Deserialization Not Working