2010-09-09 5 views
0

Je suis rendu un formulaire pour présenter une classe de modèle de domaine annoté, i.e. .:Ai-je accès aux annotations via Freemarker?

@Entity 
class User { 
    @NotNull 
    private String name; 
    // other code 
} 

Je voudrais lire les méta-données annotées de décider comment rendre chaque propriété.

Je l'utiliser pour ajouter des classes CSS à mes entrées étiquettes et enfin utiliser jQuery pour joindre des méthodes de validation sur ces champs.

Est-ce que freemarker offre un moyen d'accéder aux méta-données annotées?

Répondre

1

Il peut effectivement y avoir un moyen de le faire directement, mais je suis progressivement arrivé à la conclusion qu'il est plus simple de faire un travail supplémentaire dans mon code d'action pour faciliter les choses pour le modèle, plutôt que d'essayer de co-erce Freemark pour sauter à travers les cerceaux. Par exemple, je vais créer une liste de booléens, un par article que j'affiche, indiquant, disons, si l'article a déjà été acheté. Freemarker est assez bon pour traverser les listes parallèles.

+0

Je pense qu'il devrait y avoir un TemplateModel "sensible aux annotations" qui expose des built-ins comme _user.name?hasAnnotation('NotNull')_. Cela garderait le contrôleur freemakrer-agnostic (il retourne juste l'objet-domaine) et garderait le style freemarker pour exposer les données dans le template, n'est-ce pas? Mais je ne sais pas maintenant comment implémenter une telle fonctionnalité. –

+0

Ce serait bien, certes, mais ... vous devez évaluer le coût de la mise en œuvre par rapport au fait que votre contrôleur ne soit pas agnostique. IMO le contrôleur * devrait * connaître la vue, donc je ne vois pas beaucoup de valeur dans ce dernier. Alors encore, à quelle fréquence auriez-vous besoin de cela? Si beaucoup, alors cela peut valoir le coût de la mise en œuvre de votre idée d'annotation. –