1

我有一个使用多个会话 Bean 运行的 JSF 2.1 (MyFaces) 应用程序(所有 bean 都是会话 bean)。超时在 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 目前在 faces-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>
4

2 回答 2

1

乍一看,这似乎是对 javax.faces.ViewState 隐藏字段的一些副作用。如果该字段被覆盖,将抛出 ViewExpiredException。尝试对其他不同的 JavaScript 代码做同样的事情。

无论如何,它与您的 session-config 参数无关。这里提供的信息不足以复制它。如果之前的建议不能解决您的问题,请在MyFaces Issue Tracker上创建问题并附上示例。这样你就可以解决了。

于 2011-06-25T05:14:36.737 回答
0

我相信该$符号是 JSF 中 EL 表达式的保留字符(编辑:如下所述,单独的 '$' 不是保留的,但是第三方组件库可能使用可能与 jQuery 发生命名冲突的各种 javascript 库)。 尝试将您的 jQuery 函数调用更改为显式的长格式名称,看看是否会有所不同。

例如。代替...

$(document).ready(function() {

做这个...

jQuery(document).ready(function() {
于 2011-06-20T11:30:29.490 回答