2012-01-20 7 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 в области видимости запроса.

Сохраняет ли местоположение keepAlive на странице jsp продлить существование bean-объекта только в том случае, если свойство sht установлено в true, или это не имеет значения (где происходит keepAlive)?

ответ

2

Нет никакой разницы, когда вы помещаете тег keepAlive в jsp. Но между компонентом тега keepAlive и аннотацией @KeepAlive существует большая разница.

Tag компонент

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

Аннотация

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

Основное отличие в том, что второй будет лучше, если вы хотите связать атрибуты в вашем компоненте для компонентов в вашей JSP. Скажем, у вас есть такой сценарий:

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

Если вы используете первый подход, то Keepalive не будет работать на всех, и боб будет воссоздан в каждом запросе. При втором подходе ваш компонент будет создан один раз для каждого запроса, который пользователи могут сделать в вашем представлении.

Плюс, не забудьте установить для атрибута ajaxOnly значение true, если вы просто хотите сохранить свой компонент в активном состоянии для запросов ajax.

+0

@wilu это ответ, который вы искали? –

+0

поэтому '' сам по себе не сохраняет бобы в живых? немного странно и запутанно. –

+0

поэтому для использования a4j: keepAlive? –