reRender снижает производительность приложения - PullRequest
1 голос
/ 28 августа 2009

когда мы выполняем какое-либо действие reRender для определенной части страницы. Отображение страницы хорошо, но для отображения определенной части оставшиеся действия страницы называются дважды, и запросы в этих компонентах BackingBean запускаются (то есть все запросы запускаются дважды для отображения некоторой части страницы). Это снижает производительность приложения. Может ли какая-нибудь помощь в этом вопросе, как повысить производительность с помощью reRender и как мы можем сделать выполнение запросов меньше раз?

Ответы [ 4 ]

1 голос
/ 04 сентября 2009

Методы получения JSF не гарантированно будут вызываться только один раз. Вы должны делать запросы в методе, вызываемом из конструктора, чтобы избежать этого.

public class Test {
    private String value;

    public Test() {
       this.doQuery();
    }

    private void doQuery() {
       //do query
       this.value = "query result";
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }
}
0 голосов
/ 14 декабря 2009

Это известная ошибка. Никаких обходных путей, за исключением запроса данных только при явном желании путем установки пользовательского логического значения (назовем его queryData) из формы, где это необходимо.

Java:

    public String getValue() {
    if (queryData) {
        return doQuery();
    } else {
        return cachedValue;
    }
}

XHTML:

<h:form onsubmit="this.firstChild.value=true;">
<h:inputHidden id="queryData" value="#{backing.queryData}"/>
0 голосов
/ 04 сентября 2009

Есть ли у вас какие-либо действия на странице шва? Они вызываются (досадно) с каждым запросом Ajax.

0 голосов
/ 29 августа 2009

Ваш код в геттерах? JSF не гарантирует, что геттеры вызываются ровно один раз, поэтому дорогой код не должен идти в геттеры.

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