Проблемы с интеграцией симпатичных лиц с jsf

Мне нужно интегрировать красивые лица с моим приложением jsf 2.0, Primefaces, но это создает некоторые проблемы.

Как упоминалось в разделе начало работы, я поместил следующее в свой файл web.xml, добавил требуемый файл jar в папка с библиотекой

<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.


person hitesh israni    schedule 15.10.2012    source источник


Ответы (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.

Если в вашем файле web.xml установлено значение version="3.0", вам не нужно ничего добавлять в файл 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
person chkal    schedule 15.10.2012
comment
я использую сервлет версии 2.5. и я думаю, что я следовал всем вещам, которые вы упомянули. я проверю, если я что-то пропустил. большое спасибо! я обновлю / прокомментирую после попытки. - person hitesh israni; 15.10.2012
comment
В этом случае вы правильно добавили фильтр (без поддержки асинхронности). Поэтому, если вы видите, что PrettyFilter запущен на консоли и имеет правильный файл pretty-config.xml в вашем WEB-INF, все должно работать нормально. :) - person chkal; 15.10.2012
comment
Кроме того, если я использую красивый URL-адрес, должен ли мой ManagedBeans реализоватьSerializable? - person hitesh israni; 15.10.2012
comment
Обычно ваши управляемые bean-компоненты ограничены областью запроса вашего использования PrettyFaces. Поэтому вам не нужно реализовывать Serializable. - person chkal; 15.10.2012
comment
Был ли ответ Кристиана правильным? Если это так, вы должны отметить его как принятый! Он заслуживает баллов за такой обстоятельный ответ! - person Lincoln; 15.10.2012
comment
+1 за четкий и точный ответ. К сожалению, все еще я сталкиваюсь с некоторыми проблемами. @ Линкольн, конечно, знает. Спасибо, ребята, за ответы и комментарии по моей проблеме. - person hitesh israni; 15.10.2012