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
Jones VocelkaFranceIoni Bowcher PROPOSAL
Aika InouyeAustraliaOnyama Limba QUALIFIED
Adams MorascaItalyAsiya Javayant NEW
Faith GillianBrazilIvan Magalhaes NEW
David DarakjyIndiaIoni Bowcher UNQUALIFIED
Kadeem FlosiCanadaStephen Shaw PROPOSAL
Isabel BowleyArgentinaIoni Bowcher QUALIFIED
Silvio SlusarskiRussiaIoni Bowcher NEW
Francesco ShinkoIndiaElwin Sharvill QUALIFIED
Misaki RoysterUnited KingdomXuxue Feng NEGOTIATION
Salvatore StockhamFranceOnyama Limba RENEWAL
Kaitlin OstroskyGermanyAsiya Javayant PROPOSAL
Greenwood BologniaItalyAmy Elsner QUALIFIED
Morrow RutaCanadaXuxue Feng QUALIFIED
Emily WhobreyJapanAnna Fali NEGOTIATION
Mujtaba NickaJapanAmy Elsner PROPOSAL
Kadeem FlosiIndiaAmy Elsner QUALIFIED
Morrow RutaSpainXuxue Feng NEW
Tony FollerFranceAnna Fali RENEWAL
Kaitlin OstroskyArgentinaAsiya Javayant NEW
James ButtIndiaIvan Magalhaes NEGOTIATION
Izzy GarufiIndiaAmy Elsner QUALIFIED
Emily WhobreyGermanyBernardo Dominic UNQUALIFIED
Smith GlickFranceOnyama Limba UNQUALIFIED
Clifford RimJapanIoni Bowcher QUALIFIED
Octavia MaletAustraliaIoni Bowcher RENEWAL
Murillo MaletRussiaAmy Elsner QUALIFIED
Julie StensethUnited KingdomIvan Magalhaes NEW
Nicolas IturbideItalyOnyama Limba RENEWAL
Rodrigues CampainAustraliaXuxue Feng RENEWAL
Adams MorascaGermanyStephen Shaw QUALIFIED
Emily WhobreyCanadaAmy Elsner PROPOSAL
Cody SaylorsSpainOnyama Limba NEW
Greenwood BologniaGermanyElwin Sharvill PROPOSAL
Jennifer AmigonBrazilIoni Bowcher NEW
Arvin AlbaresSpainIoni Bowcher RENEWAL
Aruna FigeroaUnited KingdomAnna Fali PROPOSAL
Mayumi KolmetzUnited KingdomAnna Fali UNQUALIFIED
Izzy GarufiGermanyStephen Shaw QUALIFIED
Maisha RulapaughBrazilStephen Shaw NEGOTIATION
Izzy GarufiArgentinaAmy Elsner QUALIFIED
Tony FollerRussiaAnna Fali UNQUALIFIED
Salvatore StockhamSpainStephen Shaw RENEWAL
Kadeem FlosiRussiaAsiya Javayant QUALIFIED
Chavez BriddickFranceIvan Magalhaes QUALIFIED
Deepesh ChuiSpainAsiya Javayant NEGOTIATION
Ivar PaprockiCanadaAnna Fali RENEWAL
Jefferson SchemmerJapanXuxue Feng NEGOTIATION
Alejandro PerinGermanyAmy Elsner NEW
Costa DilliardAustraliaBernardo Dominic UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Francesco ShinkoArgentinaAnna Fali PROPOSAL
Rodrigues CampainFranceBernardo Dominic NEW
Arvin AlbaresCanadaOnyama Limba RENEWAL
Chavez BriddickCanadaBernardo Dominic NEGOTIATION
Adams MorascaIndiaIvan Magalhaes NEW
Kadeem FlosiAustraliaElwin Sharvill RENEWAL
Arvin AlbaresUnited KingdomOnyama Limba NEGOTIATION
Salvatore StockhamAustraliaBernardo Dominic NEGOTIATION
Clifford RimGermanyIoni Bowcher NEGOTIATION
Faith GillianBrazilAmy Elsner RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Kaitlin OstroskySpain2026-04-26Chanay, Jeffrey A Esq NEW56Amy Elsner
1001Ricardo GauchoJapan2026-04-27Feiner Bros NEW40Bernardo Dominic
1002Aruna FigeroaCanada2026-05-06Rousseaux, Michael Esq UNQUALIFIED37Ivan Magalhaes
1003Aruna FigeroaIndia2026-05-02Chemel, James L Cpa PROPOSAL77Onyama Limba
1004Ivar PaprockiRussia2026-05-15King, Christopher A Esq QUALIFIED1Ioni Bowcher
1005Ashley DoeIndia2026-05-01Benton, John B Jr QUALIFIED25Bernardo Dominic
1006Leon OldroydArgentina2026-04-26Buckley Miller Wright UNQUALIFIED85Onyama Limba
1007Aruna FigeroaAustralia2026-05-01Feiner Bros NEGOTIATION22Ivan Magalhaes
1008Julie StensethArgentina2026-05-18Rangoni Of Florence RENEWAL50Asiya Javayant
1009Darci PoquetteAustralia2026-05-20King, Christopher A Esq QUALIFIED93Onyama Limba
1010Morrow RutaRussia2026-04-28Benton, John B Jr RENEWAL28Amy Elsner
1011Jefferson SchemmerAustralia2026-05-19Rangoni Of Florence UNQUALIFIED50Stephen Shaw
1012Adams MorascaIndia2026-04-30Printing Dimensions QUALIFIED38Xuxue Feng
1013Sinclair WaycottArgentina2026-05-18Feiner Bros UNQUALIFIED2Ivan Magalhaes
1014Wickens NestleSpain2026-04-23King, Christopher A Esq QUALIFIED11Asiya Javayant
1015Tony FollerGermany2026-05-15Rangoni Of Florence PROPOSAL12Elwin Sharvill
1016Silvio SlusarskiJapan2026-05-17Benton, John B Jr PROPOSAL3Stephen Shaw
1017Faith GillianGermany2026-05-16Buckley Miller Wright RENEWAL88Xuxue Feng
1018Mujtaba NickaIndia2026-05-10Truhlar And Truhlar Attys RENEWAL24Amy Elsner
1019Ivar PaprockiRussia2026-04-28Printing Dimensions UNQUALIFIED21Asiya Javayant
1020Chavez BriddickJapan2026-05-13Buckley Miller Wright RENEWAL79Amy Elsner
1021Darci PoquetteCanada2026-05-20King, Christopher A Esq UNQUALIFIED15Stephen Shaw
1022Aditya KuskoCanada2026-04-29Chanay, Jeffrey A Esq NEW93Ioni Bowcher
1023Jennifer AmigonAustralia2026-05-15Benton, John B Jr NEW0Amy Elsner
1024Murillo MaletCanada2026-05-19Rousseaux, Michael Esq NEGOTIATION40Ivan Magalhaes
1025Johnson SergiJapan2026-05-06Truhlar And Truhlar Attys PROPOSAL64Ivan Magalhaes
1026Ivar PaprockiIndia2026-04-23Rousseaux, Michael Esq QUALIFIED64Amy Elsner
1027Clifford RimRussia2026-05-09Chemel, James L Cpa UNQUALIFIED79Asiya Javayant
1028Francesco ShinkoBrazil2026-05-17Chapman, Ross E Esq PROPOSAL34Asiya Javayant
1029Mujtaba NickaRussia2026-05-02Chemel, James L Cpa NEGOTIATION91Onyama Limba
1030David DarakjyGermany2026-04-28Truhlar And Truhlar Attys QUALIFIED21Ivan Magalhaes
1031Isabel BowleyCanada2026-05-15Printing Dimensions QUALIFIED32Ioni Bowcher
1032Leon OldroydBrazil2026-04-26Morlong Associates UNQUALIFIED26Asiya Javayant
1033Octavia MaletAustralia2026-04-21King, Christopher A Esq NEW55Bernardo Dominic
1034Salvatore StockhamUnited Kingdom2026-05-20Buckley Miller Wright RENEWAL32Amy Elsner
1035Alejandro PerinArgentina2026-04-26Rangoni Of Florence QUALIFIED93Asiya Javayant
1036Jennifer AmigonBrazil2026-05-13Rangoni Of Florence QUALIFIED44Ioni Bowcher
1037Kadeem FlosiFrance2026-04-29Morlong Associates RENEWAL55Amy Elsner
1038Francesco ShinkoRussia2026-04-23Chapman, Ross E Esq QUALIFIED65Onyama Limba
1039Jefferson SchemmerUnited Kingdom2026-04-25Morlong Associates NEGOTIATION9Elwin Sharvill
1040Morrow RutaAustralia2026-05-02Printing Dimensions PROPOSAL47Bernardo Dominic
1041Julie StensethJapan2026-05-10Morlong Associates QUALIFIED41Bernardo Dominic
1042Maisha RulapaughSpain2026-04-26Chanay, Jeffrey A Esq NEW90Asiya Javayant
1043Smith GlickGermany2026-05-11Rangoni Of Florence NEGOTIATION85Elwin Sharvill
1044Silvio SlusarskiIndia2026-05-10Morlong Associates NEW89Xuxue Feng
1045Kadeem FlosiSpain2026-05-03Feltz Printing Service QUALIFIED71Anna Fali
1046Jones VocelkaAustralia2026-04-30Buckley Miller Wright QUALIFIED7Onyama Limba
1047Ashley DoeCanada2026-05-16Chapman, Ross E Esq NEW39Anna Fali
1048Aditya KuskoIndia2026-05-01Feltz Printing Service QUALIFIED89Asiya Javayant
1049Costa DilliardSpain2026-04-28Chemel, James L Cpa PROPOSAL43Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Morrow RutaArgentinaIoni Bowcher PROPOSAL
Tony FollerCanadaIoni Bowcher PROPOSAL
Costa DilliardGermanyAmy Elsner NEW
Silvio SlusarskiCanadaAmy Elsner NEW
Stacey MacleadItalyAnna Fali PROPOSAL
Aika InouyeItalyStephen Shaw RENEWAL
Ivar PaprockiArgentinaElwin Sharvill NEW
Faith GillianJapanAnna Fali RENEWAL
Silvio SlusarskiJapanOnyama Limba NEGOTIATION
Claire TollnerSpainAsiya Javayant RENEWAL
Adams MorascaArgentinaXuxue Feng NEGOTIATION
Adams MorascaBrazilXuxue Feng RENEWAL
Maisha RulapaughBrazilIoni Bowcher NEGOTIATION
Antonio CaudyItalyOnyama Limba UNQUALIFIED
Jeanfrancois VenereCanadaElwin Sharvill NEW
Jones VocelkaArgentinaIoni Bowcher RENEWAL
Mujtaba NickaSpainOnyama Limba QUALIFIED
Wickens NestleFranceAsiya Javayant PROPOSAL
Jeanfrancois VenereAustraliaAsiya Javayant NEGOTIATION
Faith GillianAustraliaAnna Fali NEW
Faith GillianAustraliaAnna Fali NEW
Claire TollnerBrazilElwin Sharvill PROPOSAL
Antonio CaudyBrazilOnyama Limba PROPOSAL
Misaki RoysterUnited KingdomIoni Bowcher NEGOTIATION
Faith GillianAustraliaIvan Magalhaes RENEWAL
Leon OldroydIndiaIvan Magalhaes RENEWAL
Adams MorascaAustraliaIvan Magalhaes NEGOTIATION
Rodrigues CampainGermanyOnyama Limba QUALIFIED
Clifford RimBrazilIvan Magalhaes UNQUALIFIED
Morrow RutaGermanyElwin Sharvill NEW
Munro FerenczArgentinaAsiya Javayant NEGOTIATION
Faith GillianBrazilOnyama Limba QUALIFIED
Costa DilliardArgentinaXuxue Feng QUALIFIED
Octavia MaletAustraliaAnna Fali NEGOTIATION
Leon OldroydItalyBernardo Dominic UNQUALIFIED
Maisha RulapaughFranceBernardo Dominic NEW
Munro FerenczUnited KingdomAmy Elsner QUALIFIED
Aika InouyeArgentinaIoni Bowcher RENEWAL
Ricardo GauchoRussiaIoni Bowcher PROPOSAL
Jefferson SchemmerItalyIoni Bowcher UNQUALIFIED
Jones VocelkaBrazilAnna Fali QUALIFIED
Jefferson SchemmerJapanStephen Shaw NEGOTIATION
Munro FerenczAustraliaAmy Elsner NEGOTIATION
Isabel BowleyUnited KingdomAmy Elsner UNQUALIFIED
Isabel BowleyItalyAnna Fali UNQUALIFIED
Deepesh ChuiRussiaBernardo Dominic UNQUALIFIED
Ricardo GauchoFranceBernardo Dominic NEW
Juan WieserAustraliaIoni Bowcher UNQUALIFIED
Aditya KuskoFranceIvan Magalhaes QUALIFIED
Octavia MaletBrazilXuxue Feng QUALIFIED
Frozen Columns
Name
Chavez Briddick
David Darakjy
Misaki Royster
Aditya Kusko
Tony Foller
Julie Stenseth
Mayumi Kolmetz
Leja Caldarera
Sinclair Waycott
Faith Gillian
Chavez Briddick
Leja Caldarera
Mujtaba Nicka
David Darakjy
Octavia Malet
Costa Dilliard
Kaitlin Ostrosky
Faith Gillian
Nicolas Iturbide
Salvatore Stockham
Silvio Slusarski
Jeanfrancois Venere
Deepesh Chui
Isabel Bowley
Arvin Albares
Emily Whobrey
Claire Tollner
Aruna Figeroa
Maisha Rulapaugh
Cody Saylors
Greenwood Bolognia
Darci Poquette
Misaki Royster
Tony Foller
Greenwood Bolognia
Morrow Ruta
Deepesh Chui
Juan Wieser
Greenwood Bolognia
Izzy Garufi
Darci Poquette
Adams Morasca
Rodrigues Campain
Jeanfrancois Venere
Greenwood Bolognia
Faith Gillian
Julie Stenseth
Morrow Ruta
Arvin Albares
Julie Stenseth
IdCountryDate
1000Russia2026-05-14
1001India2026-04-26
1002Russia2026-04-29
1003United Kingdom2026-04-26
1004Italy2026-05-07
1005Brazil2026-04-28
1006Brazil2026-04-26
1007Italy2026-04-30
1008United Kingdom2026-05-06
1009Canada2026-04-28
1010Argentina2026-05-04
1011Brazil2026-05-13
1012United Kingdom2026-05-11
1013Russia2026-05-01
1014India2026-04-23
1015Spain2026-04-26
1016Italy2026-04-29
1017Russia2026-05-02
1018Argentina2026-05-19
1019Japan2026-04-29
1020Italy2026-04-23
1021Japan2026-05-02
1022India2026-04-30
1023Japan2026-04-24
1024Germany2026-05-11
1025Australia2026-05-14
1026Japan2026-05-18
1027Australia2026-05-20
1028Australia2026-05-13
1029France2026-05-09
1030Canada2026-05-08
1031Russia2026-05-07
1032Russia2026-05-05
1033Canada2026-05-09
1034France2026-05-02
1035Australia2026-05-10
1036Brazil2026-05-01
1037India2026-05-17
1038Spain2026-04-21
1039Japan2026-05-08
1040India2026-05-06
1041United Kingdom2026-05-04
1042United Kingdom2026-04-25
1043Italy2026-04-22
1044Russia2026-05-14
1045Canada2026-04-29
1046Spain2026-05-11
1047India2026-04-23
1048France2026-04-25
1049Argentina2026-05-12

