Обработка ViewExpiredException (JSF 2.1, Seam2, Primefaces 3.4.1, Omnifaces 1.3)

У меня ужасные проблемы с попыткой правильно обработать ViewexpiredException с использованием фреймворков JSF 2.1, Seam 2.3, Primefaces 3.4.1, Omnifaces 1.3.

Здесь вы можете увидеть полное объяснение моей проблемы, которую я размещаю на форуме Primefaces: http://forum.primefaces.org/viewtopic.php?f=3&t=28215

В этом посте мне посоветовали попробовать омнифейс (что я и пытаюсь сделать сейчас). Поэтому я настраиваю его (не уверен, что правильно) в своем проекте.

Я добавляю это в свой Faces-config.xml:

<application>
<...>
<resource-handler>org.omnifaces.resourcehandler.CombinedResourceHandler</resource-handler> 
<...>
</application>


<factory>
<render-kit-factory>org.omnifaces.renderkit.Html5RenderKitFactory</render-kit-factory>
<exception-handler-factory>org.omnifaces.exceptionhandler.FullAjaxExceptionHandlerFactory</exception-handler-factory>
</factory>

Кажется, все работает, FullAjaxExceptionHandlerFactory, кажется, пытается обработать исключение и пытается перенаправить на страницу входа (см. мой последний пост на форуме Primefaces), но приложение зависает, и на самом деле ничего не произошло, я не совсем уверен, сделал ли я ошибка что-ли.

Я пробовал почти все решения, которые я нашел в Интернете, кажется, что ничего не работает для меня, когда что-то работает, я получаю эту страницу после входа в систему (которую я перенаправил, чтобы вызвать прерывание сеанса): http://img831.imageshack.us/img831/7459/pic4w.png

заранее спасибо


person Gsuarez    schedule 25.01.2013    source источник
comment
Я не признаю проблему. Замороженный ответ обычно указывает на неправильный ответ ajax. Пожалуйста, проверьте монитор HTTP-трафика и поделитесь заголовками/телом ответа HTTP, которые вы фактически получили. А также проверьте наличие ошибок JS в консоли JS. В любом случае основная причина проблемы может быть связана с Seam. Будет полезно, если вы создадите отдельный проект, воспроизводящий именно эту проблему с минимумом необходимого кода и конфигурации, а затем создадите из него WAR и сообщите о проблеме в OmniFaces, куда вы сможете загрузить WAR: code.google.com/p/omnifaces/issues/list   -  person BalusC    schedule 25.01.2013
comment
Если вы не знаете, где искать HTTP-трафик или ошибки JS, нажмите F12 (на скриншоте видно, что вы используете Chrome, поэтому F12 должна быть правильной клавишей), и появится панель инструментов веб-разработчика. Трафик HTTP можно исследовать на вкладке Сеть, а ошибки JS можно исследовать на вкладке Консоль.   -  person BalusC    schedule 25.01.2013
comment
Наконец-то я смог решить свою проблему, не совсем уверен, почему у меня не работает FullAjaxExceptionHandlerFactory, но я мог решить ее без нее, поэтому я не мог проверить ваш ответ. В любом случае, большое спасибо. Чтобы узнать, в чем была моя проблема, см. последний пост в сообщении Primefacesforum. До свидания!   -  person Gsuarez    schedule 28.01.2013
comment
Итак, основная причина проблемы связана с Seam. Рад, что вы решили это. Вы обязаны опубликовать ответ здесь и отметить его как принятый.   -  person BalusC    schedule 28.01.2013
comment
Спасибо, BalusC, да, это полностью связано с Seam, надеюсь, скоро появится возможность использовать омнифейсы. До свидания!   -  person Gsuarez    schedule 01.02.2013


Ответы (1)


Большое спасибо за ваши ответы. Я наконец решаю это.

Я не совсем уверен, почему, но этот атрибут login-view-id="/login.xhtml" в теге "pages" файла pages.xml избегал "процесса" этого кода:

<exception class="org.jboss.seam.security.NotLoggedInException">
  <redirect view-id="/login.xhtml">
     <message>Debe loguearse para continuar</message>
  </redirect>

After I removed the login-view-id attribute the NotLoggedInException start being handled, but I still had the same problem once I log in so I add and finally that solved the problem, so the fully tag end like this:

<exception class="org.jboss.seam.security.NotLoggedInException">
   <end-conversation/>
  <redirect view-id="/login.xhtml">
     <message>Debe loguearse para continuar</message>
  </redirect>

Thank you very much!

person Gsuarez    schedule 01.02.2013