Проблема интеграции красивых лиц с JSF
Мне нужно интегрировать симпатичные лица с моим приложением jsf 2.0, primefaces, но оно доставляет некоторые проблемы.
Как уже упоминалось в начале работы, я разместил следующее в своем файле web.xml, добавил требуемый файл jar в папку lib
<filter>
<filter-name>Pretty Filter</filter-name>
<filter-class>com.ocpsoft.pretty.PrettyFilter</filter-class>
<async-supported>true</async-supported>
</filter>
<filter-mapping>
<filter-name>Pretty Filter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
другие элементы в моем web.xml
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<context-param>
<param-name>com.sun.faces.expressionFactory</param-name>
<param-value>org.jboss.el.ExpressionFactoryImpl</param-value>
</context-param>
<context-param>
<param-name>org.primefaces.extensions.DELIVER_UNCOMPRESSED_RESOURCES</param-name>
<param-value>false</param-value>
</context-param>
Но я получаю следующее сообщение об ошибке:
Invalid content was found starting with element 'async-supported'. One of '{"http://java.sun.com/xml/ns/javaee":init-param}' is expected
Если я удалю <async-supported>
из сборок проекта, проект компилируется, но отображение не работает.
pretty-config.xml
так же, как в начале.
Нужно ли упоминать в моем web.xml имя / путь файла сопоставления, то есть pretty-config.xml?
РЕДАКТИРОВАТЬ:
Я использую сервер Glassfish 3.
1 ответ
Очень важно проверить version
атрибут, который вы используете в вашем web.xml
, Если у вас есть version="2.5"
установить, вы должны добавить это в ваш web.xml:
<filter>
<filter-name>Pretty Filter</filter-name>
<filter-class>com.ocpsoft.pretty.PrettyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Pretty Filter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
Пожалуйста не то <async-supported>true</async-supported>
здесь НЕ установлен, потому что он поддерживается только в Servlet 3.0.
Если у вас есть version="3.0"
установить в вашем web.xml, вам не нужно ничего добавлять в ваш web.xml. В этом случае PrettyFaces автоматически регистрирует фильтр, используя web-fragment.xml
что входит в prettyfaces-jsf2.jar
,
Вам не нужно указывать местоположение pretty-config.xml
в любом месте. Просто поместите это в свой WEB-INF
папка и PrettyFaces найдет ее.
Вы также должны добавить одно отображение к вашему pretty-config.xml
, так что вы можете проверить, все ли работает правильно. Если у вас есть, например, страница, к которой вы обычно обращаетесь, используя URL-адрес, например:
http://localhost:8080/myapp/faces/login.xhtml
Затем вы можете добавить это отображение:
<url-mapping id="login">
<pattern value="/login" />
<view-id value="/faces/login.xhtml" />
</url-mapping>
Теперь вы сможете получить доступ к странице по этой ссылке:
http://localhost:8080/myapp/login