2008-09-29 4 views
13

Est-il possible d'accéder à une valeur constante (c'est-à-dire une variable finale publique statique définie dans une classe Java) à partir d'un modèle Velocity?Accéder aux valeurs constantes d'un modèle Apache Velocity?

Je voudrais pouvoir écrire quelque chose comme ceci:

#if ($a lt Long.MAX_VALUE) 

mais ce ne semble pas être la bonne syntaxe. La vitesse ne peut utiliser que ce qu'elle trouve dans son contexte, après, par exemple,

Répondre

10

Il y a plusieurs façons.

1) Vous pouvez placer les valeurs directement dans le contexte.

2) Vous pouvez utiliser FieldMethodizer pour rendre tous les champs statiques publics d'une classe disponibles.

3) Vous pouvez utiliser une implémentation Uberspect personnalisée qui inclut des champs statiques publics dans l'ordre de recherche.

4) Vous pouvez utiliser le FieldTool de VelocityTools.

Je recommande 1 pour quelques valeurs, 2 pour quelques classes, 3 pour un bon nombre de classes et des valeurs, et 4 si vous utilisez déjà VelocityTools et autrement emprunterait 1 ou 2.

5

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

Vous ne pouvez pas utiliser ou avoir accès à statics membres statiques de choses dans le contexte de la vitesse en raison de la façon dont ses travaux de consultation (voir la vitesse de Property lookup rules). La meilleure chose à faire est d'ajouter explicitement la valeur que vous voulez vérifier dans votre contexte.


6 Octobre Modifier sur la seconde vue, il semble possible d'accéder aux membres statiques. Voir la vitesse Developer guide - Support for "Static Classes" pour plus d'informations. Je n'ai pas essayé cela, cependant.

+2

Le soutien pour les classes statiques , ne s'étend pas aux champs statiques, seulement aux méthodes statiques. En outre, il est seulement dans la dernière version 1.6-beta1. –

Questions connexes