On-Demand Data

NameIdCountryDate
Rodrigues Campain1000Australia2026-05-14
Johnson Sergi1001France2026-05-04
Juan Wieser1002India2026-04-30
Smith Glick1003Italy2026-05-03
Antonio Caudy1004Italy2026-04-26
James Butt1005Spain2026-05-18
James Butt1006Canada2026-04-25
Adams Morasca1007France2026-05-07
Juan Wieser1008India2026-04-29
James Butt1009Spain2026-04-21
Maisha Rulapaugh1010Italy2026-05-20
Ricardo Gaucho1011France2026-05-17
Tony Foller1012Italy2026-04-28
Smith Glick1013United Kingdom2026-04-25
Juan Wieser1014Brazil2026-05-05
Faith Gillian1015India2026-04-28
David Darakjy1016Brazil2026-05-05
Jefferson Schemmer1017Japan2026-05-02
Deepesh Chui1018France2026-04-26
Jennifer Amigon1019Brazil2026-04-23
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Costa DilliardFranceAsiya Javayant NEGOTIATION
Julie StensethBrazilAsiya Javayant UNQUALIFIED
Aruna FigeroaBrazilIoni Bowcher UNQUALIFIED
Misaki RoysterItalyAmy Elsner PROPOSAL
Jones VocelkaSpainIvan Magalhaes NEW
Francesco ShinkoGermanyAsiya Javayant RENEWAL
James ButtArgentinaElwin Sharvill NEW
David DarakjyItalyAnna Fali QUALIFIED
Leja CaldareraAustraliaIoni Bowcher UNQUALIFIED
Aditya KuskoAustraliaBernardo Dominic PROPOSAL
Morrow RutaItalyAnna Fali UNQUALIFIED
Clifford RimCanadaBernardo Dominic PROPOSAL
Misaki RoysterAustraliaIvan Magalhaes NEGOTIATION
Deepesh ChuiBrazilAmy Elsner UNQUALIFIED
Jeanfrancois VenereGermanyAsiya Javayant NEW
Maisha RulapaughFranceAsiya Javayant NEW
Sinclair WaycottCanadaElwin Sharvill UNQUALIFIED
Smith GlickItalyAmy Elsner RENEWAL
Darci PoquetteSpainStephen Shaw UNQUALIFIED
Wickens NestleArgentinaIoni Bowcher NEGOTIATION
Sinclair WaycottCanadaIoni Bowcher QUALIFIED
Morrow RutaIndiaStephen Shaw NEW
Munro FerenczBrazilStephen Shaw NEGOTIATION
Silvio SlusarskiRussiaStephen Shaw UNQUALIFIED
Leja CaldareraArgentinaAmy Elsner QUALIFIED
Rodrigues CampainArgentinaBernardo Dominic UNQUALIFIED
Silvio SlusarskiUnited KingdomElwin Sharvill NEW
Isabel BowleyFranceAmy Elsner NEGOTIATION
Silvio SlusarskiAustraliaIoni Bowcher QUALIFIED
Jones VocelkaJapanOnyama Limba PROPOSAL
Nicolas IturbideCanadaIoni Bowcher RENEWAL
Silvio SlusarskiJapanXuxue Feng PROPOSAL
Darci PoquetteJapanStephen Shaw NEW
Cody SaylorsJapanIoni Bowcher RENEWAL
Maria MarrierCanadaIoni Bowcher RENEWAL
James ButtIndiaAnna Fali UNQUALIFIED
Leja CaldareraAustraliaAsiya Javayant PROPOSAL
Antonio CaudyBrazilBernardo Dominic NEGOTIATION
Aika InouyeFranceAmy Elsner UNQUALIFIED
David DarakjyRussiaBernardo Dominic 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>