我编写了一个简单的自定义指令,并将其作为常规元素属性传递给所有属性。标签的语法如下:
<@link_to controller="unobtrusive" action="do-get" data-target="result">Do Get</@>
不幸的是,我得到了一个例外:
Caused by: freemarker.core.ParseException: Encountered "-" at line 32, column 56 in unobtrusive/index.ftl. Was expecting: "=" ...
这是因为它似乎无法解析“data-target”属性。当我用下划线将其更改为“data_target”时,一切都很好....但我真的需要破折号:“ - ”。
有人可以帮忙吗?
谢谢,
伊戈尔答案 0 :(得分:2)
从2.3.22开始,您可以使用-
(以及.
和:
)作为任何名称的一部分,如果您在其前面加\
,就像<@link_to data\-target=...>
。 (它不太可爱,但是-
已经被用作减法运算符,并且修复它不会向后兼容,因此必须等待主要的FTL版本增加。)
答案 1 :(得分:1)
您的问题是 - 但在该上下文中它不是用作HTML标记,它是自定义指令的FTL参数。 FTL显然不喜欢变量名中的破折号,但这不会阻止您在输出中包含破折号。
您没有包含您的指令,但我认为您尝试完成的操作可能如下所示。只需在宏中编写链接,将data_target引用为$ {data_target}即可。请注意,结果将data-target作为输出。
<#macro link_to controller action data_target>
Here is the controller: ${controller}
Here is the action: ${action}
Here is the data-target: ${data_target}
</#macro>
<@link_to controller="unobtrusive" action="do-get" data_target="result"></@>