【问题标题】:Render multiple components with f:ajax使用 f:ajax 渲染多个组件
【发布时间】:2013-05-11 22:37:52
【问题描述】:

错误代码是:

<h:form id="search_form">
<h:commandButton class="button" value="View" action="#{InfoBean.search}">
    <f:ajax execute="search_form" render="linear1"></f:ajax>
    <f:ajax execute="search_form" render="linear2"></f:ajax>
</h:commandButton>
<p:lineChart id="linear1" value="#{InfoBean.linearModel1}" legendPosition="e"/>
<p:lineChart id="linear2" value="#{InfoBean.linearModel2}" legendPosition="e"/>
</h:form>

我想要做的是当我点击commandButton 时,我想刷新这两个图表。但是现在我使用了两个&lt;ajax&gt;标签,其中第二个不起作用。

那么如何使用ajax来渲染两个图表呢?

【问题讨论】:

    标签: ajax jsf jsf-2 commandbutton


    【解决方案1】:

    您可以使用单个 f:ajax 渲染多个组件。只需确保您要更新的所有单个组件都具有id。在您的示例中,它将类似于:

    <f:ajax execute="search_form" render="linear1 linear2"/>
    

    ID 只需要用空格分隔,例如 linear1 linear2,而不是逗号分隔,例如 linear1, linear2(仅适用于 p:ajax)。

    另请参阅:

    【讨论】:

    • 我想知道是否有一个解决方案来渲染将在运行时创建的多个动态组件
    • @electricalbah f:ajax 从服务器重新加载元素。如果“运行时”是指通过独立于服务器的 JS 创建的,则无法像这样更新它们。
    【解决方案2】:

    对于 a4j jsf 使用 ',': &lt;a4j:support event="onchange" reRender="parent,child1,child2" /&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-30
      • 1970-01-01
      • 1970-01-01
      • 2014-01-24
      • 1970-01-01
      相关资源
      最近更新 更多