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
Maisha RulapaughCanadaAsiya Javayant NEGOTIATION
Kaitlin OstroskyUnited KingdomElwin Sharvill UNQUALIFIED
Wickens NestleGermanyStephen Shaw NEGOTIATION
Chavez BriddickFranceAmy Elsner NEW
Johnson SergiSpainXuxue Feng NEGOTIATION
Octavia MaletArgentinaAsiya Javayant PROPOSAL
Stacey MacleadAustraliaAnna Fali NEW
Smith GlickCanadaBernardo Dominic NEW
Rodrigues CampainJapanAnna Fali QUALIFIED
Cody SaylorsUnited KingdomAsiya Javayant QUALIFIED
Faith GillianBrazilXuxue Feng RENEWAL
Juan WieserJapanIvan Magalhaes NEW
Wickens NestleFranceAmy Elsner RENEWAL
Octavia MaletRussiaAmy Elsner NEGOTIATION
Leon OldroydItalyXuxue Feng UNQUALIFIED
Aditya KuskoRussiaElwin Sharvill UNQUALIFIED
Maria MarrierGermanyAnna Fali QUALIFIED
Juan WieserGermanyElwin Sharvill NEW
James ButtGermanyIoni Bowcher RENEWAL
Claire TollnerGermanyAnna Fali UNQUALIFIED
Emily WhobreySpainIoni Bowcher RENEWAL
Adams MorascaItalyElwin Sharvill QUALIFIED
Cody SaylorsFranceIoni Bowcher UNQUALIFIED
Ivar PaprockiRussiaOnyama Limba QUALIFIED
Leon OldroydGermanyElwin Sharvill RENEWAL
Francesco ShinkoSpainAsiya Javayant PROPOSAL
Sinclair WaycottIndiaAmy Elsner QUALIFIED
Claire TollnerArgentinaAmy Elsner UNQUALIFIED
Wickens NestleUnited KingdomElwin Sharvill QUALIFIED
Antonio CaudyRussiaOnyama Limba NEW
Arvin AlbaresRussiaIvan Magalhaes RENEWAL
Chavez BriddickArgentinaXuxue Feng NEW
Cody SaylorsJapanBernardo Dominic UNQUALIFIED
Greenwood BologniaRussiaElwin Sharvill NEW
Jefferson SchemmerGermanyXuxue Feng NEW
Kaitlin OstroskyItalyAnna Fali RENEWAL
Tony FollerIndiaIvan Magalhaes UNQUALIFIED
Smith GlickSpainElwin Sharvill PROPOSAL
Francesco ShinkoGermanyOnyama Limba NEGOTIATION
Jennifer AmigonAustraliaIvan Magalhaes RENEWAL
Clifford RimAustraliaXuxue Feng NEW
Julie StensethBrazilAnna Fali NEGOTIATION
Antonio CaudyItalyStephen Shaw UNQUALIFIED
Jennifer AmigonJapanOnyama Limba RENEWAL
Octavia MaletGermanyXuxue Feng UNQUALIFIED
Leon OldroydCanadaIoni Bowcher UNQUALIFIED
Wickens NestleRussiaOnyama Limba UNQUALIFIED
David DarakjyCanadaBernardo Dominic NEW
Leja CaldareraIndiaXuxue Feng UNQUALIFIED
Faith GillianItalyStephen Shaw RENEWAL
Horizontal
NameCountryRepresentativeStatus
Chavez BriddickSpainElwin Sharvill RENEWAL
Mayumi KolmetzItalyElwin Sharvill NEGOTIATION
Mujtaba NickaBrazilElwin Sharvill UNQUALIFIED
James ButtAustraliaBernardo Dominic UNQUALIFIED
Mayumi KolmetzBrazilAmy Elsner RENEWAL
Costa DilliardGermanyXuxue Feng PROPOSAL
Kadeem FlosiRussiaIvan Magalhaes PROPOSAL
Deepesh ChuiIndiaBernardo Dominic UNQUALIFIED
Munro FerenczCanadaAnna Fali QUALIFIED
Silvio SlusarskiRussiaAnna Fali QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Faith GillianArgentina2026-04-30Chemel, James L Cpa NEW16Amy Elsner
1001James ButtFrance2026-04-09Benton, John B Jr QUALIFIED81Amy Elsner
1002Cody SaylorsFrance2026-04-15Chapman, Ross E Esq RENEWAL92Anna Fali
1003Kadeem FlosiFrance2026-04-04Commercial Press PROPOSAL27Xuxue Feng
1004Mayumi KolmetzGermany2026-04-30Chapman, Ross E Esq RENEWAL97Ivan Magalhaes
1005Costa DilliardCanada2026-04-08Rousseaux, Michael Esq RENEWAL38Asiya Javayant
1006Chavez BriddickIndia2026-04-01Rousseaux, Michael Esq NEW31Onyama Limba
1007Juan WieserJapan2026-04-29Rangoni Of Florence NEW69Amy Elsner
1008Adams MorascaUnited Kingdom2026-04-22Benton, John B Jr PROPOSAL39Amy Elsner
1009Aruna FigeroaRussia2026-04-14Printing Dimensions NEGOTIATION78Onyama Limba
1010Tony FollerBrazil2026-04-16Chemel, James L Cpa QUALIFIED47Asiya Javayant
1011Greenwood BologniaGermany2026-04-01Feiner Bros PROPOSAL32Stephen Shaw
1012Chavez BriddickArgentina2026-04-29Chanay, Jeffrey A Esq NEGOTIATION0Xuxue Feng
1013Octavia MaletGermany2026-04-11Benton, John B Jr NEW46Amy Elsner
1014Ricardo GauchoRussia2026-04-20Truhlar And Truhlar Attys NEGOTIATION84Bernardo Dominic
1015Ivar PaprockiAustralia2026-04-30Buckley Miller Wright NEGOTIATION84Onyama Limba
1016Clifford RimGermany2026-04-04Printing Dimensions RENEWAL57Bernardo Dominic
1017Murillo MaletIndia2026-04-05Feltz Printing Service QUALIFIED10Xuxue Feng
1018Silvio SlusarskiGermany2026-04-25Rangoni Of Florence NEW47Asiya Javayant
1019Mujtaba NickaCanada2026-04-24Buckley Miller Wright QUALIFIED48Anna Fali
1020Wickens NestleArgentina2026-04-07Commercial Press UNQUALIFIED93Xuxue Feng
1021Claire TollnerJapan2026-04-06Printing Dimensions UNQUALIFIED56Stephen Shaw
1022Clifford RimBrazil2026-04-15Chanay, Jeffrey A Esq QUALIFIED47Bernardo Dominic
1023Leon OldroydSpain2026-04-15Chapman, Ross E Esq UNQUALIFIED45Stephen Shaw
1024Misaki RoysterCanada2026-04-10Chapman, Ross E Esq RENEWAL89Asiya Javayant
1025Arvin AlbaresBrazil2026-04-20Rangoni Of Florence UNQUALIFIED83Asiya Javayant
1026Costa DilliardRussia2026-04-22Chanay, Jeffrey A Esq QUALIFIED14Xuxue Feng
1027Emily WhobreyFrance2026-04-09Benton, John B Jr NEGOTIATION31Elwin Sharvill
1028Deepesh ChuiRussia2026-04-04Rangoni Of Florence PROPOSAL40Onyama Limba
1029Kaitlin OstroskyBrazil2026-04-02Morlong Associates NEW81Ivan Magalhaes
1030Ashley DoeBrazil2026-04-17Rangoni Of Florence RENEWAL74Stephen Shaw
1031Smith GlickArgentina2026-04-27Truhlar And Truhlar Attys RENEWAL85Bernardo Dominic
1032Jeanfrancois VenereFrance2026-04-06Chanay, Jeffrey A Esq UNQUALIFIED56Stephen Shaw
1033Jones VocelkaRussia2026-04-29Buckley Miller Wright NEW4Anna Fali
1034Maisha RulapaughGermany2026-04-10Truhlar And Truhlar Attys RENEWAL84Onyama Limba
1035Antonio CaudySpain2026-04-01Chanay, Jeffrey A Esq PROPOSAL51Anna Fali
1036Mujtaba NickaJapan2026-04-17Benton, John B Jr NEGOTIATION22Elwin Sharvill
1037Emily WhobreyRussia2026-04-29Chanay, Jeffrey A Esq PROPOSAL55Bernardo Dominic
1038Aruna FigeroaBrazil2026-04-05Buckley Miller Wright RENEWAL81Amy Elsner
1039Sinclair WaycottItaly2026-04-11Commercial Press UNQUALIFIED22Ivan Magalhaes
1040Stacey MacleadGermany2026-04-08Commercial Press PROPOSAL61Amy Elsner
1041Juan WieserRussia2026-04-18Morlong Associates UNQUALIFIED27Xuxue Feng
1042Alejandro PerinItaly2026-04-05Rangoni Of Florence QUALIFIED1Bernardo Dominic
1043Izzy GarufiFrance2026-04-02Buckley Miller Wright QUALIFIED64Bernardo Dominic
1044Misaki RoysterIndia2026-04-13Rousseaux, Michael Esq PROPOSAL0Onyama Limba
1045Julie StensethItaly2026-04-04Benton, John B Jr RENEWAL23Onyama Limba
1046Izzy GarufiBrazil2026-04-16Truhlar And Truhlar Attys UNQUALIFIED93Anna Fali
1047Morrow RutaJapan2026-04-18Rousseaux, Michael Esq UNQUALIFIED30Anna Fali
1048Aditya KuskoRussia2026-04-02Chanay, Jeffrey A Esq RENEWAL45Xuxue Feng
1049Darci PoquetteSpain2026-04-09Dorl, James J Esq RENEWAL21Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Jennifer AmigonIndiaXuxue Feng QUALIFIED
Kadeem FlosiArgentinaXuxue Feng PROPOSAL
Jennifer AmigonFranceBernardo Dominic UNQUALIFIED
Cody SaylorsItalyIoni Bowcher PROPOSAL
Munro FerenczArgentinaStephen Shaw UNQUALIFIED
Deepesh ChuiJapanBernardo Dominic PROPOSAL
Leja CaldareraRussiaElwin Sharvill NEGOTIATION
Rodrigues CampainItalyElwin Sharvill NEW
Alejandro PerinUnited KingdomXuxue Feng RENEWAL
Antonio CaudyGermanyAnna Fali NEW
Kadeem FlosiCanadaElwin Sharvill QUALIFIED
Jeanfrancois VenereAustraliaElwin Sharvill PROPOSAL
Maria MarrierGermanyIvan Magalhaes NEGOTIATION
Murillo MaletAustraliaElwin Sharvill UNQUALIFIED
Murillo MaletCanadaXuxue Feng NEGOTIATION
Maisha RulapaughGermanyIoni Bowcher UNQUALIFIED
Faith GillianSpainAnna Fali QUALIFIED
Chavez BriddickSpainBernardo Dominic QUALIFIED
Mujtaba NickaGermanyAmy Elsner RENEWAL
Alejandro PerinBrazilIvan Magalhaes QUALIFIED
Jennifer AmigonBrazilXuxue Feng NEW
Stacey MacleadCanadaOnyama Limba UNQUALIFIED
Isabel BowleyCanadaAnna Fali QUALIFIED
Stacey MacleadArgentinaAsiya Javayant NEGOTIATION
Leon OldroydBrazilIvan Magalhaes NEW
Salvatore StockhamUnited KingdomElwin Sharvill NEW
Isabel BowleyAustraliaElwin Sharvill NEW
Arvin AlbaresAustraliaAmy Elsner UNQUALIFIED
Jones VocelkaBrazilXuxue Feng PROPOSAL
Aruna FigeroaCanadaBernardo Dominic NEGOTIATION
Rodrigues CampainAustraliaAmy Elsner QUALIFIED
Tony FollerArgentinaOnyama Limba QUALIFIED
Salvatore StockhamBrazilStephen Shaw NEW
Francesco ShinkoFranceIvan Magalhaes QUALIFIED
Antonio CaudySpainIoni Bowcher NEGOTIATION
Julie StensethGermanyIvan Magalhaes NEGOTIATION
David DarakjyRussiaElwin Sharvill NEW
Adams MorascaAustraliaAmy Elsner QUALIFIED
Sinclair WaycottJapanIoni Bowcher NEGOTIATION
Adams MorascaRussiaStephen Shaw QUALIFIED
Julie StensethIndiaElwin Sharvill QUALIFIED
Rodrigues CampainBrazilOnyama Limba NEGOTIATION
Costa DilliardBrazilAsiya Javayant QUALIFIED
Wickens NestleItalyStephen Shaw QUALIFIED
Claire TollnerUnited KingdomAsiya Javayant PROPOSAL
Morrow RutaArgentinaAmy Elsner QUALIFIED
Munro FerenczItalyElwin Sharvill NEW
Jeanfrancois VenereJapanIoni Bowcher RENEWAL
Aruna FigeroaBrazilAsiya Javayant UNQUALIFIED
Ricardo GauchoCanadaStephen Shaw PROPOSAL
Frozen Columns
Name
Darci Poquette
David Darakjy
Isabel Bowley
Antonio Caudy
Murillo Malet
Morrow Ruta
Darci Poquette
Tony Foller
Smith Glick
Nicolas Iturbide
Clifford Rim
Arvin Albares
Alejandro Perin
Adams Morasca
Juan Wieser
Izzy Garufi
Aruna Figeroa
Misaki Royster
Arvin Albares
Smith Glick
Sinclair Waycott
Izzy Garufi
Jones Vocelka
James Butt
Silvio Slusarski
Juan Wieser
Ivar Paprocki
Silvio Slusarski
Octavia Malet
Rodrigues Campain
Sinclair Waycott
Tony Foller
Jeanfrancois Venere
Jones Vocelka
Jones Vocelka
Misaki Royster
Maisha Rulapaugh
Octavia Malet
Izzy Garufi
Greenwood Bolognia
Maisha Rulapaugh
Izzy Garufi
Juan Wieser
Maria Marrier
Aruna Figeroa
Octavia Malet
Jeanfrancois Venere
Mayumi Kolmetz
Clifford Rim
Greenwood Bolognia
IdCountryDate
1000Japan2026-04-07
1001India2026-04-24
1002Canada2026-04-21
1003Germany2026-04-21
1004Russia2026-04-13
1005Australia2026-04-16
1006Brazil2026-04-16
1007Canada2026-04-07
1008Canada2026-04-25
1009Spain2026-04-03
1010Russia2026-04-20
1011Spain2026-04-19
1012Brazil2026-04-12
1013Italy2026-04-14
1014Argentina2026-04-19
1015India2026-04-11
1016Japan2026-04-26
1017Spain2026-04-16
1018Argentina2026-04-17
1019Argentina2026-04-03
1020Japan2026-04-02
1021Italy2026-04-13
1022Japan2026-04-25
1023United Kingdom2026-04-23
1024Australia2026-04-18
1025Australia2026-04-01
1026Brazil2026-04-13
1027India2026-04-26
1028Japan2026-04-29
1029Canada2026-04-23
1030Russia2026-04-03
1031France2026-04-08
1032France2026-04-05
1033Russia2026-04-21
1034Brazil2026-04-13
1035Canada2026-04-25
1036United Kingdom2026-04-14
1037Japan2026-04-19
1038Germany2026-04-30
1039France2026-04-12
1040Brazil2026-04-15
1041Russia2026-04-29
1042United Kingdom2026-04-17
1043United Kingdom2026-04-23
1044Russia2026-04-25
1045Italy2026-04-13
1046Germany2026-04-08
1047Japan2026-04-19
1048Russia2026-04-22
1049Spain2026-04-08

