2009-08-28 6 views
1

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

ответ

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}"/>