0

OnJSF 2.2我们没有设置View Scopeon的选项faces-config.xml

那么应该怎么做呢?JSF 2.2 上是否缺少视图范围?

谢谢!

4

1 回答 1

0

在托管 bean 上使用@ViewScoped注释:

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

@ManagedBean
@ViewScoped
public class AViewScopedBean {
    //managed bean contents...
}

如果您不喜欢注释配置(真的很奇怪),您可以在 faces-config.xml 上设置视图范围

<managed-bean>
    <managed-bean-name>aViewScopedBean<managed-bean-name>
    <managed-bean-class>some.package.AViewScopedBean</managed-bean-class>
    <managed-bean-scope>view</managed-bean-scope>
</managed-bean>

请注意,这只适用于 JSF 2。检查您的faces-config文件是否配置为处理 JSF 2.x 版本:

<!-- relevant part of faces-config.xml file for this Q/A -->
<faces-config ... version="2.1">

Note: Warning make sure its Serializable

错误消息非常简单:

java.io.NotSerializableException: com.bean.StatusBean2

这意味着您com.bean.StatusBean2还必须实现该Serializable接口。从java.io.Serializable文档:

在遍历图时,可能会遇到不支持 Serializable 接口的对象。在这种情况下,NotSerializableException将抛出并标识不可序列化对象的类。(这是你得到的错误)

您可以在此处了解有关 Java 序列化的更多信息:Java 序列化

从您的问题来看:是否有必要实现可序列化?,BalusC 已经发布了一个很好的答案/解释:JSF backing bean should be serializable? 感谢@Luiggi Mendoza

于 2014-11-11T09:48:51.397 回答