//exemple01
@ManagedBean(name = "mb")
@ViewScoped
public class ExempleMB implements Serializable {
@ManagedProperty(value = "#{serviceBO}")
private ServiceBO serviceBO;
@PostConstruct
public void init{
list= serviceBO.list();
}
public void query(){
serviceBO.query(parameters);
}
}
例01: 因此返回错误 javax.faces.FacesException:java.io.NotSerializableException:由于他并且由spring管理,因此无法序列化。
//exemple02
@ManagedBean(name = "mb")
@ViewScoped
public class ExempleMB implements Serializable {
@ManagedProperty(value = "#{serviceBO}")
private transient ServicoBO serviceBO;
@PostConstruct
public void init{
list= serviceBO.list();
}
public void query(){
servicoBO.query(paramestros);
}
}
例02: 他使查询init,但是这个null搜索服务的方法,因为它必须被标记为瞬态,如何解决这个问题。
答案 0 :(得分:0)
Spring服务不可序列化。您可以改为注入完全可序列化的代理,这样@ViewScoped
bean序列化将完美无缺地发生。
如果您正在使用注释,只需将以下内容添加到类定义中:
@Service
@Scope(value = "singleton", proxyMode = ScopedProxyMode.INTERFACES)
public YourService { ... }
如果您使用的是xml,请执行以下操作:
<bean id="yourService" class="your.package.YourServiceImpl" scope="singleton">
<aop:scoped-proxy proxy-target-class="false"/>
...
</bean>