voici ma classe d'objets: i Ajoutez-le au contexte de vitesse comme celui-ci: p> Cependant, lorsque vous écrivez le Modèle, ce qui suit ne rendra pas les champs d'adresse (cependant, cela fonctionne bien lorsque j'ajoute des getters à la classe d'adresses) p> est-il possible d'accéder aux champs publics de Vélocité sans ajouter des getters? P> p>
4 Réponses :
pas par défaut. Vous devez configurer une implémentation différente de UserPtpect. P>
Pourriez-vous ajouter des détails tels que le lien vers la documentation sur la façon de faire cela ou sur la raison pour laquelle cela est nécessaire?
C'est nécessaire car la vélocité ne supporte pas les champs publics. Essayez ceci: maven-doccheck.sourceforge.net/samples/shinobudemo/apidocs/o rg / ...
Il est brillant qu'ils mettent en œuvre leur cadre en fonction de la convention plutôt que des règles de langue réelles ...
the Guide de l'utilisateur de Velocity suggère que ce n'est pas possible. Citation: P>
[VELOCITY] Essaie de différentes alternatives en fonction de plusieurs conventions de dénomination établies. La séquence exacte de la recherche dépend de la création d'une lettre majuscule ou non d'une lettre majuscule. Pour les noms minuscules, tels que $ Customer.Address, la séquence est p> blockQuote>
- getAdddress () li>
- getAdddress () li>
- Obtenez ("adresse") li>
- isaddress () li> ol>
Pour les noms de propriétés majuscules comme $ client.Avrects, il est légèrement différent: p> blockQuote>
- getAdddress () li>
- getAdddress () li>
- Obtenez ("adresse") li>
- isaddress () li> ol>
http://wiki.apache.org/velocity/velocityFAQ :
Q: Comment puis-je accéder aux champs publics de mon objet dans mes modèles? P>
A: Actuellement, vous avez trois options: p>
Enveloppez votre objet avec un FieldMethodizer P> li>
Configurez votre VelocityEngine Pour utiliser un UBerspector personnalisé comme le Publicfielduberspect P > li>
Lobby La liste Velocity-Dev Pour ajouter une introspection de champ public comme une replie par défaut si aucune méthode de correspondance n'est trouvée :) p> li> ul> blockQquote>
FieldMethodizer code> uniquement avec des champs statiques publics. p>
Publicfielduberspect code> Le code est assez ancien et il manque simplement d'une erreur sur inexistante champs. p>
et oubliez le lobby sur la liste de dev. ) P>
Pendant ce temps, il y a une bonne mise en cache Mise en œuvre de uerspectpublicfieldfields dans actuel Tronc de vélocité . Malheureusement, il y avait Pas de développement actif depuis des années et aucun projet de suivant la libération est publiée. Il faudrait le construire lui-même et faire un paquet dans un référentiel privé. P>
Une autre altervative est une fourchette avec une compatibilité bonus Scala disponible dans le référentiel de Maven central: http://maven-repository.com/artifact/com.sksamuel. Scalocie / Scalocity / 0.9 . p>
Drop in au lieu de la dépendance de la vitesse habituelle: p>
xxx pré> Ajoutez simplement à
VELOCITY.PROPERTES CODE>: P>
runtime.introspector.uberspect = org.apache.velocity.util.introspection.UberspectPublicFields, org.apache.velocity.util.introspection.UberspectImpl
Je fais et tous fonctionne ok !!! p> p>