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
Rodrigues CampainFranceBernardo Dominic NEW
Deepesh ChuiSpainOnyama Limba RENEWAL
Morrow RutaSpainAsiya Javayant NEGOTIATION
Alejandro PerinJapanIoni Bowcher PROPOSAL
Isabel BowleyAustraliaAsiya Javayant NEGOTIATION
Kadeem FlosiItalyStephen Shaw NEW
Jennifer AmigonIndiaElwin Sharvill RENEWAL
Adams MorascaIndiaBernardo Dominic PROPOSAL
Murillo MaletRussiaXuxue Feng UNQUALIFIED
Salvatore StockhamSpainXuxue Feng UNQUALIFIED
Maisha RulapaughBrazilXuxue Feng UNQUALIFIED
Alejandro PerinArgentinaStephen Shaw NEGOTIATION
Faith GillianItalyAnna Fali NEW
Ricardo GauchoJapanXuxue Feng UNQUALIFIED
Deepesh ChuiCanadaBernardo Dominic NEW
Tony FollerCanadaAmy Elsner PROPOSAL
Wickens NestleGermanyIoni Bowcher NEGOTIATION
Ricardo GauchoArgentinaOnyama Limba QUALIFIED
Juan WieserRussiaOnyama Limba NEGOTIATION
Darci PoquetteJapanOnyama Limba QUALIFIED
Juan WieserArgentinaStephen Shaw NEW
Jefferson SchemmerSpainIoni Bowcher PROPOSAL
Silvio SlusarskiCanadaOnyama Limba RENEWAL
Darci PoquetteRussiaOnyama Limba RENEWAL
Chavez BriddickBrazilElwin Sharvill NEW
Francesco ShinkoRussiaIoni Bowcher UNQUALIFIED
Octavia MaletRussiaAnna Fali PROPOSAL
Leon OldroydJapanXuxue Feng PROPOSAL
Sinclair WaycottGermanyAnna Fali NEW
Jeanfrancois VenereRussiaOnyama Limba NEGOTIATION
Jefferson SchemmerUnited KingdomAsiya Javayant RENEWAL
Jefferson SchemmerFranceIvan Magalhaes NEW
David DarakjyArgentinaAsiya Javayant RENEWAL
Murillo MaletJapanAnna Fali NEGOTIATION
Jeanfrancois VenereIndiaIvan Magalhaes PROPOSAL
James ButtItalyStephen Shaw NEGOTIATION
Faith GillianIndiaAnna Fali RENEWAL
Smith GlickRussiaAsiya Javayant RENEWAL
Tony FollerJapanXuxue Feng UNQUALIFIED
Arvin AlbaresArgentinaAnna Fali RENEWAL
Greenwood BologniaArgentinaElwin Sharvill QUALIFIED
Ashley DoeRussiaIvan Magalhaes QUALIFIED
Clifford RimRussiaStephen Shaw NEW
Salvatore StockhamItalyAmy Elsner QUALIFIED
Munro FerenczRussiaAnna Fali PROPOSAL
Sinclair WaycottArgentinaStephen Shaw QUALIFIED
Emily WhobreyArgentinaOnyama Limba UNQUALIFIED
Nicolas IturbideAustraliaStephen Shaw QUALIFIED
Antonio CaudyGermanyStephen Shaw RENEWAL
Stacey MacleadRussiaStephen Shaw UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Aika InouyeAustraliaOnyama Limba PROPOSAL
Kadeem FlosiSpainAmy Elsner QUALIFIED
Francesco ShinkoFranceStephen Shaw RENEWAL
Adams MorascaCanadaAmy Elsner RENEWAL
Jeanfrancois VenereFranceIoni Bowcher NEW
Arvin AlbaresAustraliaAsiya Javayant NEW
Clifford RimUnited KingdomIvan Magalhaes NEW
Julie StensethGermanyOnyama Limba UNQUALIFIED
Jeanfrancois VenereUnited KingdomBernardo Dominic PROPOSAL
Johnson SergiGermanyBernardo Dominic PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Adams MorascaBrazil2026-05-16Benton, John B Jr NEW61Xuxue Feng
1001Deepesh ChuiJapan2026-05-07King, Christopher A Esq NEW67Amy Elsner
1002Francesco ShinkoJapan2026-05-14Commercial Press RENEWAL74Elwin Sharvill
1003Francesco ShinkoSpain2026-06-01Rangoni Of Florence NEW33Stephen Shaw
1004Sinclair WaycottItaly2026-06-01Printing Dimensions NEW34Anna Fali
1005David DarakjyArgentina2026-06-03Benton, John B Jr PROPOSAL20Ivan Magalhaes
1006David DarakjyBrazil2026-06-02Commercial Press QUALIFIED19Stephen Shaw
1007Claire TollnerItaly2026-05-29Morlong Associates RENEWAL57Asiya Javayant
1008Izzy GarufiFrance2026-05-23Chemel, James L Cpa QUALIFIED40Onyama Limba
1009Jeanfrancois VenereGermany2026-05-18Chemel, James L Cpa NEW6Onyama Limba
1010Tony FollerCanada2026-05-21Dorl, James J Esq UNQUALIFIED96Amy Elsner
1011Clifford RimArgentina2026-05-13Chemel, James L Cpa QUALIFIED43Amy Elsner
1012Smith GlickCanada2026-05-06Morlong Associates RENEWAL27Elwin Sharvill
1013Leja CaldareraAustralia2026-05-30Truhlar And Truhlar Attys NEGOTIATION78Anna Fali
1014Leja CaldareraGermany2026-05-19Benton, John B Jr RENEWAL43Ivan Magalhaes
1015Misaki RoysterJapan2026-05-15Rangoni Of Florence NEW76Xuxue Feng
1016Silvio SlusarskiIndia2026-05-10Rousseaux, Michael Esq UNQUALIFIED45Xuxue Feng
1017Costa DilliardRussia2026-05-24Rangoni Of Florence RENEWAL4Xuxue Feng
1018Jeanfrancois VenereBrazil2026-05-08Commercial Press NEW91Elwin Sharvill
1019Jefferson SchemmerSpain2026-05-25Feiner Bros QUALIFIED47Ivan Magalhaes
1020Wickens NestleArgentina2026-05-10Printing Dimensions PROPOSAL0Ioni Bowcher
1021Nicolas IturbideFrance2026-05-30Truhlar And Truhlar Attys RENEWAL97Anna Fali
1022Nicolas IturbideGermany2026-05-25Dorl, James J Esq PROPOSAL87Bernardo Dominic
1023Costa DilliardAustralia2026-05-24Chanay, Jeffrey A Esq NEGOTIATION34Amy Elsner
1024Arvin AlbaresGermany2026-05-12Printing Dimensions PROPOSAL41Xuxue Feng
1025Maria MarrierGermany2026-05-17Morlong Associates NEW92Bernardo Dominic
1026Arvin AlbaresSpain2026-05-08Rousseaux, Michael Esq QUALIFIED31Ioni Bowcher
1027Jones VocelkaBrazil2026-06-02Printing Dimensions QUALIFIED23Stephen Shaw
1028Francesco ShinkoUnited Kingdom2026-05-10Printing Dimensions PROPOSAL25Asiya Javayant
1029James ButtBrazil2026-05-25Feltz Printing Service NEGOTIATION67Asiya Javayant
1030Rodrigues CampainIndia2026-05-18Chanay, Jeffrey A Esq QUALIFIED48Asiya Javayant
1031Jones VocelkaCanada2026-05-09Dorl, James J Esq NEW32Asiya Javayant
1032Alejandro PerinIndia2026-06-04Chemel, James L Cpa RENEWAL84Xuxue Feng
1033Murillo MaletRussia2026-05-25Chapman, Ross E Esq QUALIFIED18Anna Fali
1034Murillo MaletSpain2026-06-02Dorl, James J Esq UNQUALIFIED5Elwin Sharvill
1035Sinclair WaycottArgentina2026-05-09Benton, John B Jr NEGOTIATION20Ivan Magalhaes
1036Clifford RimBrazil2026-05-13Dorl, James J Esq RENEWAL26Stephen Shaw
1037Ivar PaprockiIndia2026-05-12King, Christopher A Esq NEGOTIATION71Bernardo Dominic
1038Julie StensethIndia2026-06-03Printing Dimensions QUALIFIED98Amy Elsner
1039Misaki RoysterIndia2026-05-19Rousseaux, Michael Esq RENEWAL56Asiya Javayant
1040Emily WhobreyCanada2026-05-09Printing Dimensions NEW81Xuxue Feng
1041Stacey MacleadAustralia2026-05-27Chapman, Ross E Esq NEGOTIATION21Stephen Shaw
1042Nicolas IturbideBrazil2026-05-21Dorl, James J Esq RENEWAL69Elwin Sharvill
1043Munro FerenczCanada2026-06-03King, Christopher A Esq RENEWAL46Amy Elsner
1044Mayumi KolmetzArgentina2026-05-26Feiner Bros QUALIFIED35Onyama Limba
1045Tony FollerIndia2026-06-02Buckley Miller Wright NEW66Anna Fali
1046Francesco ShinkoItaly2026-06-01Chanay, Jeffrey A Esq UNQUALIFIED31Xuxue Feng
1047Kadeem FlosiCanada2026-05-23Feiner Bros NEW86Bernardo Dominic
1048Claire TollnerBrazil2026-05-25Rousseaux, Michael Esq UNQUALIFIED30Onyama Limba
1049Cody SaylorsCanada2026-05-11Printing Dimensions QUALIFIED26Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
James ButtRussiaAmy Elsner UNQUALIFIED
Maisha RulapaughJapanOnyama Limba UNQUALIFIED
Maisha RulapaughItalyElwin Sharvill RENEWAL
Maisha RulapaughAustraliaOnyama Limba RENEWAL
Tony FollerBrazilElwin Sharvill QUALIFIED
Adams MorascaCanadaOnyama Limba NEW
Octavia MaletAustraliaIvan Magalhaes UNQUALIFIED
Leja CaldareraIndiaStephen Shaw NEGOTIATION
Aruna FigeroaSpainIoni Bowcher NEGOTIATION
Jennifer AmigonIndiaStephen Shaw RENEWAL
Antonio CaudyAustraliaOnyama Limba NEW
Kaitlin OstroskyJapanXuxue Feng RENEWAL
James ButtFranceAmy Elsner NEW
Deepesh ChuiFranceAsiya Javayant QUALIFIED
Emily WhobreyAustraliaIoni Bowcher QUALIFIED
Kaitlin OstroskyIndiaXuxue Feng UNQUALIFIED
Leja CaldareraArgentinaIvan Magalhaes NEGOTIATION
Murillo MaletBrazilAsiya Javayant PROPOSAL
Nicolas IturbideIndiaIvan Magalhaes UNQUALIFIED
David DarakjyGermanyAnna Fali NEGOTIATION
Costa DilliardAustraliaIoni Bowcher UNQUALIFIED
Costa DilliardJapanStephen Shaw RENEWAL
Claire TollnerItalyOnyama Limba UNQUALIFIED
Alejandro PerinUnited KingdomBernardo Dominic UNQUALIFIED
Costa DilliardArgentinaOnyama Limba NEGOTIATION
Jennifer AmigonAustraliaAmy Elsner UNQUALIFIED
Aika InouyeGermanyElwin Sharvill PROPOSAL
Jeanfrancois VenereRussiaOnyama Limba QUALIFIED
Silvio SlusarskiBrazilIvan Magalhaes NEGOTIATION
Octavia MaletAustraliaXuxue Feng PROPOSAL
Darci PoquetteIndiaIoni Bowcher RENEWAL
Julie StensethItalyAnna Fali UNQUALIFIED
Greenwood BologniaItalyIvan Magalhaes UNQUALIFIED
Maisha RulapaughBrazilOnyama Limba RENEWAL
Darci PoquetteGermanyIoni Bowcher NEGOTIATION
Claire TollnerArgentinaAsiya Javayant QUALIFIED
Aditya KuskoJapanStephen Shaw NEGOTIATION
Deepesh ChuiIndiaAnna Fali NEGOTIATION
Kaitlin OstroskyUnited KingdomElwin Sharvill NEW
Johnson SergiGermanyElwin Sharvill NEW
Ricardo GauchoGermanyAmy Elsner NEW
Aika InouyeUnited KingdomOnyama Limba PROPOSAL
Kaitlin OstroskyJapanElwin Sharvill UNQUALIFIED
Sinclair WaycottFranceIoni Bowcher RENEWAL
Isabel BowleyAustraliaStephen Shaw NEW
Smith GlickUnited KingdomAsiya Javayant RENEWAL
Adams MorascaItalyOnyama Limba QUALIFIED
Munro FerenczJapanAnna Fali UNQUALIFIED
Murillo MaletUnited KingdomElwin Sharvill NEW
Juan WieserJapanAsiya Javayant PROPOSAL
Frozen Columns
Name
Antonio Caudy
Leon Oldroyd
Ricardo Gaucho
Arvin Albares
Mayumi Kolmetz
Sinclair Waycott
Claire Tollner
Isabel Bowley
Wickens Nestle
Cody Saylors
Emily Whobrey
Morrow Ruta
Morrow Ruta
Kaitlin Ostrosky
Misaki Royster
Aditya Kusko
Ivar Paprocki
Ricardo Gaucho
David Darakjy
Morrow Ruta
Mayumi Kolmetz
Cody Saylors
Aika Inouye
Arvin Albares
Aditya Kusko
Izzy Garufi
Kaitlin Ostrosky
Silvio Slusarski
Alejandro Perin
Leja Caldarera
Izzy Garufi
Mayumi Kolmetz
Ashley Doe
Deepesh Chui
Leon Oldroyd
Emily Whobrey
Sinclair Waycott
Deepesh Chui
Greenwood Bolognia
Darci Poquette
Jeanfrancois Venere
Morrow Ruta
Stacey Maclead
Wickens Nestle
Costa Dilliard
Alejandro Perin
Chavez Briddick
Octavia Malet
Arvin Albares
Deepesh Chui
IdCountryDate
1000Canada2026-05-14
1001Brazil2026-05-16
1002Canada2026-05-07
1003United Kingdom2026-05-26
1004Italy2026-05-13
1005Germany2026-05-06
1006United Kingdom2026-05-13
1007Japan2026-05-24
1008Italy2026-05-13
1009United Kingdom2026-05-13
1010United Kingdom2026-06-04
1011France2026-06-02
1012Brazil2026-05-30
1013India2026-05-10
1014Argentina2026-05-26
1015Canada2026-05-09
1016Argentina2026-05-21
1017Japan2026-05-20
1018Canada2026-05-27
1019Brazil2026-05-15
1020United Kingdom2026-05-21
1021Japan2026-05-21
1022Canada2026-06-04
1023Australia2026-05-30
1024Australia2026-05-26
1025United Kingdom2026-05-27
1026France2026-05-29
1027Argentina2026-05-16
1028Russia2026-05-19
1029Russia2026-05-10
1030France2026-06-03
1031Germany2026-06-02
1032Spain2026-05-09
1033Japan2026-05-06
1034Canada2026-05-09
1035Australia2026-05-29
1036Australia2026-06-02
1037India2026-05-28
1038United Kingdom2026-05-29
1039Italy2026-05-23
1040Italy2026-05-21
1041Spain2026-05-08
1042Australia2026-05-19
1043United Kingdom2026-05-07
1044Germany2026-05-20
1045Argentina2026-05-24
1046France2026-05-09
1047Canada2026-05-31
1048France2026-05-06
1049Japan2026-05-28

