ViewExpiredException: не удалось восстановить представление при использовании aj4:poll

Я использую a4j:poll, чтобы поддерживать сеанс, но после некоторого простоя я получаю сообщение об ошибке «Просмотр не может быть восстановлен». Я считаю, что опрос создает представления в фоновом режиме, и после того, как он достигает предела 15 (?), Выдается исключение.

<h:form>
    <a4j:poll id="poll" interval="30000"/>
</h:form>

веб.xml:

<session-config>
    <session-timeout>1</session-timeout>
    <cookie-config>
        <secure>true</secure>
    </cookie-config>
    <tracking-mode>COOKIE</tracking-mode>
</session-config>

BalusC сказал: «Итак, это произойдет только в том случае, если вы вручную установили слишком низкий лимит или постоянно создаете новые представления в фоновом режиме (например, с помощью плохо реализованного опроса)». в: javax.faces.application.ViewExpiredException: просмотр не может быть восстановлен

и я считаю, что это моя проблема, но я не знаю, как сделать это правильно :(


person jerzey    schedule 29.03.2016    source источник
comment
Вы пытались присвоить форме идентификатор? возможно, автоматически сгенерированный идентификатор не приводит к увеличению количества просмотров   -  person DaveB    schedule 14.04.2016


Ответы (1)


Вы уверены, что это был полный сценарий, воспроизводящий проблему? В этом случае проблема заключается в тайм-ауте вашего сеанса, который вы установили на 1 секунду. Если это не ваш случай, отредактируйте свой вопрос.

Еще одна проблема, которую я обнаружил, - это a4j:poll внутри составной формы.

<h:form enctype="multipart/form-data">
    <a4j:poll id="poll" interval="30000"/>
</h:form>

Избегайте этого, он создает новый идентификатор просмотра при каждом запросе опроса.

При каждом запросе ajax возвращается идентификатор просмотра, и это нормально, если идентификатор просмотра всегда один и тот же. Если вы получаете новый View ID в каждом запросе, значит проблема с ajax-запросом на вашей странице.

person tak3shi    schedule 24.03.2017