Avoir un “constantes”de la classe dans le programme JSF
Je suis en train de construire une application web en utilisant JSF/Primefaces. J'ai besoin d'avoir un "constantes"de la classe, c'est à dire une classe qui sera composé de constantes. Ces constantes sont principalement de navigation commandes qui seront utilisés tout au long de l'application. La raison pour laquelle je fais cela est pour éviter d'avoir instancié Cordes sur une base ad-hoc.
Comment puis-je atteindre cet objectif, prise de constantes accessible à partir de la sauvegarde des haricots et des fichiers XHTML?
J'ai essayé d'utiliser @ApplicationScoped
et l'utilisation du Singleton-modèle (classe Singleton) mais je suis incapable de le faire fonctionner en raison de la question de la portée.
Ou peut-être que je suis juste en utilisant l'approche erronée. Toutes les idées/suggestions sont les bienvenues.
- Pourquoi ne pas avoir une classe avec
public static final String page1 = "page1.xhtml"
. Rappelez-vous que cette classe sera utilisée dans votre géré les haricots. Si vous allez à l'utilisation de ces valeurs dans votre JSF code, vous pouvez ajouter le @ApplicationScope de la classe et des getters pour leString
s vous allez utiliser. - Pouvez-vous expliquer avec un exemple?
Vous devez vous connecter pour publier un commentaire.
Dans la sauvegarde de haricots, c'est de toute évidence facile. Comme ils sont juste des classes Java, il n'est pas différent de la "normale" Java façon. Vous pouvez utiliser
enum
s oupublic static final
champs. De point de vue, c'est une autre histoire. Jusqu'à la prochaine version 3.0, EL ne savoir pas en charge les constantes de toute façon.Je vous conseille d'utiliser les énumérations comme EL est implicite dans les comparaisons de chaînes. Il ne fait pas du tout compile-time/runtime type de contrôles de sécurité, mais vous pouvez utiliser l'enum nom comme une chaîne de caractères. E. g.
Si vous souhaitez plus d'auto-documentation du code et un moment de l'exécution (non, une compile-time n'est pas possible), alors vous pourriez envisager d'utiliser des OmniFaces
<o:importConstants>
.C'est de l'OMI, seulement un peu plus maladroit. Le moment de l'exécution est toutefois bien au cours du développement. Une faute de frappe est facilement supervisé.
Dans les prochaines EL 3.0 (La JSR-341, une partie de Java EE 7), il est possible de constantes de référence de la même manière. Voir aussi Comment constantes de référence en EL? Cela nécessite seulement programmatique de l'importation des constantes comme il n'y a pas de norme JSP/Facelets balise pour que.
<ui:define>
n'est pas une partie de la vue.