Рендеринг компонента с помощью AJAX в JSF - PullRequest
0 голосов
/ 13 декабря 2011

Проблема в том, что, когда я устанавливаю атрибут рендеринга 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>

И это мой класс бобов.В методе generateCommands значение showCSV устанавливается равным true.Но это не сработает.

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

1 Ответ

8 голосов
/ 13 декабря 2011

При <f:ajax> JavaScript используется для поиска элементов в дереве HTML DOM и их повторной визуализации.Но если компонент JSF не отображается в выводе HTML, то в дереве HTML DOM также нет ничего для повторного рендеринга.Вы должны либо повторно выполнить рендеринг его ближайшего родительского компонента, который всегда отображается вместо этого, либо обернуть его в другом компоненте (например, <h:panelGroup>), который всегда выполняется, и выполнить повторный рендеринг вместо него.

См. Также:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...