, когда мы выполняем любое действие reRender на определенную часть страницы. Отображение страницы прекрасное, но для отображения определенной части остальные действия на странице называются дважды, и запросы в этих BackingBeans запускаются (значит, все запросы дважды запускаются для отображения некоторой части страницы). Это снижает производительность приложений. Может ли какая-либо помощь по этому вопросу повысить производительность с помощью reRender и как мы можем делать запросы меньше раз?reRender снижает производительность приложения
1
A
ответ
0
Ваш код в геттерах? JSF не гарантирует, что геттеры вызываются ровно один раз, поэтому дорогой код не должен попадать в геттеры.
0
У вас есть какие-либо действия с сайтами? Они вызываются (досадно) с каждым запросом Ajax.
1
Методы геттера 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
Это известная ошибка. Обходных решений, за исключением запросов к данным, только если явно требуется установка пользовательского логического значения (позволяет вызвать его 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}"/>