Нужно отправить формы дважды для обработки? - PullRequest
0 голосов
/ 17 августа 2011

В последнее время я замечаю, что все действия для отправки форм должны быть выполнены дважды для фактической отправки значений.Раньше это работало нормально, когда я жестко запрограммировал полученный путь действия из своих компонентов поддержки, но с тех пор, как я начал разрешать все пути действия через face-config , начали происходить странные вещи.Во-первых, мне нужно дважды нажать кнопку отправки, чтобы запустить действие, браузер запускает POST.В firebug я вижу, что два POST запущены, и только последний обрабатывается Glassfish.

Не знаю, является ли это побочным эффектом проблемы, с которой я столкнулся.Но много раз, когда я делаю forward потери страниц, классы CSS и вещи начинают выглядеть ужасно, и некоторые компоненты (Richfaces - datatable) начинают плохо отображаться.На самом деле я должен сделать перенаправление большую часть времени для правильной визуализации вещей.

  1. В чем может быть причина, по которой мне нужно сделать две POST / submit до того, как сервер Glassfishобработать запрос?
  2. Почему мне постоянно нужно перенаправлять, чтобы компоненты (Richfaces) правильно отображались?

Я использую:

  • Glassfish 3.1
  • NetBeans 7.0.1
  • Richfaces 4.0-final

Пример моей конфигурации Faces;

<navigation-rule>
    <from-view-id>*</from-view-id>
    <navigation-case>
        <from-outcome>CreateActivity</from-outcome>
        <to-view-id>/app_user/activity/Create.xhtml</to-view-id>
        <redirect />
    </navigation-case>
</navigation-rule>
<navigation-rule>
    <from-view-id>*</from-view-id>
    <navigation-case>
        <from-outcome>CreateActivityDetail</from-outcome>
        <to-view-id>/app_user/activity/UpdateDetail.xhtml</to-view-id>
    </navigation-case>
</navigation-rule>

Журнал Firebug -

Первый POST (не работает при отправке)

Host: localhost:8080
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:6.0) Gecko/20100101 Firefox/6.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5 
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Faces-Request: partial/ajax
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: http://localhost:8080/humis/faces/app_user/activity/List.xhtml
Content-Length: 430
Cookie: JSESSIONID=cd70a069ad528b3923bd52f12b1c 
        JSESSIONID=cbe0c977cf1c550f2a57cb4b334f; 
        treeForm_tree-hi=treeForm:tree:resources:jmsResources:jmsDestinationResources
Pragma: no-cache
Cache-Control: no-cache

Первый ответ

X-Powered-By: Servlet/3.0 JSP/2.2 (GlassFish Server Open Source Edition 3.1.1 Java/Sun Microsystems Inc./1.6), JSF/2.0
Server: GlassFish Server Open Source Edition 3.1.1
Cache-Control: no-cache
Content-Type: text/xml;charset=ISO-8859-1
Content-Length: 667
Date: Thu, 18 Aug 2011 13:30:22 GMT

Второй POST (тот, который работает)

Host: localhost:8080
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:6.0) Gecko/20100101 Firefox/6.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Faces-Request: partial/ajax
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: http://localhost:8080/humis/faces/app_user/activity/List.xhtml
Content-Length: 494
Cookie: JSESSIONID=cd70a069ad528b3923bd52f12b1c; 
        JSESSIONID=cbe0c977cf1c550f2a57cb4b334f; 
        treeForm_tree-hi=treeForm:tree:resources:jmsResources:jmsDestinationResources
Pragma: no-cache
Cache-Control: no-cache

Второй ответ

X-Powered-By: Servlet/3.0 JSP/2.2 (GlassFish Server Open Source Edition 3.1.1 Java/Sun Microsystems Inc./1.6), JSF/2.0
Server: GlassFish Server Open Source Edition 3.1.1
Cache-Control: no-cache
Content-Type: text/xml;charset=UTF-8
Content-Length: 145
Date: Thu, 18 Aug 2011 13:30:44 GMT

1 Ответ

3 голосов
/ 17 августа 2011

Похоже, что вы сопоставили FacesServlet для нескольких шаблонов URL-адресов и что в некотором роде все автоматически созданные URL-адреса для ресурсов CSS и JS становятся недействительными. Выполнение некоторой базовой отладки и исследования URL <link> и <script> в сгенерированном JSF источнике HTML и HTTP-трафике, например с Firebug , должно дать много идей как что именно сломалось. Вы должны были увидеть 404 для этих ресурсов CSS / JS.

Поскольку эта тривиальная информация об отладке отсутствует в вашем вопросе, я не могу ответить на что-либо еще, кроме как предложить попробовать явно сопоставить FacesServlet на одном шаблоне URL, например, *.xhtml.

...