Spring 使用MB@ViewScoped进行管理

Spring 使用MB@ViewScoped进行管理,spring,jsf,jsf-2,Spring,Jsf,Jsf 2,例01: 因此返回给我错误 javax.faces.FacesException:java.io.NotSerializableException:因为它是由spring管理的,所以无法序列化 //exemple01 @ManagedBean(name = "mb") @ViewScoped public class ExempleMB implements Serializable { @ManagedProperty(value = "#{serviceBO}") private Serv

例01: 因此返回给我错误 javax.faces.FacesException:java.io.NotSerializableException:因为它是由spring管理的,所以无法序列化

//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); 
 }
}
例02:
他让查询init,但是这个空搜索服务的方法,因为它必须被标记为暂时的,我如何解决这个问题

Spring服务不可序列化。相反,您可以注入完全可序列化的代理,以便
@ViewScoped
bean序列化能够完美地进行

如果使用注释,只需将以下内容添加到类定义中:

//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); 
 }
}
如果使用的是xml,请执行以下操作:

@Service
@Scope(value = "singleton", proxyMode = ScopedProxyMode.INTERFACES)
public YourService { ... }

...

使您的
ServiceBO
类实现可序列化的
接口……我遇到了类似的问题,我使用aop作为拦截器,该链中涉及的一个spring类是不可序列化的。为了解决这个问题,我使用了以下上下文参数<代码>javax.faces.STATE_SAVING_METHOD server
<bean id="yourService" class="your.package.YourServiceImpl" scope="singleton">
    <aop:scoped-proxy proxy-target-class="false"/>
    ...
</bean>