#java #velocity #directive
#java #скорость #директива
Вопрос:
как выполнить пользовательскую директиву velocity с локализованным именем. Теперь такие директивы игнорируются. Например:
class MyDirective extends Directive {
@Override
public String getName() {
return "Пример";
}
@Override
public boolean render(InternalContextAdapter context, Writer writer, Node node)
throws IOException, ResourceNotFoundException, ParseErrorException, MethodInvocationException {
writer.write("example");
return true;
}
}
Ввод текста: #Пример()
Ожидалось example
, но получил неизмененный текст #Пример()
Ответ №1:
Это ограничение анализатора скорости в соответствии с этим определением идентификатора
<PRE_REFERENCE,REFMODIFIER,REFMOD2>
TOKEN :
{
<#ALPHA_CHAR: ["a"-"z", "A"-"Z", "_"] >
| <#IDENTIFIER_CHAR: [ "a"-"z", "A"-"Z", "0"-"9", "_" ] >
| <IDENTIFIER: ( <ALPHA_CHAR> ) (<IDENTIFIER_CHAR>)* >
{
if (curLexState == PRE_REFERENCE)
{
SwitchTo(REFERENCE);
}
}
}