5

我在 glassfish 3.0.1 上使用 jsf 2.0 来构建我的搜索引擎的界面,当我在我的 jsf 页面上使用 Openfaces 组件时,每当我提交表单时,我都会收到以下错误消息:

java.lang.ClassCastException:[Ljava.lang.Object;无法转换为 com.sun.faces.application.view.StateHolderSaver

我在网上没有找到任何帮助,请问是什么问题?以及如何摆脱它?

谢谢。

4

2 回答 2

10

这被称为JSF 问题 1427。当在由 JSF POST 导航案例打开的页面上触发 ajax 请求时,部分状态保存可能会失败。共有三种解决方案,按推荐顺序排列:

  1. 不要使用 POST 进行页面到页面的导航。所以替换<h:commandLink><h:link>or <h:outputLink>。另见h:outputLinkvsh:commandLink

  2. 实现 POST-Redirect-GET 模式。因此,如果您仍在使用老式的<navigation-case>in faces-config.xml,请添加<redirect/>条目。或者,如果您使用隐式导航结果,则将?faces-redirect=true查询字符串添加到结果中。

  3. 配置有问题的页面以利用完整的状态保存。

    <context-param>
        <param-name>javax.faces.FULL_STATE_SAVING_VIEW_IDS</param-name>
        <param-value>/pagename.xhtml</param-value>
    </context-param>
    

    (可以使用逗号作为分隔符定义多个页面)

于 2011-04-17T18:35:50.507 回答
1

下载新版本的 JSF 框架。

见版本 2.1.11 !

这是内部jsf框架的ajax状态请求错误引起的问题!

有关更多信息,请参阅链接http://java.net/jira/browse/JAVASERVERFACES-1845

于 2012-07-13T13:52:21.653 回答