【问题标题】:@Named @ViewScoped gives java.io.NotSerializableException@Named @ViewScoped 给出 java.io.NotSerializableException
【发布时间】:2013-08-20 08:28:47
【问题描述】:

我找到了很多 @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>

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

【问题讨论】:

  • 您没有使用 CDI @ViewScoped,因为 @javax.faces.view.ViewScoped 不是 CDI 注释。见stackoverflow.com/questions/9861144/…
  • 这是javax.faces.bean.ViewScoped@javax.faces.view.ViewScoped 是 CDI:jdevelopment.nl/jsf-22/#1087
  • 叹气,是的,我搞混了,我很抱歉。
  • 你在这个类中有没有没有序列化的service 类注入。@Viewscope 需要序列化这不仅适用于那个带注释的 bean,而且适用于注入到那个 bean 和任何在该 @viewscoped bean 中使用的其他类并且正在使用 SpringEJB 服务类?
  • 我有两个注入@EJB 的@Stateless bean。我也为他们设置了implements Serializable,但错误保持不变。

标签: java jsf jsf-2 view-scope


【解决方案1】:

使用

@javax.enterprise.context.SessionScoped

插入

@javax.faces.view.ViewScoped

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

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

【讨论】:

  • MyFaces CODI 和 Seam 3 也为 JSF 2.0/2.1 提供 @ViewScoped,很快 Omnifaces 也将提供一个。
  • 我使用 JSF 2.2 并且有用于 CDI 的 ViewScoped:jdevelopment.nl/jsf-22/#1087
  • SessionScoped 用于ViewScoped 是非常极端的。您正在使用一大堆不应该存在的值加载会话。看看:showcase.omnifaces.org/cdi/ViewScoped.
猜你喜欢
  • 2013-09-30
  • 2012-10-15
  • 2011-12-07
  • 2011-03-03
  • 2017-06-24
  • 2012-10-28
  • 1970-01-01
  • 1970-01-01
  • 2017-05-29
相关资源
最近更新 更多