0
//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: 彼はクエリを初期化しますが、この null 検索サービスのメソッドは、このように一時的であるとマークする必要があるため、どうすればこの問題を解決できますか。

4

1 に答える 1

0

Spring サービスはシリアル化できません。代わりに、完全にシリアライズ可能なプロキシを注入して、@ViewScopedBean のシリアライズが問題なく行われるようにすることもできます。

注釈を使用している場合は、クラス定義に次を追加するだけです。

@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>
于 2013-05-08T21:46:42.360 に答える