Locale

Language
English
English
English
French
German
German
German
Italian
Korean
Spanish
Catalan
Dutch
Portuguese
Portuguese
Arabic
Arabic
Bulgarian
Bangla
Bosnian
Czech
Greek
Estonian
Persian
Finnish
Danish
Hindi
Indonesian
Icelandic
Croatian
Japanese
Hungarian
Hebrew
Georgian
Central Kurdish
Khmer
Kyrgyz
Kazakh
Lithuanian
Latvian
Malay
Norwegian
Polish
Romanian
Russian
Slovak
Slovenian
Serbian
Serbian
Swedish
Thai
Turkish
Ukrainian
Uzbek
Vietnamese
Chinese
Chinese

Input Style

Free Themes

Built-in component themes created by the PrimeFaces Theme Designer.

Saga Saga
Vela Vela
Arya Arya

Legacy Free Themes

Luna Amber Luna Amber
Luna Blue Luna Blue
Luna Green Luna Green
Luna Pink Luna Pink
Nova Nova
Nova Nova Alt
Nova Nova Accent

DataTable Scroll

Both vertical and horizontal scrolling of the data is supported with optional frozen rows-columns and on-demand loading features.

Vertical
NameCountryRepresentativeStatus
Salvatore StockhamCanadaOnyama Limba NEW
Jefferson SchemmerCanadaBernardo Dominic QUALIFIED
Munro FerenczSpainAsiya Javayant QUALIFIED
Sinclair WaycottIndiaElwin Sharvill NEGOTIATION
Mayumi KolmetzCanadaIvan Magalhaes RENEWAL
Chavez BriddickItalyAsiya Javayant QUALIFIED
Johnson SergiSpainXuxue Feng RENEWAL
Maria MarrierArgentinaAmy Elsner QUALIFIED
Silvio SlusarskiJapanStephen Shaw PROPOSAL
Greenwood BologniaJapanAmy Elsner UNQUALIFIED
Tony FollerCanadaAnna Fali UNQUALIFIED
Cody SaylorsCanadaIoni Bowcher NEGOTIATION
Cody SaylorsAustraliaIvan Magalhaes NEW
Tony FollerUnited KingdomStephen Shaw PROPOSAL
Juan WieserJapanBernardo Dominic PROPOSAL
Arvin AlbaresGermanyOnyama Limba QUALIFIED
Deepesh ChuiCanadaIoni Bowcher PROPOSAL
Smith GlickRussiaIvan Magalhaes RENEWAL
Murillo MaletRussiaIoni Bowcher QUALIFIED
Johnson SergiItalyOnyama Limba RENEWAL
Rodrigues CampainRussiaIvan Magalhaes NEGOTIATION
Murillo MaletItalyAnna Fali QUALIFIED
Arvin AlbaresGermanyXuxue Feng NEGOTIATION
Smith GlickItalyBernardo Dominic PROPOSAL
Arvin AlbaresFranceXuxue Feng NEW
Antonio CaudySpainElwin Sharvill RENEWAL
Arvin AlbaresIndiaBernardo Dominic PROPOSAL
Alejandro PerinCanadaAnna Fali UNQUALIFIED
Greenwood BologniaRussiaBernardo Dominic NEGOTIATION
Maria MarrierUnited KingdomOnyama Limba RENEWAL
Morrow RutaItalyBernardo Dominic NEGOTIATION
Aditya KuskoRussiaIoni Bowcher QUALIFIED
Stacey MacleadIndiaIoni Bowcher NEW
James ButtArgentinaIoni Bowcher UNQUALIFIED
Smith GlickIndiaOnyama Limba UNQUALIFIED
Clifford RimAustraliaElwin Sharvill NEGOTIATION
Johnson SergiArgentinaElwin Sharvill RENEWAL
Juan WieserIndiaOnyama Limba UNQUALIFIED
Juan WieserRussiaIoni Bowcher NEGOTIATION
Johnson SergiBrazilStephen Shaw QUALIFIED
Clifford RimRussiaAmy Elsner NEW
Emily WhobreyItalyXuxue Feng PROPOSAL
Darci PoquetteRussiaStephen Shaw RENEWAL
Murillo MaletRussiaIvan Magalhaes PROPOSAL
Jefferson SchemmerCanadaXuxue Feng QUALIFIED
Tony FollerRussiaAsiya Javayant PROPOSAL
Murillo MaletUnited KingdomBernardo Dominic UNQUALIFIED
Maria MarrierFranceIoni Bowcher RENEWAL
Silvio SlusarskiRussiaAsiya Javayant RENEWAL
Deepesh ChuiUnited KingdomAsiya Javayant NEW
Horizontal
NameCountryRepresentativeStatus
Francesco ShinkoCanadaXuxue Feng RENEWAL
Jefferson SchemmerIndiaXuxue Feng QUALIFIED
Ashley DoeFranceStephen Shaw RENEWAL
Tony FollerGermanyElwin Sharvill NEW
Salvatore StockhamCanadaIvan Magalhaes NEGOTIATION
Misaki RoysterIndiaAsiya Javayant NEGOTIATION
Claire TollnerItalyBernardo Dominic PROPOSAL
Jennifer AmigonSpainAmy Elsner QUALIFIED
Morrow RutaItalyXuxue Feng RENEWAL
Morrow RutaSpainElwin Sharvill QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Stacey MacleadIndia2026-05-22Feltz Printing Service UNQUALIFIED47Onyama Limba
1001Tony FollerBrazil2026-06-06Printing Dimensions NEGOTIATION74Ioni Bowcher
1002Alejandro PerinArgentina2026-05-30Chanay, Jeffrey A Esq NEGOTIATION80Elwin Sharvill
1003Nicolas IturbideCanada2026-05-25Chemel, James L Cpa NEW39Ioni Bowcher
1004Johnson SergiRussia2026-05-31Dorl, James J Esq RENEWAL88Ivan Magalhaes
1005Cody SaylorsItaly2026-06-12Feiner Bros NEGOTIATION41Xuxue Feng
1006Tony FollerIndia2026-06-04Printing Dimensions NEGOTIATION42Amy Elsner
1007Kaitlin OstroskyCanada2026-05-16Chemel, James L Cpa QUALIFIED40Ivan Magalhaes
1008Faith GillianArgentina2026-06-09Feltz Printing Service RENEWAL87Xuxue Feng
1009Aika InouyeFrance2026-06-12King, Christopher A Esq UNQUALIFIED22Xuxue Feng
1010Isabel BowleyFrance2026-05-31Truhlar And Truhlar Attys NEGOTIATION90Ivan Magalhaes
1011Jennifer AmigonCanada2026-06-01King, Christopher A Esq NEGOTIATION55Anna Fali
1012Stacey MacleadRussia2026-05-28Benton, John B Jr PROPOSAL71Anna Fali
1013Ivar PaprockiBrazil2026-05-30Feltz Printing Service PROPOSAL6Asiya Javayant
1014Nicolas IturbideCanada2026-05-19Chanay, Jeffrey A Esq NEW37Amy Elsner
1015Antonio CaudyItaly2026-06-14Feltz Printing Service NEGOTIATION84Asiya Javayant
1016Ivar PaprockiSpain2026-05-16Morlong Associates UNQUALIFIED43Elwin Sharvill
1017Misaki RoysterGermany2026-06-09Benton, John B Jr QUALIFIED86Anna Fali
1018Nicolas IturbideBrazil2026-06-09Buckley Miller Wright QUALIFIED85Ioni Bowcher
1019Rodrigues CampainBrazil2026-06-13Buckley Miller Wright UNQUALIFIED37Xuxue Feng
1020Kadeem FlosiGermany2026-05-31Feltz Printing Service PROPOSAL22Xuxue Feng
1021Silvio SlusarskiIndia2026-06-10Feiner Bros RENEWAL46Ioni Bowcher
1022Emily WhobreySpain2026-06-04Rangoni Of Florence NEGOTIATION39Ioni Bowcher
1023Nicolas IturbideAustralia2026-05-17Rousseaux, Michael Esq NEGOTIATION63Asiya Javayant
1024Nicolas IturbideJapan2026-06-08Chapman, Ross E Esq RENEWAL72Bernardo Dominic
1025Maisha RulapaughIndia2026-05-31Chemel, James L Cpa RENEWAL4Anna Fali
1026Kaitlin OstroskySpain2026-06-12Truhlar And Truhlar Attys RENEWAL69Xuxue Feng
1027Arvin AlbaresGermany2026-06-03Dorl, James J Esq RENEWAL59Stephen Shaw
1028Mayumi KolmetzBrazil2026-06-13Feiner Bros RENEWAL98Asiya Javayant
1029Adams MorascaArgentina2026-05-24Rangoni Of Florence NEGOTIATION35Bernardo Dominic
1030Mujtaba NickaAustralia2026-05-27King, Christopher A Esq PROPOSAL49Amy Elsner
1031Misaki RoysterCanada2026-05-27Printing Dimensions RENEWAL8Bernardo Dominic
1032Jeanfrancois VenereCanada2026-05-20Commercial Press NEW91Xuxue Feng
1033Salvatore StockhamJapan2026-06-04Feiner Bros NEGOTIATION71Ioni Bowcher
1034Salvatore StockhamCanada2026-05-28Buckley Miller Wright RENEWAL61Amy Elsner
1035Sinclair WaycottRussia2026-05-28Chanay, Jeffrey A Esq RENEWAL40Bernardo Dominic
1036Jeanfrancois VenereCanada2026-05-26Morlong Associates NEGOTIATION15Ivan Magalhaes
1037Maisha RulapaughAustralia2026-06-02King, Christopher A Esq PROPOSAL72Stephen Shaw
1038Murillo MaletItaly2026-05-18Commercial Press QUALIFIED71Bernardo Dominic
1039Wickens NestleIndia2026-05-18Dorl, James J Esq NEGOTIATION43Asiya Javayant
1040Izzy GarufiIndia2026-05-24Rousseaux, Michael Esq NEGOTIATION47Elwin Sharvill
1041Clifford RimIndia2026-05-30Dorl, James J Esq NEGOTIATION7Anna Fali
1042Kadeem FlosiRussia2026-06-11Buckley Miller Wright RENEWAL77Xuxue Feng
1043Morrow RutaItaly2026-06-02Printing Dimensions PROPOSAL45Onyama Limba
1044Aruna FigeroaSpain2026-05-25Benton, John B Jr PROPOSAL91Bernardo Dominic
1045Cody SaylorsFrance2026-05-26Morlong Associates RENEWAL23Ivan Magalhaes
1046Nicolas IturbideBrazil2026-05-20King, Christopher A Esq NEW33Anna Fali
1047Emily WhobreyAustralia2026-05-24Rousseaux, Michael Esq PROPOSAL87Elwin Sharvill
1048Chavez BriddickBrazil2026-05-19Commercial Press NEGOTIATION7Ioni Bowcher
1049Morrow RutaAustralia2026-05-27Truhlar And Truhlar Attys UNQUALIFIED79Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Juan WieserCanadaElwin Sharvill NEW
Clifford RimJapanBernardo Dominic PROPOSAL
Claire TollnerIndiaIvan Magalhaes QUALIFIED
Darci PoquetteAustraliaXuxue Feng QUALIFIED
David DarakjyArgentinaAnna Fali RENEWAL
Isabel BowleyAustraliaOnyama Limba NEGOTIATION
Stacey MacleadCanadaAnna Fali NEW
Jeanfrancois VenereIndiaIoni Bowcher RENEWAL
Leon OldroydAustraliaXuxue Feng RENEWAL
Julie StensethRussiaStephen Shaw RENEWAL
Mayumi KolmetzGermanyXuxue Feng PROPOSAL
Izzy GarufiAustraliaAnna Fali NEW
Mujtaba NickaFranceIvan Magalhaes PROPOSAL
Rodrigues CampainIndiaIvan Magalhaes NEW
Kaitlin OstroskyGermanyBernardo Dominic NEW
Silvio SlusarskiCanadaBernardo Dominic QUALIFIED
Morrow RutaIndiaOnyama Limba NEW
Cody SaylorsRussiaOnyama Limba RENEWAL
Wickens NestleIndiaIoni Bowcher RENEWAL
Jeanfrancois VenereAustraliaAsiya Javayant NEW
Rodrigues CampainArgentinaElwin Sharvill QUALIFIED
Chavez BriddickJapanAnna Fali PROPOSAL
Smith GlickAustraliaStephen Shaw PROPOSAL
Juan WieserAustraliaStephen Shaw QUALIFIED
Francesco ShinkoSpainAmy Elsner QUALIFIED
Maisha RulapaughUnited KingdomAmy Elsner NEGOTIATION
Jefferson SchemmerIndiaXuxue Feng PROPOSAL
Antonio CaudyBrazilAsiya Javayant NEW
Jeanfrancois VenereUnited KingdomAsiya Javayant NEGOTIATION
Jones VocelkaArgentinaBernardo Dominic NEGOTIATION
Jones VocelkaCanadaElwin Sharvill QUALIFIED
Cody SaylorsBrazilStephen Shaw NEW
Mujtaba NickaAustraliaElwin Sharvill NEW
Ivar PaprockiUnited KingdomIoni Bowcher RENEWAL
Isabel BowleyBrazilBernardo Dominic UNQUALIFIED
Silvio SlusarskiArgentinaAnna Fali RENEWAL
Octavia MaletUnited KingdomElwin Sharvill UNQUALIFIED
Munro FerenczJapanIoni Bowcher RENEWAL
Munro FerenczFranceIvan Magalhaes NEGOTIATION
Emily WhobreyIndiaAmy Elsner QUALIFIED
Sinclair WaycottGermanyAsiya Javayant UNQUALIFIED
Octavia MaletItalyBernardo Dominic UNQUALIFIED
Juan WieserArgentinaOnyama Limba NEW
James ButtAustraliaBernardo Dominic RENEWAL
Octavia MaletBrazilAmy Elsner RENEWAL
James ButtBrazilIoni Bowcher RENEWAL
Tony FollerUnited KingdomIoni Bowcher UNQUALIFIED
Aika InouyeBrazilIoni Bowcher RENEWAL
Leon OldroydIndiaOnyama Limba NEW
Jefferson SchemmerBrazilXuxue Feng NEW
Frozen Columns
Name
Aika Inouye
Kadeem Flosi
Izzy Garufi
Chavez Briddick
Adams Morasca
Alejandro Perin
Francesco Shinko
Johnson Sergi
Jennifer Amigon
Alejandro Perin
Izzy Garufi
Kadeem Flosi
Ashley Doe
Cody Saylors
Mayumi Kolmetz
Mayumi Kolmetz
Alejandro Perin
Claire Tollner
Aika Inouye
Faith Gillian
Ashley Doe
Ivar Paprocki
Deepesh Chui
Salvatore Stockham
Emily Whobrey
Jennifer Amigon
Jefferson Schemmer
Francesco Shinko
Clifford Rim
Kadeem Flosi
Aika Inouye
Juan Wieser
David Darakjy
Adams Morasca
Jones Vocelka
Aditya Kusko
Arvin Albares
Kadeem Flosi
Faith Gillian
Jefferson Schemmer
Jeanfrancois Venere
Greenwood Bolognia
Antonio Caudy
Mujtaba Nicka
Emily Whobrey
Aika Inouye
Maria Marrier
Isabel Bowley
Salvatore Stockham
Ashley Doe
IdCountryDate
1000India2026-05-26
1001Germany2026-06-05
1002Brazil2026-05-27
1003Australia2026-05-23
1004France2026-06-07
1005Brazil2026-05-19
1006Germany2026-05-31
1007Japan2026-05-25
1008United Kingdom2026-06-01
1009Germany2026-06-03
1010Japan2026-06-13
1011France2026-05-28
1012Italy2026-06-10
1013Germany2026-05-16
1014Germany2026-05-19
1015Australia2026-05-21
1016Brazil2026-05-17
1017United Kingdom2026-05-30
1018Japan2026-05-18
1019Spain2026-05-16
1020United Kingdom2026-05-28
1021India2026-06-11
1022Spain2026-05-16
1023Spain2026-06-05
1024Spain2026-05-23
1025Russia2026-05-28
1026Germany2026-05-16
1027Brazil2026-05-29
1028Russia2026-05-22
1029France2026-06-04
1030Australia2026-05-27
1031Japan2026-05-28
1032France2026-05-22
1033India2026-05-29
1034France2026-06-13
1035United Kingdom2026-05-26
1036Canada2026-06-06
1037Spain2026-06-03
1038Italy2026-06-08
1039Australia2026-05-25
1040India2026-05-28
1041Japan2026-05-31
1042Brazil2026-06-12
1043Brazil2026-06-07
1044Australia2026-06-04
1045Germany2026-05-30
1046Japan2026-06-05
1047Canada2026-05-31
1048France2026-06-08
1049Russia2026-06-14

