2011-04-17 90 views
4

我在glassfish 3.0.1上使用jsf 2.0来构建一个接口到我的搜索引擎,当我在我的jsf页面上使用Openfaces组件时,并且每当我提交表单时,我都会收到此错误消息:Jsf错误:java.lang.ClassCastException

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

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

谢谢。

+1

请显示相关代码。 – MByD 2011-04-17 15:41:20

回答

9

这就是所谓的JSF issue 1427。如果在由JSF POST导航案例打开的页面上触发ajax请求,则部分状态保存可能会失败。有三种解决方案,推荐顺序为:

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

  2. 实施POST-Redirect-GET模式。因此,如果您仍然在faces-config.xml中使用旧式<navigation-case>,请加入<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> 
    

+0

也许这是您第三种解决方案中的一种类型,但正如您在博客中所写(http://balusc.blogspot.com/2011/09/communication-in-jsf-20.html),多个页面应以逗号分隔。 – 2012-10-11 09:25:50

+0

@Andrei:固定。 – BalusC 2012-10-11 10:45:35

1

下载JSF框架的新版本(多页可以用逗号作为分隔符来definied)。

查看版本2.1.11!

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

欲了解更多信息,请参阅链接http://java.net/jira/browse/JAVASERVERFACES-1845;