【问题标题】:a4j:keepAlive in rendered sectiona4j:keepAlive 在渲染部分
【发布时间】:2012-02-15 01:49:31
【问题描述】:

我想知道(或可能遭受一些 keepAlive 副作用)关于(猜猜是什么?) a4j:keepAlive 在 jsp 页面中的位置...

...之间有什么区别吗?可以说:

<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 的范围是一个请求。

仅当 sht 属性设置为 true 或无关紧要(keepAlive 发生的位置)时,jsp 页面中的 keepAlive 位置是否会导致扩展 bean 存在?

【问题讨论】:

    标签: richfaces jsf-1.2 ajax4jsf


    【解决方案1】:

    在jsp中放置keepAlive标签的位置没有区别。但是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。

    【讨论】:

    • @wilu 这就是你要找的答案吗?
    • 所以&lt;a4j:keepAlive beanName="myBean"/&gt; 本身并不能让 bean 保持活力?有点奇怪和混乱。
    • 那么 a4j:keepAlive 有什么用?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多