On-Demand Data

NameIdCountryDate
David Darakjy1000Italy2026-06-10
Nicolas Iturbide1001India2026-06-11
Isabel Bowley1002United Kingdom2026-05-17
Francesco Shinko1003India2026-06-13
Sinclair Waycott1004Russia2026-05-17
Leon Oldroyd1005India2026-06-07
Faith Gillian1006Italy2026-06-05
Julie Stenseth1007Germany2026-05-29
Costa Dilliard1008Italy2026-05-23
Ashley Doe1009Germany2026-05-27
Maisha Rulapaugh1010Spain2026-06-08
Juan Wieser1011Italy2026-05-24
Ivar Paprocki1012Australia2026-06-09
David Darakjy1013France2026-05-28
Aditya Kusko1014India2026-06-06
David Darakjy1015Germany2026-05-23
Munro Ferencz1016Australia2026-05-24
Izzy Garufi1017Japan2026-05-29
Chavez Briddick1018Russia2026-06-05
Cody Saylors1019France2026-06-04
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ricardo GauchoGermanyStephen Shaw PROPOSAL
Murillo MaletItalyAsiya Javayant NEGOTIATION
Darci PoquetteItalyAmy Elsner PROPOSAL
Darci PoquetteRussiaBernardo Dominic RENEWAL
Rodrigues CampainBrazilBernardo Dominic NEW
Smith GlickSpainElwin Sharvill NEGOTIATION
Wickens NestleArgentinaElwin Sharvill RENEWAL
Aruna FigeroaFranceXuxue Feng NEW
Claire TollnerBrazilAnna Fali QUALIFIED
Salvatore StockhamFranceAmy Elsner NEGOTIATION
Aditya KuskoAustraliaAnna Fali NEGOTIATION
James ButtArgentinaAmy Elsner PROPOSAL
Costa DilliardItalyOnyama Limba UNQUALIFIED
Jones VocelkaArgentinaXuxue Feng PROPOSAL
Leon OldroydFranceOnyama Limba QUALIFIED
Kadeem FlosiBrazilIoni Bowcher UNQUALIFIED
Deepesh ChuiIndiaIoni Bowcher QUALIFIED
Julie StensethGermanyAnna Fali UNQUALIFIED
Kaitlin OstroskySpainXuxue Feng PROPOSAL
Leon OldroydArgentinaXuxue Feng PROPOSAL
David DarakjyAustraliaBernardo Dominic QUALIFIED
Jefferson SchemmerJapanIvan Magalhaes PROPOSAL
Jones VocelkaIndiaXuxue Feng NEGOTIATION
Darci PoquetteUnited KingdomAmy Elsner PROPOSAL
Alejandro PerinAustraliaAsiya Javayant RENEWAL
Kadeem FlosiArgentinaOnyama Limba NEW
Salvatore StockhamAustraliaBernardo Dominic NEGOTIATION
Greenwood BologniaRussiaStephen Shaw RENEWAL
Salvatore StockhamSpainIvan Magalhaes NEGOTIATION
Maria MarrierRussiaElwin Sharvill PROPOSAL
Mayumi KolmetzItalyIoni Bowcher NEGOTIATION
Jones VocelkaItalyBernardo Dominic QUALIFIED
Kaitlin OstroskyArgentinaIoni Bowcher QUALIFIED
Jeanfrancois VenereRussiaIvan Magalhaes QUALIFIED
Greenwood BologniaCanadaAnna Fali UNQUALIFIED
Jeanfrancois VenereCanadaStephen Shaw NEW
Leja CaldareraArgentinaBernardo Dominic QUALIFIED
Munro FerenczFranceAsiya Javayant RENEWAL
Isabel BowleyUnited KingdomOnyama Limba NEW
Jones VocelkaSpainBernardo Dominic QUALIFIED

