Доступ к постоянным значениям из шаблона Apache Velocity? - PullRequest
15 голосов
/ 29 сентября 2008

Возможно ли получить доступ к постоянному значению (то есть к общедоступной статической конечной переменной, определенной в классе Java) из шаблона Velocity?

Я бы хотел написать что-то вроде этого:

#if ($a lt Long.MAX_VALUE)

но это, очевидно, неправильный синтаксис.

Ответы [ 2 ]

11 голосов
/ 18 октября 2008

Есть несколько способов.

1) Вы можете поместить значения непосредственно в контекст.

2) Вы можете использовать FieldMethodizer , чтобы сделать все открытые статические поля в классе доступными.

3) Вы можете использовать пользовательскую реализацию Uberspect, которая включает в себя открытые статические поля в порядке поиска.

4) Вы можете использовать FieldTool от VelocityTools.

Я рекомендую 1 для нескольких значений, 2 для нескольких классов, 3 для множества классов и значений и 4, если вы уже используете VelocityTools и в противном случае используете 1 или 2.

6 голосов
/ 29 сентября 2008

Velocity может использовать только то, что находит в своем контексте, например,

context.put("MaxLong", Long.MAX_VALUE);

Вы не можете использовать статику или получать доступ к статическим элементам вещей в контексте Velocity из-за того, как работает ее поиск (см. Правила поиска свойств * Velocity ). Лучше всего добавить значение, которое вы хотите явно проверить в своем контексте.


Редактировать 6 октября 1010 * на второй взгляд, кажется, возможно получить доступ к статическим членам. См. Speed ​​ Руководство разработчика - Поддержка «Статических классов» для получения дополнительной информации. Я не пробовал это, хотя.

...