使用 ViewScoped 和 Spring 服务的 ManagedBean 中出现 NotSerializedException

问题描述 投票:0回答:2

这是 ManagedBean

@ManagedBean @ViewScoped public class DetailItem {
    private static final long serialVersionUID = -7647929779133437125L;
    @ManagedProperty(value = "#{itemServiceImpl}")
    private ItemService servItem;

这就是服务

@Service("itemServiceImpl") @Transactional(value = "transactionManagerLocal") public class ItemServiceImpl implements ItemService {
    private static final long serialVersionUID = 1L;
    @Autowired
    @Qualifier("itemDaoImpl")
    private ItemDAO dao;

但是当我尝试访问使用“DetailItem”的页面时,出现以下异常:

java.io.NotSerializableException: org.springframework.dao.support.PersistenceExceptionTranslationInterceptor    java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1164)   java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)

为了解决这个问题,我执行了 servItem 瞬态并从 applicationContext 中获取它。但我知道这不是正确的解决方案,而且我找不到其他解决方案。哪种方法才是正确的做法?

我对 sessionscoped 或 requestscoped 没有例外。

serialization jsf-2 spring-3
2个回答
1
投票

听起来像类似的问题,如 ManagedProperty 的序列化

ItemService 是否实现 Serialized,并且 ItemServiceImpl 的所有成员本身都可序列化吗?


0
投票

将 Spring bean 设置为瞬态属性:

private transient ItemService servItem;
© www.soinside.com 2019 - 2024. All rights reserved.