On-Demand Data

NameIdCountryDate
Smith Glick1000Brazil2026-05-13
Aditya Kusko1001Australia2026-05-28
Jones Vocelka1002Russia2026-05-29
Aditya Kusko1003Russia2026-05-11
Rodrigues Campain1004Canada2026-05-25
Arvin Albares1005Germany2026-06-01
Salvatore Stockham1006Spain2026-05-19
Antonio Caudy1007Spain2026-05-19
Octavia Malet1008Spain2026-05-31
Aika Inouye1009France2026-05-22
Morrow Ruta1010Brazil2026-05-23
Morrow Ruta1011Australia2026-05-18
David Darakjy1012Canada2026-05-17
Morrow Ruta1013Japan2026-05-28
Aruna Figeroa1014Russia2026-05-10
Aditya Kusko1015Brazil2026-06-01
Greenwood Bolognia1016India2026-05-07
Isabel Bowley1017Australia2026-06-04
Morrow Ruta1018Russia2026-05-19
Jefferson Schemmer1019India2026-05-19
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Greenwood BologniaAustraliaOnyama Limba NEGOTIATION
Julie StensethIndiaAmy Elsner NEW
Tony FollerCanadaElwin Sharvill UNQUALIFIED
Jeanfrancois VenereBrazilAmy Elsner RENEWAL
Deepesh ChuiBrazilOnyama Limba UNQUALIFIED
Chavez BriddickRussiaOnyama Limba PROPOSAL
Juan WieserAustraliaOnyama Limba NEW
Jones VocelkaFranceXuxue Feng RENEWAL
Izzy GarufiJapanIoni Bowcher RENEWAL
Maria MarrierUnited KingdomIoni Bowcher UNQUALIFIED
Jones VocelkaAustraliaBernardo Dominic NEW
Maria MarrierCanadaStephen Shaw PROPOSAL
Greenwood BologniaUnited KingdomOnyama Limba UNQUALIFIED
Nicolas IturbideSpainBernardo Dominic RENEWAL
Jones VocelkaAustraliaElwin Sharvill RENEWAL
Leon OldroydArgentinaOnyama Limba UNQUALIFIED
Silvio SlusarskiUnited KingdomAsiya Javayant UNQUALIFIED
Claire TollnerSpainAsiya Javayant NEGOTIATION
Alejandro PerinCanadaElwin Sharvill UNQUALIFIED
Silvio SlusarskiFranceBernardo Dominic UNQUALIFIED
Aditya KuskoRussiaIvan Magalhaes PROPOSAL
Maria MarrierAustraliaStephen Shaw QUALIFIED
Arvin AlbaresIndiaElwin Sharvill PROPOSAL
Clifford RimSpainAnna Fali RENEWAL
Stacey MacleadBrazilBernardo Dominic RENEWAL
Wickens NestleJapanXuxue Feng NEGOTIATION
Faith GillianCanadaIvan Magalhaes RENEWAL
Greenwood BologniaItalyIoni Bowcher UNQUALIFIED
Leon OldroydAustraliaIvan Magalhaes PROPOSAL
Ashley DoeBrazilAmy Elsner UNQUALIFIED
Murillo MaletSpainElwin Sharvill NEW
Deepesh ChuiFranceElwin Sharvill QUALIFIED
Jennifer AmigonItalyAmy Elsner PROPOSAL
Tony FollerRussiaElwin Sharvill UNQUALIFIED
Stacey MacleadCanadaIoni Bowcher NEW
Faith GillianIndiaBernardo Dominic PROPOSAL
Jones VocelkaGermanyBernardo Dominic RENEWAL
Adams MorascaFranceAmy Elsner QUALIFIED
David DarakjyBrazilAmy Elsner PROPOSAL
Izzy GarufiCanadaIoni Bowcher NEW

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