java.lang.Исключение IllegalArgumentException:Недопустимый шаблон URL-адреса:[xhtml] [дубликат]

StackOverflow https://stackoverflow.com/questions/5441823

Вопрос

Я пытаюсь развернуть очень простое и мое первое приложение JSF (после действительно хороший учебник от BalusC) на локальном сервере glassfish.Я выполнил все шаги по созданию приложения.И когда я попытался развернуть приложение на сервере glassfish, оно просто завершилось неудачей со следующим сообщением об исключении:-

    cannot Deploy Playground
    Deployment Error for module: Playground: Exception while deploying the app : 
    java.lang.IllegalArgumentException: Invalid URL Pattern: [xhtml]

Не мог бы кто-нибудь объяснить, в чем ошибка и как я могу ее исправить?

Это было полезно?

Решение

Это недопустимый URL-шаблон.Вы можете организовать сопоставление как сопоставление префикса или сопоставление расширения (из Спецификация JSF 2.0):

Сопоставление префиксов:

<servlet-mapping>
  <servlet-name> faces-servlet-name </servlet-name>
  <url-pattern>/faces/*</url-pattern>
</servlet-mapping>

Отображение расширений:

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

Другие советы

Ваш <url-pattern> должен либо иметь соответствующее расширение (начинается с *) или сопоставление префиксов (начинающихся с /) включено, а не только xhtml.

Вот как я сделал свой.

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

Правила для сопоставлений сервлетов описаны в Технические характеристики Servlet 3.0:

Спецификация отображений

В дескрипторе развертывания веб-приложения для определения сопоставлений используется следующий синтаксис:

  • Строка, начинающаяся с / характер и заканчивающийся символом /* суффикс используется для отображения пути.
  • Строка, начинающаяся с *. префикс используется в качестве расширения отображение.
  • Пустая строка ("") - это специальный шаблон URL, который точно соответствует корневому контексту приложения, т.е. запросам формы http://host:port/<contextroot>/.В этом случае информация о пути такова / а путь к сервлету и путь к контексту - это пустая строка ("").
  • Строка, содержащая только / символ указывает на "стандартный" сервлет приложения.В этом случае путь к сервлету - это запрос URI минус контекстный путь, а информация о пути равна null.
  • Все остальные строки используются только для точных совпадений.

Когда вы столкнетесь с этой ошибкой, проверьте свой web.xml и любые аннотации к отображению (Веб-серверлет, Веб-фильтр, и т.д.)

Вы можете найти рекомендации по сопоставлению сервлетов JSF в Спецификация JSF 2.0.

При использовании сопоставления расширений рекомендуется, но не обязательно, следующее сопоставление:

<servlet-mapping>
<servlet-name> faces-servlet-name </servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top