Программа вылетает, если я повторяю некоторые действия - PullRequest
0 голосов
/ 24 апреля 2020

Я создал простой проект crud jsf. Моя страница содержит dataTable и заполняется базой данных. Иногда моя программа не запускается, особенно после 3 или 4 запросов. Например, я обнаружил сценарий, подобный следующему: вызвать мой selectOneMenu несколько раз (пример: 13-14 раз). Я видел, что экран консоли DevTools выдает ошибку

<p:selectOneMenu id=studentNo"
    value="#{myBean.studentNo}" style="width:150px">
        <p:ajax listener="#{myBean.onStudentChange}"  
            update=":formTabInvoiceList:tabViewInvoiceList:StudensList:table-wrapper"/>

    <f:selectItem itemLabel="Choose student number" itemValue="#{null}" noSelectionOption="true" />
    <f:selectItems  value="#{myBean.studentNumbersList}" />
</p:selectOneMenu>

Ошибка:

 <partial-response>
   <error>
     <error-name>
        javax.faces.application.ViewExpiredException
     </error-name>
     <error-message>
        /xhtml/pages/Invoice.xhtmlNo saved view state could be found for the view identifier: 
        /xhtml/pages/Invoice.xhtml
     </error-message>
  </error>
</partial-response>

Я нашел эту ошибку на вкладке сети DevTools Я поймал эту ошибку еще один повторяющийся сценарий ios в моей программе.

Я погуглил его и нашел некоторые решения, но не решил. Мой веб-файл. xml содержит

<context-param>
<param-name>org.apache.myfaces.SERIALIZE_STATE_IN_SESSION</param-name>
<param-value>false</param-value>

.

Также я проверяю все компоненты в моем файле x html, чтобы найти компоненты с одинаковым идентификатором. Все компоненты имеют разные идентификаторы.

Моя версия PrimeFace: 3.4.1

myFaces: 2.1.10

У вас есть идеи?

мой веб. xml файл это:

<context-param>
    <param-name>org.apache.myfaces.SERIALIZE_STATE_IN_SESSION</param-name>
    <param-value>false</param-value>
</context-param>

<context-param>
    <param-name>org.apache.myfaces.EXPRESSION_FACTORY</param-name>
    <param-value>com.sun.el.ExpressionFactoryImpl</param-value>
</context-param>

<context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Production</param-value>
</context-param>

<context-param>
    <param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name>
    <param-value>true</param-value>
</context-param>

<context-param>
    <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
    <param-value>false</param-value>
</context-param>

<context-param>
    <param-name>javax.faces.FACELETS_REFRESH_PERIOD</param-name>
    <param-value>1</param-value>
</context-param>
<context-param>
    <param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name>
    <param-value>true</param-value>
</context-param>

1 Ответ

0 голосов
/ 25 апреля 2020

Я решил свою проблему, добавив эти строки.

<context-param>
  <param-name>org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION</param-name>
  <param-value>40</param-value>
</context-param>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...