java.lang.IllegalArgumentException:Pattern URL non valido:[xhtml] [duplicato]
-
12-11-2019 - |
Domanda
Sto cercando di distribuire un'applicazione molto semplice e la mia prima JSF (seguendo a tutorial davvero ottimo di BalusC) sul server locale Glassfish.Ho completato tutti i passaggi per creare l'applicazione.E quando ho provato a distribuire l'applicazione sul server glassfish, non è riuscita con il seguente messaggio di eccezione: -
cannot Deploy Playground
Deployment Error for module: Playground: Exception while deploying the app :
java.lang.IllegalArgumentException: Invalid URL Pattern: [xhtml]
Qualcuno potrebbe spiegarmi dov'è il guasto e come posso correggerlo?
Soluzione
Questo non è un modello URL valido.È possibile organizzare la mappatura come mappatura del prefisso o mappatura dell'estensione (dal file Specifica JSF 2.0):
Mappatura del prefisso:
<servlet-mapping>
<servlet-name> faces-servlet-name </servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
Mappatura delle estensioni:
<servlet-mapping>
<servlet-name> faces-servlet-name </servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
Altri suggerimenti
Tuo <url-pattern>
deve avere un'estensione corrispondente (inizia con a *
) o corrispondenza del prefisso (iniziando con /
) incluso, non solo xhtml
.
Ecco come ho fatto il mio.
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
Le regole per le mappature servlet sono trattate nel file Specifiche servlet 3.0:
Specifica delle mappature
Nel descrittore di distribuzione dell'applicazione Web, la seguente sintassi viene utilizzata per definire le mappature:
- Una stringa che inizia con a
/
carattere e termina con a/*
il suffisso viene utilizzato per la mappatura del percorso.- Una stringa che inizia con a
*.
Il prefisso viene utilizzato come mappatura di estensione.- La stringa vuota ("") è un modello URL speciale che mappa esattamente alla radice di contesto dell'applicazione, cioè richieste del modulo
http://host:port/<contextroot>/
.In questo caso sono le informazioni sul percorso/
e il percorso del servlet e il percorso di contesto sono string vuoti ("").- Una stringa contenente solo il file
/
Il carattere indica il servlet "predefinito" dell'applicazione.In questo caso il percorso servlet è la richiesta Uri meno il percorso di contesto e le informazioni sul percorso sono nulle.- Tutte le altre stringhe vengono utilizzate solo per corrispondenze esatte.
Quando riscontri questo errore, controlla il file web.xml e le eventuali annotazioni di mappatura (WebServlet, Filtro Web, eccetera.)
È possibile trovare consigli per la mappatura delle servlet JSF nel file Specifica JSF 2.0.
Quando si utilizza la mappatura di estensione, si consiglia la seguente mappatura, ma non è necessaria:
<servlet-mapping> <servlet-name> faces-servlet-name </servlet-name> <url-pattern>*.faces</url-pattern> </servlet-mapping>