JSF Umfangreiche Seite strukturieren

miketech

Bekanntes Mitglied
Hallo zusammen,

ich habe folgendes Problem: Ich möchte eine Webanwendung schreiben, die im Prinzip nur über eine Seite verfügt. Die Interaktion mit dem Anwender erfolgt vor allem über viele Dialoge, die bei bestimmten Aktionen angezeigt werden. D.h. es ist ähnlich, wie man es von Desktop-Anwendungen her kennt.

Nun ist meine Frage: Wie würdet ihr diese Anwendung nun strukturieren? Aufgrund der vielen Dialoge wird meine eine Seite natürlich enorm groß, also vom Quellcode her. Ich habe viele Dialoge etc. Würdet ihr nun pro Dialog eine eigene JSF-Seite erstellen und die per Import einbinden? Wie kann ich dann verhindern, dass man diese JSF-Seite einzeln aufrufen kann? In der web.xml unterbinden?

Würde mich interessieren, wie ihr hier vorgehen würdet.

Viele Grüße

Mike
 
Aufgrund der vielen Dialoge wird meine eine Seite natürlich enorm groß, also vom Quellcode her. Ich habe viele Dialoge etc. Würdet ihr nun pro Dialog eine eigene JSF-Seite erstellen und die per Import einbinden?

Ab JSF 2.0 kann man eine großen Seite leicht zerlegen in viele kleine Module (Facelets), die dann per Panelgroups mit einer rendered=<bedingung> wahlweise aktiviert werden. Facelets können weitere Unter-Facelets enthalten.

Es werden nach jedem POST dann nur die Facelets sichtbar, deren rendered Bedingung erfüllt ist.

Beispiel
[XML]
<h😛anelGroup rendered="#{bedingung}">
<ui:include src="facelets/facelet1.xhtml" />
</h😛anelGroup>[/XML]
 
Hallo mjustin,

interessant, danke. Wie kann ich denn verhindern, dass facelet1.xhtml ansonsten nicht aufgerufen werden kann? Über die web.xml den Zugriff auf den facelets-Ordner verhindern? Oder droht dann die Gefahr, dass man sie auch nicht einbinden kann?

Viele Grüße

Mike
 
Pack die Dateien, von denen du willst, dass man sie nicht einfach so aufrufen kann, einfach ins /WEB-INF-Verzeichnis.

Gruß Fant
 
Hallo mjustin,

interessant, danke. Wie kann ich denn verhindern, dass facelet1.xhtml ansonsten nicht aufgerufen werden kann? Über die web.xml den Zugriff auf den facelets-Ordner verhindern? Oder droht dann die Gefahr, dass man sie auch nicht einbinden kann?

Unter Old Nabble - java.net - facelets users - how to prevent direct access to jsf pages? wird (neben der Speicherung in WEB-INF) dieser Weg über JEE Security vorgeschlagen:
[XML]
<security-constraint>
<display-name>Restrict XHTML Documents</display-name>
<web-resource-collection>
<web-resource-name>XHTML</web-resource-name>
<url-pattern>*.xhtml</url-pattern>
</web-resource-collection>
<auth-constraint>
<description>Only let 'developer's access XHTML pages</description>
<role-name>developer</role-name>
</auth-constraint>
</security-constraint> [/XML]

Einen Favoriten habe ich nicht, habe aber auch noch keine der beiden Möglichkeiten im Einsatz gehabt.

Viele Grüße
 

Zurück
Oben