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!!!

Reply via email to