2012-01-20 37 views
2

我想知道(或可能來自一些的keepAlive副作用的痛苦)有關的位置A4J(猜猜是什麼?):在的keepAlive jsp頁面...A4J:在的keepAlive呈現部分

是否有任何區別。 ..讓說:

<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時纔會擴展bean的存在,否則無關緊要(keepAlive發生在哪裏)?

回答

2

把keepAlive標籤放在jsp中沒有什麼區別。但keepAlive標籤組件和@KeepAlive註釋之間存在很大差異。

標籤要素

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

註釋

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

之間的主要區別是,第二個是,如果你想在你的bean的屬性綁定到你的JSP組件更好。比方說,你有這樣的場景:

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

如果使用第一種方法,那麼到keepAlive不會在所有的工作和bean將在每個請求重新創建。使用第二種方法,您的bean將爲用戶在視圖中執行的每個請求創建一次。

另外,如果你只是想讓你的bean在Ajax請求中保持活動,不要忘記設置ajaxOnly屬性爲true。

+0

@wilu這是你要找的答案嗎? –

+0

因此''a4j:keepAlive beanName =「myBean」/>'本身不會讓bean保持活動狀態?有點怪異和混亂。 –

+0

那麼對於a4j的使用是什麼:keepAlive? –