JSF 2 Session Beans Проблемы - PullRequest
       36

JSF 2 Session Beans Проблемы

1 голос
/ 20 июня 2011

У меня есть приложение JSF 2.1 (MyFaces), работающее с использованием нескольких сессионных компонентов (все компоненты являются сессионными компонентами).Время ожидания определяется в файле web.xml следующим образом:

<session-config>
    <session-timeout>3600</session-timeout>
</session-config>

, что соответствует 1 часу.

Проблема заключается в том, что при обычном использовании я получаю исключение No Saved View...:

SEVERE: An exception occurred
javax.faces.application.ViewExpiredException: /mainPanel.jsfNo saved view state could be found for the view identifier: /mainPanel.jsf
    at org.apache.myfaces.lifecycle.RestoreViewExecutor.execute(RestoreViewExecutor.java:128)

В настоящее время bean-компоненты определены в face-config.xml для совместимости с Eclipse ide.

Я не уверен, что может быть причиной этого, и это определенно не тайм-аут.Есть идеи, в чем может быть проблема?

Если есть какая-либо дополнительная информация, которую я могу предоставить, дайте мне знать ..

Спасибо!

PS - тега jsf-2.1 нет

Обновление 1 Я только что подумал, что 60 означало 1 минуту!:-) Это может быть проблемой.Я закрою вопрос, если получится так

Обновление 2 Это было не так ... Еще немного информации, которая может быть полезна:

  1. Хотя ошибка относится именно к /mainPanel.jsf, на самом деле это композиция из xhtml, использующая <ui:include>
  2. . Это происходит только тогда, когда я щелкаю одну конкретную точку в приложении.Код, который запускается в результате щелчка:

Jquery Код:

    $(document).ready(function() {

    $("#someTable tr:not(:first)").click(function(event) {

            var someValue = $(this).find("input:hidden").val();
            $('#currently_selected').val(someValue );
            $('#currently_selected').change();

        });
    });

JSF 2 Код:

<h:form prependId="false" class="hide">
    <h:inputText value="#{someBean.someBeanValue}">
        <f:ajax event="change" listener="#{someBean.someBeanValueChanged}" render=":anotherForm"
            onevent="ifCompleteSetWindowHash" />
    </h:inputText>
</h:form>

Ответы [ 2 ]

1 голос
/ 25 июня 2011

На первый взгляд кажется, что это какой-то побочный эффект над скрытым полем javax.faces.ViewState.Если это поле перезаписано, будет выдано исключение ViewExpiredException.Попробуйте сделать то же самое, что вы делаете с другим другим кодом JavaScript.

В любом случае это не связано с вашим параметром session-config.Информация, представленная здесь, недостаточна для ее воспроизведения.Если предыдущее предложение не решило вашу проблему, создайте проблему на MyFaces Issue Tracker и приложите пример.Таким образом, вы получите решение.

0 голосов
/ 20 июня 2011

Я полагаю, что символ $ является зарезервированным символом для выражений EL в JSF (РЕДАКТИРОВАТЬ: Как отмечалось ниже, один только $ не зарезервирован, однако библиотеки сторонних компонентов могут использовать различные библиотеки javascript, которые могли быконфликт имен с jQuery). Попробуйте изменить вызовы функций jQuery на явное длинное имя формы и посмотрите, имеет ли это значение.

Например.Вместо ...

$(document).ready(function() {

Сделай это ...

jQuery(document).ready(function() {
...