On-Demand Data

NameIdCountryDate
Claire Tollner1000Japan2026-04-05
James Butt1001Germany2026-04-16
James Butt1002Spain2026-04-06
Tony Foller1003Brazil2026-04-22
Aika Inouye1004Italy2026-04-29
James Butt1005Spain2026-04-29
Stacey Maclead1006Australia2026-04-16
Jones Vocelka1007Brazil2026-04-11
Faith Gillian1008Australia2026-04-29
Silvio Slusarski1009Spain2026-04-14
Misaki Royster1010Japan2026-04-27
Ashley Doe1011India2026-04-20
Adams Morasca1012Russia2026-04-14
Chavez Briddick1013Germany2026-04-03
Salvatore Stockham1014Germany2026-04-25
Isabel Bowley1015Spain2026-04-30
Jennifer Amigon1016Russia2026-04-21
Leon Oldroyd1017Argentina2026-04-04
Tony Foller1018Brazil2026-04-13
Munro Ferencz1019India2026-04-17
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Antonio CaudyUnited KingdomOnyama Limba QUALIFIED
Stacey MacleadBrazilXuxue Feng NEW
Maisha RulapaughGermanyAnna Fali UNQUALIFIED
Maisha RulapaughUnited KingdomAsiya Javayant QUALIFIED
Murillo MaletItalyStephen Shaw PROPOSAL
Stacey MacleadFranceBernardo Dominic UNQUALIFIED
Darci PoquetteArgentinaAnna Fali PROPOSAL
James ButtFranceStephen Shaw QUALIFIED
Stacey MacleadCanadaAsiya Javayant NEGOTIATION
Ricardo GauchoItalyOnyama Limba RENEWAL
David DarakjyCanadaAnna Fali RENEWAL
Silvio SlusarskiRussiaElwin Sharvill QUALIFIED
Ricardo GauchoIndiaStephen Shaw NEW
Octavia MaletFranceXuxue Feng NEW
Antonio CaudyRussiaElwin Sharvill QUALIFIED
Leon OldroydUnited KingdomBernardo Dominic NEW
Sinclair WaycottJapanBernardo Dominic UNQUALIFIED
Alejandro PerinFranceAnna Fali RENEWAL
Jennifer AmigonBrazilIoni Bowcher NEW
Leon OldroydUnited KingdomIoni Bowcher UNQUALIFIED
Aruna FigeroaGermanyIvan Magalhaes QUALIFIED
Chavez BriddickIndiaOnyama Limba UNQUALIFIED
Antonio CaudyIndiaBernardo Dominic NEW
Isabel BowleyCanadaOnyama Limba NEW
Misaki RoysterSpainAnna Fali QUALIFIED
Munro FerenczBrazilIvan Magalhaes UNQUALIFIED
Cody SaylorsJapanAnna Fali UNQUALIFIED
Misaki RoysterGermanyIvan Magalhaes NEGOTIATION
Jefferson SchemmerRussiaBernardo Dominic PROPOSAL
Leja CaldareraJapanStephen Shaw QUALIFIED
Ricardo GauchoArgentinaAnna Fali PROPOSAL
Greenwood BologniaBrazilElwin Sharvill UNQUALIFIED
Clifford RimAustraliaAsiya Javayant NEGOTIATION
Kaitlin OstroskySpainStephen Shaw RENEWAL
Francesco ShinkoSpainXuxue Feng QUALIFIED
Nicolas IturbideSpainBernardo Dominic PROPOSAL
Isabel BowleyItalyAmy Elsner QUALIFIED
Tony FollerFranceElwin Sharvill PROPOSAL
Antonio CaudySpainXuxue Feng QUALIFIED
Costa DilliardBrazilStephen Shaw NEGOTIATION

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