Доступ к постоянным значениям из шаблона скорости 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 октября на второй взгляд, возможно, можно получить доступ к статическим членам. Для получения дополнительной информации см. Скорость Руководство разработчика - Поддержка "Статических классов" . Однако я этого не пробовал.