Нет разницы, где вы поместите тег keepAlive в jsp. Но между компонентом тега keepAlive и аннотацией @KeepAlive существует большая разница.
Компонент тега
<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.