【问题标题】:Render component with ajax in jsf在jsf中使用ajax渲染组件
【发布时间】:2011-12-13 10:13:08
【问题描述】:

问题是,当我将 f:ajax 的渲染属性设置为 @form btnCreateCSV 正确渲染时。但是,如果我将其更改为按钮的 id,则不会发生任何事情。我想知道,我该如何解决这个问题。 这是我的 xhtml 代码:

<h:panelGrid layout="block">
            <h:commandButton value="View SQL" action="#{sparqlQueryBean.convert}" id="btnViewSql">
                <f:ajax execute="txtQuery btnCreateCSV" render="btnCreateCSV txtSqlQuery" onevent="waiting" listener="#{sparqlQueryBean.generateCommands}"></f:ajax>
            </h:commandButton>
            <h:commandButton value = "CSV" action = "#{sparqlQueryBean.createCSV}" id = "btnCreateCSV" rendered="#{sparqlQueryBean.showCSV == true}">
                <f:ajax execute="@none" render = "@none" onevent="waiting"></f:ajax>
            </h:commandButton>

这是我的 bean 类。在 generateCommands 方法中,showCSV 的值设置为 true。但它不起作用。

    public void generateCommands (AjaxBehaviorEvent event) {
    this.setShowCSV(true);
}

【问题讨论】:

    标签: jsf-2


    【解决方案1】:

    使用&lt;f:ajax&gt;,JavaScript 用于定位 HTML DOM 树中的元素并重新渲染它们。但是如果一个 JSF 组件没有渲染到 HTML 输出中,那么 HTML DOM 树中也没有任何东西可以重新渲染。您应该重新渲染其最近的父组件,该组件总是被渲染,或者将其包装在另一个总是渲染的组件(例如&lt;h:panelGroup&gt;)中,然后重新渲染它。

    另见:

    【讨论】:

      猜你喜欢
      • 2011-12-12
      • 2011-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-17
      • 1970-01-01
      • 2012-01-17
      • 1970-01-01
      相关资源
      最近更新 更多