2013-08-20 42 views
0

我发现很多文章@ViewScopedjava.io.NotSerializableException但在我的情况下没有任何帮助。也许是因为我正在使用CDI @ViewScoped,大多数老问题都是关于@ManagedBean。繁殖:@Named @ViewScoped给出java.io.NotSerializableException

我有以下标注演示模式:

@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这是不会发生。从其他线程我有提示将STATE_SAVING_METHOD设置为web.xml中的服务器。它没有设置为客户端,所以它应该是默认的。但我根本没有设置它:

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

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

+0

由于“@ javax.faces.view.ViewScoped”不是CDI注释,因此您没有使用CDI'@ ViewScoped'。请参阅http://stackoverflow.com/questions/9861144/why-is-my-viewscoped-bean-not-surviving-hcommandbutton?answertab=votes#tab-top – rdcrng

+0

这是'javax.faces.bean.ViewScoped'。 '@ javax.faces.view.ViewScoped'是CDI:http://jdevelopment.nl/jsf-22/#1087 – timmornYE

+0

叹息,是的,我混淆了,我的道歉。 – rdcrng

回答

-1

使用

@ javax.enterprise.context.SessionScoped

insted的

@ javax.faces.view.ViewScoped

它应该帮助。 另请参阅: Some important information about CDI

没有用于CDI的@ViewScope。这意味着有,但我知道它是在JEE7 + JSF 2.2中。

+0

另外MyFaces CODI和Seam 3为JSF 2.0/2.1提供了@ViewScoped,很快Omnifaces也会提供一个。 – rdcrng

+2

我使用JSF 2.2,并且有CDI的ViewScoped:http://jdevelopment.nl/jsf-22/#1087 – timmornYE

+0

对'ViewScoped'使用'SessionScoped'非常极端。你正在加载会议中的一大堆值不应该在那里。看看:http://showcase.omnifaces.org/cdi/ViewScoped。 – blo0p3r

相关问题