【问题标题】:Ajax Update All components with JSFAjax 使用 JSF 更新所有组件
【发布时间】:2011-10-07 16:52:04
【问题描述】:

有没有办法更新所有组件,还是我必须手动选择每个 id?我有一个 ajax html5 检测脚本,不想通过 id 更新每个组件。

谢谢

【问题讨论】:

    标签: ajax jsf


    【解决方案1】:

    只要使用公共父组件的ID即可。

    <h:panelGroup id="someParent">
        <h:someComponentToUpdate ... />
        ...
        <h:someComponentToUpdate ... />
        ...
        <h:someComponentToUpdate ... />
        ...
    </h:panelGroup>
    ...
    <f:ajax render="someParent" />
    

    或者使用@all刷新整个页面。

    <f:ajax render="@all" />
    

    【讨论】:

    • 这确实会影响浏览器的后退按钮。有没有办法在不设置浏览器历史的情况下渲染所有组件?
    【解决方案2】:

    如果您需要基于事件调用更新,我建议您使用 PrimeFaces。在http://www.primefaces.org/showcase-labs/ui/home.jsf 上查看他们的展示。下面展示了如何在单击按钮时使用更新组件

    <p:commandButton value="Test" update="container" actionListener="#{myBean.process}"/>
    

    然后有一个包装容器包裹所有你想更新的组件,就像上面的 BalusC 所示。

    <h:panelGroup id="container">
         ...
         // All components you want to update here. 
    </h:panelGroup>
    

    【讨论】:

    • 只是一件小事......添加 layout="block" 来渲染一个 div 不是更好吗? otherwiste h:panelGroup 将呈现一个跨度,如果你在这个跨度内有 div,它会导致无效的 html。
    猜你喜欢
    • 2013-01-11
    • 2012-10-12
    • 2016-09-27
    • 1970-01-01
    • 2013-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多