Hi, the getter methods typically get called several times, so caching of the data is usually desired (if you are interested you could have a look at seam and @Factory which addresses this). Don't know how the dataScroller works, but I would guess that it is responsible for at least one call to the EL in the value attribute of the data table (and since you have two scrollers in there, that would be two calls).
Found this with some info: http://www.nabble.com/getter-called-few-times-tf1716500.html Not a lot of explenation, but you should be able to find more somewhere in this forum. Cheers, Mike On 03/07/07, daniel ccss <[EMAIL PROTECTED]> wrote:
Hi all, I'm new in this mailing list, and I new using My Faces, hope you can help me. Things to know: i'm using JDeveloper 10.1.3.1, last My Faces, last Tomahawk implementation version I made the following things: 1-The datascroller example (http://www.irian.at/myfaces/ dataScroller.jsf) and all works fine. 2- Then I read and implemented the article in the wiki call: WorkingWithLargeTables ( http://wiki.apache.org/myfaces/WorkingWithLargeTables ) and all works fine, the number of links, the method who brings each DataPage, the data that is displaying in each page, all fine. But I noticed that when I put a System.out.println in the method that brings the DataPage, the method that bring the DataPage from the database is invoked several times, for example the System.outs that appear in my console when I: load the page, click in page2 link, and click in page3 are: ... LINENUM BETWEEN 0 AND 2 ... LINENUM BETWEEN 0 AND 2 ... LINENUM BETWEEN 0 AND 2 ... LINENUM BETWEEN 0 AND 2 ... LINENUM BETWEEN 2 AND 4 ... LINENUM BETWEEN 2 AND 4 ... LINENUM BETWEEN 2 AND 4 ... LINENUM BETWEEN 5 AND 7 Why this happen? I put a breakpoint in the fetchPage(int startRow, int pageSize) method, and in fact it is call several times for each DataPage that is show. The DataPage<T> class and the PagedListDataModel<T> class are the same that appears in the WorkingWithLargeTables article from wiki. This is the code of my bean class: public class PacienteBean { DataModel dataModel = null; private DataPage<Paciente> getDataPage(int inicio, int regPorPagina) { PacienteEJB paciente = null; try { final Context context = new InitialContext(); paciente = (PacienteEJB)context.lookup("PacienteEJB"); } catch (NamingException e) { System.out.println(e.getMessage()); } return paciente.obtenerPacientes (inicio, regPorPagina); } public DataModel getDataModel() { if (dataModel == null) { dataModel = new LocalDataModel(2); } return dataModel; } private class LocalDataModel extends PagedListDataModel { public LocalDataModel(int pageSize) { super(pageSize); } public DataPage<Paciente> fetchPage(int startRow, int pageSize) { return getDataPage(startRow, pageSize); } } public String mostrarPacientes() { return "success"; } } The only clue that I have is that something is happening in the jsp, beacause the wiki article don´t explains how the jsp have to be, in fact I leave it the same as the datascroller example jsp, only changing the value of the DataTable value="#{PacienteBean.dataModel}" and putting the preserveDataModel="false" because I want that for each page the DataPage be loaded from the DataBase. This is my jsp: <%@ page contentType="text/html;charset=windows-1252"%> <%@ taglib uri=" http://java.sun.com/jsf/html" prefix="h"%> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%> <%@ taglib uri=" http://myfaces.apache.org/tomahawk " prefix="t"%> <f:view> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/> <title>listaPacientes</title> </head> <body><h:form> <h:panelGroup id="body"> <t:dataTable id="data" styleClass="scrollerTable" headerClass="standardTable_Header" footerClass="standardTable_Header" rowClasses="standardTable_Row1,standardTable_Row2" columnClasses="standardTable_Column,standardTable_ColumnCentered,standardTable_Column" var="tablaPacientes" value="#{ PacienteBean.dataModel}" preserveDataModel="false" rows="2"> <h:column> <f:facet name="header"></f:facet> <h:outputText value="#{tablaPacientes.numIdent }"/> </h:column> <h:column> <f:facet name="header"></f:facet> <h:outputText value="#{tablaPacientes.nombre }"/> </h:column> </t:dataTable> <h:panelGrid columns="1" styleClass="scrollerTable2" columnClasses="standardTable_ColumnCentered"> <t:dataScroller id="scroll_1" for="data" fastStep="10" pageCountVar="pageCount" pageIndexVar="pageIndex" styleClass="scroller" paginator="true" paginatorMaxPages="9" paginatorTableClass="paginator" paginatorActiveColumnStyle="font-weight:bold;" immediate="true"> <f:facet name="first"> <t:graphicImage url="images/arrow- first.gif" border="1"/> </f:facet> <f:facet name="last"> <t:graphicImage url="images/arrow-last.gif " border="1"/> </f:facet> <f:facet name="previous"> <t:graphicImage url="images/arrow- previous.gif" border="1"/> </f:facet> <f:facet name="next"> <t:graphicImage url="images/arrow- next.gif" border="1"/> </f:facet> <f:facet name="fastforward"> <t:graphicImage url="images/arrow- ff.gif" border="1"/> </f:facet> <f:facet name="fastrewind"> <t:graphicImage url="images/arrow- fr.gif" border="1"/> </f:facet> </t:dataScroller> <t:dataScroller id="scroll_2" for="data" rowsCountVar="rowsCount" displayedRowsCountVar="displayedRowsCountVar" firstRowIndexVar="firstRowIndex" lastRowIndexVar="lastRowIndex" pageCountVar="pageCount" immediate="true" pageIndexVar="pageIndex"> <h:outputFormat value="#{example_messages[\'dataScroller_pages\']}" styleClass="standard"> <f:param value="#{rowsCount}"/> <f:param value="#{displayedRowsCountVar}"/> <f:param value="#{firstRowIndex}"/> <f:param value="#{lastRowIndex}"/> <f:param value="#{pageIndex}"/> <f:param value="#{pageCount}"/> </h:outputFormat> </t:dataScroller> </h:panelGrid> </h:panelGroup> <t:commandLink value="test" immediate="true"/> </h:form></body> </html> </f:view> Please help me with this, we are actually deciding which implementation of myfaces to use, and I really trust in apache work, I don´t want that other implementation be choose for our applications, thanks!!!

