管理使用MB @ViewScoped

时间:2013-05-08 20:10:05

标签: spring jsf jsf-2

//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搜索服务的方法,因为它必须被标记为瞬态,如何解决这个问题。

1 个答案:

答案 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>