FreeMarker似乎无法解析HTML5 data- *属性

时间:2010-10-14 23:29:03

标签: freemarker

我编写了一个简单的自定义指令,并将其作为常规元素属性传递给所有属性。标签的语法如下:

<@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”时,一切都很好....但我真的需要破折号:“ - ”。

有人可以帮忙吗?

谢谢,

伊戈尔

2 个答案:

答案 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"></@>