Domanda

prova Conosci imparare JSF, e qualche volta vedo l'URL è *.jsf ed a volte è *.xhtml o /faces/*. Qualcuno può riempire la mia conoscenza, per favore? Quando creo un JSF utilizzando facelet, l'estensione del file è .xhtml, quindi da dove l'estensione .jsf URL viene?

È stato utile?

Soluzione

L'estensione .jsf è dove il FacesServlet è durante il periodo JSF 1.2 spesso mappata nel web.xml.

<servlet-mapping>
    <servlet-name>facesServlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
</servlet-mapping>

L'estensione .xhtml è del attuale di file Facelets come avete fisicamente collocato nel webcontent della vostra webapp, per esempio Webapp/WebContent/page.xhtml.

Se si richiama questa pagina con l'estensione .jsf, per esempio http://localhost:8080/webapp/page.jsf allora la FacesServlet verrà invocato, individuare il file e page.xhtml parse / rende i suoi componenti JSF. Se il FacesServlet non viene richiamato, quindi l'utente finale si finisce per ottenere il codice sorgente XHTML grezzo (che può essere visto da rightclick, Visualizza origine ).

è stato utilizzato A volte un'estensione *.faces o /faces/* foldermapping. Ma questo era dalla parte posteriore nelle JSF 1.0 / 1.1 età. Sei libero di scegliere e usare qualsiasi mappatura vuoi lasciare FacesServlet ascolto su, anche se si tratta di un *.xyz nulla-dire. La pagina di vero e proprio deve sempre avere l'estensione .xhtml, ma questo è configureable dal seguente <context-param> in web.xml:

<context-param>
    <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
    <param-value>.xml</param-value>
</context-param>

Questo cambierà il FacesServlet per individuare page.xml instad di (default) page.xhtml.

Più di recente, con JSF / Facelets 2.0 è stata utilizzata una mappatura *.xhtml. In JSF / Facelets 1.x non è stato possibile utilizzare la stessa estensione di mapping del file fisico. Essa si tradurrebbe in un ciclo infinito. Ma dal momento che JSF / Facelets 2.0 è possibile e questo consente di chiamare la pagina http://localhost:8080/webapp/page.xhtml.

<servlet-mapping>
    <servlet-name>facesServlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>

In questo modo non è necessario configurare alcune restrizioni di sicurezza per nascondere i file di origine prima via per casi ogni volta che l'utente finale cambia per esempio .jsf nell'URL per .xhtml nella barra degli indirizzi del browser. Solo utensili (IDE e plugin) e risorse di apprendimento ancora bisogno di recuperare il movimento sostenuto da *.jsf a *.xhtml. Come per JSF 2.3, il FacesServlet per impostazione predefinita essere autoregistered su *.xhtml troppo (accanto al /faces/*, *.faces e *.jsf). Questo è backported a Mojarra 2.2.11.

Vedi anche:

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top