<style>
    .ui-datatable-frozenlayout-left {
        width: 20%;
    }

    .ui-datatable-frozenlayout-right {
        width: 80%;
    }
</style>


<h:form>
    <div class="card">
        <h5 style="margin-top:0">Vertical</h5>
        <p:dataTable var="customer" value="#{dtScrollView.customers1}" scrollable="true" scrollHeight="250">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Representative" footerText="Representative">
                <h:outputText value="#{customer.representative.name}"/>
            </p:column>
            <p:column headerText="Status" footerText="Status">
                <span class="customer-badge status-#{customer.status.statusName}">#{customer.status}</span>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h5>Horizontal</h5>
        <p:dataTable var="customer" value="#{dtScrollView.customers2}" scrollable="true" scrollWidth="600">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Representative" footerText="Representative">
                <h:outputText value="#{customer.representative.name}"/>
            </p:column>
            <p:column headerText="Status" footerText="Status">
                <span class="customer-badge status-#{customer.status.statusName}">#{customer.status}</span>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h5>Horizontal and Vertical</h5>
        <p:dataTable var="customer" value="#{dtScrollView.customers3}" scrollable="true" scrollWidth="50%" scrollHeight="250">
            <p:column headerText="Id" footerText="Id">
                <h:outputText value="#{customer.id}"/>
            </p:column>
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Date" footerText="Date">
                <h:outputText value="#{customer.date}"/>
            </p:column>
            <p:column headerText="Company" footerText="Company">
                <h:outputText value="#{customer.company}"/>
            </p:column>
            <p:column headerText="Status" footerText="Status">
                <span class="customer-badge status-#{customer.status.statusName}">#{customer.status}</span>
            </p:column>
            <p:column headerText="Activity" footerText="Activity">
                <h:outputText value="#{customer.activity}"/>
            </p:column>
            <p:column headerText="Representative" footerText="Representative">
                <h:outputText value="#{customer.representative.name}"/>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h5>Frozen Rows</h5>
        <p:dataTable var="customer" value="#{dtScrollView.customers4}" scrollable="true" scrollHeight="250"
                     frozenRows="2">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Representative" footerText="Representative">
                <h:outputText value="#{customer.representative.name}"/>
            </p:column>
            <p:column headerText="Status" footerText="Status">
                <span class="customer-badge status-#{customer.status.statusName}">#{customer.status}</span>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h5>Frozen Columns</h5>
        <p:dataTable var="customer" value="#{dtScrollView.customers5}" scrollable="true" scrollHeight="250"
                     scrollWidth="300" frozenColumns="1">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Id" footerText="Id">
                <h:outputText value="#{customer.id}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Date" footerText="Date">
                <h:outputText value="#{customer.date}"/>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h3>On-Demand Data</h3>
        <p:dataTable var="customer" value="#{dtScrollView.customers6}" scrollRows="20" scrollable="true" liveScroll="true" scrollHeight="150">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Id" footerText="Id">
                <h:outputText value="#{customer.id}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Date" footerText="Date">
                <h:outputText value="#{customer.date}"/>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h5>Virtual Scrolling - 20000 Rows</h5>
        <p:dataTable var="customer" value="#{dtScrollView.lazyModel}" scrollRows="20" scrollable="true"
                     virtualScroll="true" scrollHeight="200" rows="40" style="margin-bottom:0">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Representative" footerText="Representative">
                <h:outputText value="#{customer.representative.name}"/>
            </p:column>
            <p:column headerText="Status" footerText="Status">
                <span class="customer-badge status-#{customer.status.statusName}">#{customer.status}</span>
            </p:column>
        </p:dataTable>
    </div>

</h:form>