Потерянный новичок в JSF: Linux, Geronimo и библиотека тегов - PullRequest
0 голосов
/ 06 августа 2011

Я использую Geronimo с J2EE 5 и Tomcat 6, и я пытаюсь создать одну простую страницу, используя JSF. Я поместил файлы библиотеки тегов myfaces_core.tld и myfaces_html.tld в WEB-INF, и это работает, но только в Windows. Под Linux я получил IOException с неизвестной причиной , когда развертывал WAR. Удаление двух файлов библиотеки тегов сделало возможным развертывание. Но потом я получил ошибку, когда открывал страницу в браузере. Отсутствовал файл WEB-INF/myfaces_html.tld, указанный в заголовке файла JSP. В примерах для MyFaces используется не TLD MyFaces, а обычный Sun Java TLD. Я переписал URI WEB-INF/myfaces_html.tld в http://java.sun.com/jsf/html ant и теперь у меня появляется ошибка Абсолютный uri: http://java.sun.com/jsf/html не может быть разрешен ни в файле web.xml, ни в файлах jar, развернутых с помощью этого приложения .

Я сейчас потерян. Должен ли я или не должен помещать файлы описания библиотеки тегов в мою WAR для использования компонентов JSF? Эти файлы уже содержатся в JAR-файлах MyFaces в Geronimo Container, не так ли? Контейнер должен иметь одинаковое поведение независимо от платформы или нет? Что я должен сделать, чтобы мое простое приложение действительно не зависело от платформы?

1 Ответ

1 голос
/ 06 августа 2011

Вы должны , а не , извлечь файлы JAR из библиотек тегов сторонних производителей и поместить их свободные файлы TLD в папку /WEB-INF.Файлы TLD должны храниться в файлах JAR, откуда они происходят, а файлы JAR должны быть нетронутыми и просто отбрасываться в пути к классам времени выполнения.Независимо от того, что книга / учебное пособие / форум предлагает иное, должно быть занесено в черный список.

Очистите структуру вашего проекта, чтобы избавиться от этих потерянных файлов TLD и отмените все изменения, связанные с этим, наверняка также в web.xml, если таковые имеются.

Ваша папка /WEB-INF/lib должна содержать всего два файла для запуска JSF на Tomcat 6: один файл представляет абстрактный API, а другой - конкретную реализацию.Поскольку вы, очевидно, решили использовать MyFaces, это будут те два файла JAR (вероятно, с номером версии в конце имени файла, который зависит):

  • myfaces-api.jar
  • myfaces-impl.jar

Перетащите их в папку /WEB-INF/lib, которая является частью пути к классу среды выполнения веб-приложения по умолчанию.Это все.Следующим шагом будет объявление и отображение FacesServlet в вашем веб-приложении web.xml.

Убедитесь, что вы читаете соответствующую книгу / учебник.

...