Префикс URL-сопоставления в JSF, вызывающий FileNotFound-Error
Я начинающий JSF и пытаюсь создать небольшое веб-приложение JSF2 с помощью Spring и Hibernate. Мой сервер выбора - JBOSS 7.1 AS.
Я обнаружил странную ошибку при попытке сопоставить сервлет с префиксным URL-шаблоном. Это часть web.xml, которая объявляет сервлет:
<servlet>
<servlet-name>FacesServlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FacesServlet</servlet-name>
<url-pattern>/webapplication/*</url-pattern>
</servlet-mapping>
Если я теперь направлю свой браузер на "localhost:8080/myapp/webapplication/index.xhtml", я получу ошибку, сгенерированную Mojarra/Facelets: "/index.xhtml не найден в ExternalContext как ресурс". Если я вместо этого настрою URL-шаблон на "*.xhtml", все будет работать нормально.
Я просто понятия не имею, почему не работает Prefix-Pattern:/
Привет
1 ответ
Я нашел решение:D!
Когда я использовал префиксный шаблон, я думал, что должен поместить свои xhtml-файлы в папку с таким именем. Например, я использовал шаблон "/ webapplication / *", поэтому создал папку "webapplication" и поместил туда свои веб-файлы. Теперь, когда я направлял мой браузер на "{host} /myapp/webapplication/index.xhtml", я ожидал, что сервер будет искать файлы в "{root} /webapplication/index.xhtml". Вместо этого сервлет разрешил URL-адрес как "{host}/myapp/index.xhtml". Поскольку файл не находится там, я получаю FileNotFound-Error.
Я также научился не давать моим папкам ресурсов то же имя, что и моим URL-шаблонам.