Похоже, что FreeMarker не может проанализировать данные HTML 5 - * атрибуты - PullRequest
0 голосов
/ 15 октября 2010

Я написал простую пользовательскую директиву, и он должен передавать все атрибуты как обычные атрибуты элемента.Синтаксис тега выглядит следующим образом:

<@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 ]

2 голосов
/ 09 марта 2015

Начиная с 2.3.22, вы можете использовать -. и :) как часть любого имени, если перед ним стоит \, как в <@link_to data\-target=...>.(Это не слишком мило, но - уже используется в качестве оператора вычитания, и исправление этого не будет обратно совместимо, и поэтому должно ждать увеличения основной версии FTL.)

1 голос
/ 19 октября 2010

Ваша проблема в том, что - но в этом контексте он не используется как тег HTML, это аргумент FTL для пользовательской директивы.FTL, очевидно, не любит тире в именах переменных, но это не помешает тебе включить тире в выходные данные.

Ты не включил свою директиву, но я думаю, что твои попытки могут выглядетькак это.Просто напишите свою ссылку в макросе, ссылаясь на 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"></@>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...