Доступ к постоянным значениям из шаблона скорости Apache?
Можно ли получить доступ к постоянному значению (т.е. общедоступной статической конечной переменной, определенной в классе Java) из шаблона Velocity?
Я хотел бы написать что-то вроде этого:
#if ($a lt Long.MAX_VALUE)
но это, по-видимому, не правильный синтаксис.
Ответы
Ответ 1
Существует несколько способов.
1) Вы можете поместить значения непосредственно в контекст.
2) Вы можете использовать FieldMethodizer, чтобы сделать все публичные статические поля в доступном классе.
3) Вы можете использовать пользовательскую реализацию Uberspect, которая включает общедоступные статические поля в порядке поиска.
4) Вы можете использовать FieldTool из VelocityTools.
Я рекомендую 1 для нескольких значений, 2 для нескольких классов, 3 для множества классов и значений и 4, если вы уже используете VelocityTools и в противном случае использовали бы 1 или 2.
Ответ 2
Velocity может использовать только то, что находит в своем контексте, например,
context.put("MaxLong", Long.MAX_VALUE);
Вы не можете использовать статику или обращаться к статическим членам вещей в контексте Velocity из-за того, как работает его поиск (см. Velocity Правила поиска свойств). Лучше всего добавить значение, которое вы хотите явно проверить в своем контексте.
Редактировать 6 октября на второй взгляд, возможно, можно получить доступ к статическим членам. Для получения дополнительной информации см. Скорость Руководство разработчика - Поддержка "Статических классов" . Однако я этого не пробовал.