@Named @ViewScoped给出了java.io.NotSerializableException

时间:2013-08-20 08:28:48

标签: java jsf jsf-2 view-scope

我向@ViewScopedjava.io.NotSerializableException发现了很多文章,但在我的案例中没有任何帮助。也许是因为我使用CDI @ViewScoped而且大多数旧问题都是@ManagedBean。再现:

我有一个带有以下注释的演示模型:

@javax.inject.Named
@javax.faces.view.ViewScoped
public class WishPM implements Serializable{ 
[...]
}

部署工作正常。此外,当我使用此PM访问页面时,一切都很好。但是在改变了我得到的东西后立即重新部署项目:

INFO:   Cannot serialize session attribute   com.sun.faces.application.view.activeViewContexts for session ad1a37e9cf5e1445cabc04a944e0
java.io.NotSerializableException: org.jboss.weld.bean.ManagedBean
[...]
WARNING:   Unable to restore sessions for web module [/wish] from previous deployment
java.lang.NullPointerException

如果我使用@SessionScoped或@Requestscoped,则不会发生这种情况。从其他线程我有提示在web.xml中将STATE_SAVING_METHOD设置为服务器。它没有设置为客户端所以它应该是默认值。但是我完全设定了它:

<context-param>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>server</param-value>
</context-param>

但仍然是同样的错误。有人可以帮我试试吗?

1 个答案:

答案 0 :(得分:-1)

使用

@ javax.enterprise.context.SessionScoped

insted的

@ javax.faces.view.ViewScoped

应该有所帮助。 阅读: Some important information about CDI

CDI没有@ViewScope。这意味着有,但据我所知它是在JEE7 + JSF 2.2中。