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?

War es hilfreich?

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:

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top