Mit einem "Konstanten"-Klasse in JSF
Ich Baue eine web-Anwendung mit JSF/Primefaces. Ich muss eine "constants"-Klasse, d.h. eine Klasse, die aus Konstanten. Diese Konstanten sind vor allem Navigations-Befehle werden in der gesamten Anwendung verwendet. Der Grund, warum ich das Tue ist zu vermeiden, dass instanziiert Saiten auf einer ad-hoc-basis.
Wie kann ich erreichen, so dass die Konstanten, die zugänglich sowohl aus backing beans und XHTML-Dateien?
Habe ich versucht, mit @ApplicationScoped
und die Verwendung der Singleton-Muster (Singleton-Klasse), aber ich bin nicht in der Lage, um es arbeiten aufgrund von Umfang Probleme.
Oder vielleicht bin ich einfach mit dem falschen Ansatz. Irgendwelche Ideen/Vorschläge sind willkommen.
public static final String page1 = "page1.xhtml"
. Denken Sie daran, dass diese Klasse verwendet werden, in Ihrem managed beans. Wenn Sie diese Werte in Ihrem JSF-code, dann könnte man hinzufügen @ApplicationScope der Klasse und Getter für die String
s Sie verwenden.Können Sie erklären mit einem Beispiel?
InformationsquelleAutor javaMS | 2012-10-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
In backing beans, es ist offensichtlich leicht. Als Sie gerade die Java-Klassen, es ist nicht anders als das "normale" Java Weg. Könnten Sie
enum
s oderpublic static final
Felder. In Aussicht, das ist eine andere Geschichte. Bis die kommende version 3.0, EL tut nämlich not support Konstanten in keiner Weise.Ich würde empfehlen die Verwendung von enums als EL impliziten Unterstützung für string-Vergleiche. Es macht keinen compile-Zeit/Laufzeit-Typ-Sicherheit-Prüfungen, aber Sie können die enum-Namen als string. E. g.
Wenn Sie lieber mehr selbst dokumentieren von code und Laufzeit zu überprüfen (Nein, eine compile-Zeit-Prüfung ist nicht möglich), dann könnten Sie erwägen,OmniFaces
<o:importConstants>
.Dies ist IMO nur ein bisschen mehr ungeschickt. Die Laufzeit überprüfen ist allerdings schön während der Entwicklung. Ein Tippfehler ist leicht zu übersehen.
In der kommenden EL 3.0 (JSR-341, Teil von Java EE 7), ist es möglich, Konstanten Referenz auf die gleiche Weise. Siehe auch Wie auf Konstanten in der EL? Dies erfordert lediglich programmgesteuerten importieren der Konstanten, da es keine standard-JSP/Facelets-tag -.
Ok, habe das problem gefunden. Ich muss <o:importConstants/> innerhalb der <ui:define/>-block. Ich setzte es außerhalb des it-führte zu dieser Ausnahme. Können Sie erklären, was Sie damit gemeint ungeschickt?
Tags müssen in der Tat in den Blick, nicht außerhalb. Wenn Sie ein master-template, Sie können auch einfach platzieren Sie es dort, so dass Sie nicht brauchen, um zu wiederholen es über alle template-clients. "Ungeschickt" bedeutet hier "nicht einfach genug". Ich mag die Einfachheit.
Danke. Ich hatte den Eindruck, dass die externe boundary-tag für die Darstellung wurde die <Zusammensetzung>-tag.
In einem template-client, alles, was außerhalb
<ui:define>
ist nicht Teil der Ansicht.InformationsquelleAutor BalusC