2012-01-20 8 views
2

キープアライブ私は思って(またはおそらくいくつかのキープアライブの副作用に苦しんで)いる:JSPページ内のキープアライブ...a4j:(?何を推測する)a4jの場所についてのレンダリングセクション

が間に違いがあります。 ...言うことができます:

<a4j:keepAlive beanName="myBean"/> 
<h:panelGrid rendered="#{myBean.sth}"> 
    <%-- some other stuff--> 
</h:panelGroup> 

<h:panelGrid rendered="#{myBean.sth}"> 
    <a4j:keepAlive beanName="myBean"/> 
    <%-- some other stuff--> 
</h:panelGroup> 

MyBeanとは、リクエストにスコープされます。

jspページ内のkeepAliveの場所は、shtプロパティがtrueに設定されている場合、または存在しない場合(keepAliveが発生する場合)にのみBeanの存在を拡張しますか?

答えて

2

jspにkeepAliveタグを置くことに違いはありません。しかし、keepAliveタグコンポーネントと@KeepAliveアノテーションには大きな違いがあります。

タグコンポーネント

<a4j:keepAlive bean="myBean" /> 
<!-- some stuff --> 

注釈

@KeepAlive 
public class MyBean { 
    //some stuff... 
} 

の主な違いは、あなたのJSP内のコンポーネントにあなたのBeanの属性をバインドしたい場合は、2番目が優れていることです。あなたはこのシナリオを持っている、のは、言ってみましょう:

<rich:dataTable binding="#{myBean.hdtMyDataTable}"> 
    <!-- columns here --> 
</rich:dataTable> 

あなたが最初のアプローチを使用する場合は、キープアライブがまったく動作しませんし、Beanはリクエストごとに再作成されます。 2番目の方法では、ユーザーがビュー内で実行できるリクエストごとに1回Beanが作成されます。

さらに、ajaxリクエストに対してBeanを有効にしたい場合は、ajaxOnly属性をtrueに設定することを忘れないでください。

+0

@wiluこれはあなたが探していた答えですか? –

+0

だから ''それだけではBeanは生きていないのですか?少し奇妙で混乱している。 –

+0

これはa4j:keepAliveの使用方法です。 –

関連する問題