我发现很多文章@ViewScoped
和java.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>
但仍然是同样的错误。有人可以帮我试一下吗?
由于“@ 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
这是'javax.faces.bean.ViewScoped'。 '@ javax.faces.view.ViewScoped'是CDI:http://jdevelopment.nl/jsf-22/#1087 – timmornYE
叹息,是的,我混淆了,我的道歉。 – rdcrng