Thymeleaf th:href含下划线引发模板处理异常的解决咨询
解决Thymeleaf解析含多下划线URL的异常
Thymeleaf解析带连续下划线的绝对URL时,会误把下划线后的内容当成表达式处理,导致TemplateProcessingException错误,以下是几种可行的解决方法:
用单引号包裹整个URL:直接明确告诉Thymeleaf这是纯字符串,不要解析为表达式
<a th:href="@{ 'https://abc/xyz___data_system_/theme_something' }"></a>拆分下划线段避免触发解析:把连续下划线的部分拆分开,用字符串连接符
+拼接<a th:href="@{https://abc/xyz__+'_'+'data_system_/theme_something'}"></a>将URL定义为变量后引用:先在模板上下文里定义URL变量,再通过变量引用
<div th:with="targetUrl='https://abc/xyz___data_system_/theme_something'"> <a th:href="@{${targetUrl}}"></a> </div>
本质原因是Thymeleaf的表达式解析器对连续下划线的识别逻辑会触发OGNL表达式解析,通过上述方法强制将URL视为纯文本,就能避免解析错误。
内容的提问来源于stack exchange,提问作者Syed Iftekharuddin
相关产品推荐
相关产品推荐

