我在glassfish 3.0.1上使用jsf 2.0来构建我的搜索引擎的界面,当我在我的jsf页面上使用Openfaces组件时,每当我提交表单时,我都会收到以下错误消息:
java.lang.ClassCastException:[Ljava.lang.Object;无法施展 com.sun.faces.application.view.StateHolderSaver
我没有在网上找到任何帮助,请问有什么问题?以及如何摆脱它?
感谢。
答案 0 :(得分:9)
这称为JSF issue 1427。在JSF POST导航案例打开的页面上触发ajax请求时,部分状态保存可能会失败。建议的顺序有三种解决方案:
不要使用POST进行页面到页面的导航。因此,请<h:commandLink>
或<h:link>
替换<h:outputLink>
。另请参阅h:outputLink
vs h:commandLink
。
实施POST-Redirect-GET模式。因此,如果您仍在<navigation-case>
中使用旧式faces-config.xml
,请添加<redirect/>
条目。或者,如果您使用隐式导航结果,则将?faces-redirect=true
查询字符串添加到结果中。
配置有问题的页面以使用完全状态保存。
<context-param>
<param-name>javax.faces.FULL_STATE_SAVING_VIEW_IDS</param-name>
<param-value>/pagename.xhtml</param-value>
</context-param>
(可以使用逗号作为分隔符定义多个页面)
答案 1 :(得分:1)
下载新版本的JSF框架。
参见2.1.11版本!
这是内部jsf框架上ajax状态请求中的bug导致的问题!
有关详细信息,请参阅链接http://java.net/jira/browse/JAVASERVERFACES-1845;