Manchmal sehe ich JSF URL * .jsf, manchmal * .xhtml und manchmal / faces / *. Warum?
-
26-09-2019 - |
Frage
Sie sind bereits try JSF, zu lernen und manchmal sehe ich die URL *.jsf
ist und manchmal ist *.xhtml
oder /faces/*
. Kann jemand mein Wissen füllen, bitte? Wenn ich eine JSF mit Facelet erstellen, die Dateierweiterung .xhtml
ist, also wo Erweiterung von nicht .jsf
URL kommen?
Lösung
Die .jsf
Erweiterung ist, wo die FacesServlet
während der Periode JSF 1.2 ist oft in den web.xml
abgebildet auf.
<servlet-mapping>
<servlet-name>facesServlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
Die .xhtml
Erweiterung ist der Ist Facelets Datei wie physisch in der webcontent Ihrer Webapp platziert haben, z.B. Webapp/WebContent/page.xhtml
.
Wenn Sie rufen Sie diese Seite mit der .jsf
Erweiterung, z.B. http://localhost:8080/webapp/page.jsf
dann wird der FacesServlet
aufgerufen werden, suchen Sie die Datei page.xhtml
und Parse / render seine JSF-Komponenten. Wenn die FacesServlet
nicht aufgerufen wird, dann würden die Enduser immer den rohen XHTML-Quellcode am Ende (die durch Rechtsklick zu sehen ist, View Source ).
Manchmal ist eine *.faces
Erweiterung oder /faces/*
foldermapping wird verwendet. Aber das war von hinten in dem JSF 1.0 / 1.1 Alter. Sie sind frei zu wählen und zu verwenden, was Mapping Sie möchten FacesServlet
hören auf lassen, auch wenn es ein Nichts-sagen *.xyz
ist. Die eigentliche Seite selbst sollte immer die .xhtml
Erweiterung hat, aber dies ist konfigurierbar durch die folgende <context-param>
in web.xml
:
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xml</param-value>
</context-param>
Dies wird die FacesServlet
ändern page.xml
instad von (default) page.xhtml
ausfindig zu machen.
In neuerer Zeit mit JSF / Facelets 2.0 ein *.xhtml
Mapping verwendet. In JSF / Facelets 1.x es nicht möglich war, die gleiche Mapping-Erweiterung als die physische Datei zu verwenden. Es wäre in einer Endlosschleife führen. Aber da JSF / Facelets 2.0 ist es möglich, und dies ermöglicht es Ihnen die Seite von http://localhost:8080/webapp/page.xhtml
zu nennen.
<servlet-mapping>
<servlet-name>facesServlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
Auf diese Weise brauchen Sie nicht einige Sicherheitseinschränkungen zu konfigurieren, dass die rohen Quelldateien weg für die Fälle zu verstecken, wenn der Enduser ändert zum Beispiel .jsf
in URL zu .xhtml
in Browser-Adressleiste. Nur Werkzeuge (IDEs und Plugins) und Lernressourcen noch den befürwortete Umzug von *.jsf
zu *.xhtml
aufholen müssen. Gemäß JSF 2.3, wird die FacesServlet
standardmäßig auf *.xhtml
zu der automatisch registrierten werden (neben /faces/*
, *.faces
und *.jsf
). Dies wird zurückportiert zu Mojarra 2.2.11.
Siehe auch:
- Können wir reguläre Ausdrücke in web.xml URL-Muster?
- Set Standard-Homepage via
in JSF-Projekt - JSF kehrt leer / unparsed Seite mit glatter / raw XHTML / XML / EL Quelle statt gerenderte HTML-Ausgabe
- Was ist der Unterschied zwischen JSF-Seiten mit .jsp oder .xhtml oder .jsf Erweiterung zu schaffen
- Welche XHTML-Dateien muss ich in / WEB-INF setzen und welche nicht?
- anpassen FacesServlet
zu loszuwerden .xhtml Erweiterung