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
Clifford RimBrazilElwin Sharvill UNQUALIFIED
Jefferson SchemmerSpainAnna Fali UNQUALIFIED
Arvin AlbaresFranceAsiya Javayant NEGOTIATION
Kaitlin OstroskyJapanBernardo Dominic NEW
Tony FollerGermanyIvan Magalhaes QUALIFIED
Salvatore StockhamItalyBernardo Dominic NEW
Jefferson SchemmerSpainStephen Shaw QUALIFIED
Mujtaba NickaCanadaOnyama Limba NEW
Deepesh ChuiBrazilElwin Sharvill RENEWAL
Salvatore StockhamItalyIoni Bowcher RENEWAL
Clifford RimAustraliaIvan Magalhaes NEGOTIATION
Emily WhobreyAustraliaIoni Bowcher RENEWAL
Misaki RoysterJapanAnna Fali NEGOTIATION
Maria MarrierFranceIvan Magalhaes PROPOSAL
Salvatore StockhamRussiaAsiya Javayant PROPOSAL
Jones VocelkaGermanyAmy Elsner QUALIFIED
Tony FollerJapanElwin Sharvill NEW
Jeanfrancois VenereAustraliaAmy Elsner UNQUALIFIED
Emily WhobreyAustraliaXuxue Feng NEW
Morrow RutaItalyOnyama Limba NEGOTIATION
Kaitlin OstroskyIndiaElwin Sharvill QUALIFIED
Alejandro PerinUnited KingdomIvan Magalhaes UNQUALIFIED
Jones VocelkaJapanOnyama Limba PROPOSAL
Tony FollerItalyBernardo Dominic QUALIFIED
Claire TollnerAustraliaXuxue Feng QUALIFIED
Julie StensethRussiaElwin Sharvill NEW
Jones VocelkaAustraliaOnyama Limba QUALIFIED
Mayumi KolmetzArgentinaOnyama Limba UNQUALIFIED
Jeanfrancois VenereGermanyOnyama Limba PROPOSAL
Jeanfrancois VenereArgentinaBernardo Dominic QUALIFIED
Rodrigues CampainSpainOnyama Limba UNQUALIFIED
Wickens NestleArgentinaBernardo Dominic NEGOTIATION
Rodrigues CampainIndiaElwin Sharvill RENEWAL
Maisha RulapaughGermanyStephen Shaw QUALIFIED
Cody SaylorsItalyStephen Shaw NEGOTIATION
Isabel BowleyItalyOnyama Limba NEW
Clifford RimSpainElwin Sharvill NEW
Ivar PaprockiArgentinaXuxue Feng PROPOSAL
Francesco ShinkoBrazilIvan Magalhaes QUALIFIED
Sinclair WaycottAustraliaBernardo Dominic QUALIFIED
Mayumi KolmetzIndiaOnyama Limba QUALIFIED
Chavez BriddickFranceAmy Elsner PROPOSAL
Julie StensethUnited KingdomAsiya Javayant RENEWAL
Kaitlin OstroskyUnited KingdomOnyama Limba NEGOTIATION
Darci PoquetteCanadaAnna Fali UNQUALIFIED
Maisha RulapaughFranceXuxue Feng PROPOSAL
Aruna FigeroaUnited KingdomAnna Fali RENEWAL
Johnson SergiJapanIvan Magalhaes RENEWAL
Sinclair WaycottBrazilIoni Bowcher NEGOTIATION
Smith GlickSpainBernardo Dominic PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Clifford RimSpainElwin Sharvill RENEWAL
Ricardo GauchoAustraliaStephen Shaw RENEWAL
Salvatore StockhamCanadaOnyama Limba QUALIFIED
Greenwood BologniaSpainAmy Elsner QUALIFIED
Jennifer AmigonBrazilIvan Magalhaes RENEWAL
Misaki RoysterAustraliaAmy Elsner PROPOSAL
Aruna FigeroaIndiaStephen Shaw NEGOTIATION
Faith GillianSpainIvan Magalhaes UNQUALIFIED
Murillo MaletIndiaAsiya Javayant QUALIFIED
Izzy GarufiCanadaAnna Fali NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Smith GlickUnited Kingdom2026-05-12Truhlar And Truhlar Attys UNQUALIFIED97Ioni Bowcher
1001Jones VocelkaArgentina2026-05-06Printing Dimensions PROPOSAL7Onyama Limba
1002Jones VocelkaBrazil2026-05-17Buckley Miller Wright PROPOSAL88Amy Elsner
1003Misaki RoysterItaly2026-05-12King, Christopher A Esq RENEWAL62Amy Elsner
1004Ricardo GauchoAustralia2026-05-27Feltz Printing Service NEGOTIATION16Ioni Bowcher
1005Maisha RulapaughAustralia2026-05-31Rangoni Of Florence UNQUALIFIED79Ivan Magalhaes
1006Kaitlin OstroskyAustralia2026-05-26Dorl, James J Esq NEW75Xuxue Feng
1007Maisha RulapaughIndia2026-05-18Rousseaux, Michael Esq UNQUALIFIED78Ivan Magalhaes
1008Nicolas IturbideItaly2026-06-02Chemel, James L Cpa RENEWAL15Amy Elsner
1009Munro FerenczItaly2026-05-30Rousseaux, Michael Esq NEW92Asiya Javayant
1010Claire TollnerRussia2026-05-19Printing Dimensions RENEWAL55Onyama Limba
1011Cody SaylorsCanada2026-05-08Truhlar And Truhlar Attys PROPOSAL62Anna Fali
1012Tony FollerBrazil2026-05-13Rangoni Of Florence NEW84Amy Elsner
1013Morrow RutaIndia2026-06-01Rousseaux, Michael Esq RENEWAL74Elwin Sharvill
1014Octavia MaletBrazil2026-05-24Chemel, James L Cpa PROPOSAL26Ioni Bowcher
1015Claire TollnerRussia2026-05-23Buckley Miller Wright QUALIFIED4Anna Fali
1016Morrow RutaIndia2026-05-24Chapman, Ross E Esq QUALIFIED68Stephen Shaw
1017Adams MorascaBrazil2026-05-22Rousseaux, Michael Esq RENEWAL93Xuxue Feng
1018Jeanfrancois VenereRussia2026-05-27Benton, John B Jr UNQUALIFIED50Amy Elsner
1019Jeanfrancois VenereItaly2026-05-10Buckley Miller Wright NEW16Elwin Sharvill
1020Isabel BowleySpain2026-05-25Rangoni Of Florence RENEWAL72Xuxue Feng
1021Ivar PaprockiFrance2026-05-30King, Christopher A Esq RENEWAL27Xuxue Feng
1022Emily WhobreyJapan2026-05-21Printing Dimensions NEGOTIATION37Bernardo Dominic
1023Izzy GarufiAustralia2026-05-28Truhlar And Truhlar Attys QUALIFIED43Ioni Bowcher
1024Arvin AlbaresArgentina2026-05-27Chapman, Ross E Esq UNQUALIFIED21Ioni Bowcher
1025Isabel BowleyGermany2026-05-14Chanay, Jeffrey A Esq PROPOSAL12Stephen Shaw
1026Nicolas IturbideJapan2026-05-07Truhlar And Truhlar Attys QUALIFIED67Amy Elsner
1027Leja CaldareraAustralia2026-05-31Chemel, James L Cpa QUALIFIED5Anna Fali
1028Cody SaylorsFrance2026-05-24Rousseaux, Michael Esq QUALIFIED27Anna Fali
1029Maria MarrierFrance2026-05-18Dorl, James J Esq NEGOTIATION94Anna Fali
1030David DarakjyAustralia2026-05-20Commercial Press PROPOSAL25Stephen Shaw
1031Salvatore StockhamCanada2026-05-12Chanay, Jeffrey A Esq QUALIFIED12Stephen Shaw
1032Rodrigues CampainItaly2026-05-23Chanay, Jeffrey A Esq QUALIFIED53Bernardo Dominic
1033Sinclair WaycottBrazil2026-05-13Benton, John B Jr UNQUALIFIED60Ivan Magalhaes
1034Chavez BriddickAustralia2026-05-12Rangoni Of Florence PROPOSAL48Ivan Magalhaes
1035Aditya KuskoIndia2026-06-02Rousseaux, Michael Esq PROPOSAL98Anna Fali
1036Munro FerenczBrazil2026-05-05Commercial Press PROPOSAL57Bernardo Dominic
1037Clifford RimSpain2026-05-07Rangoni Of Florence RENEWAL99Ivan Magalhaes
1038Octavia MaletFrance2026-05-18Chanay, Jeffrey A Esq PROPOSAL12Asiya Javayant
1039Darci PoquetteUnited Kingdom2026-06-01Feltz Printing Service QUALIFIED90Stephen Shaw
1040Isabel BowleyItaly2026-05-15Commercial Press RENEWAL73Asiya Javayant
1041Emily WhobreyCanada2026-05-19Rangoni Of Florence PROPOSAL25Bernardo Dominic
1042Izzy GarufiAustralia2026-05-14Rousseaux, Michael Esq PROPOSAL15Amy Elsner
1043Jones VocelkaGermany2026-05-16Feltz Printing Service RENEWAL30Ivan Magalhaes
1044Mujtaba NickaCanada2026-05-08Truhlar And Truhlar Attys NEGOTIATION65Asiya Javayant
1045Maisha RulapaughSpain2026-05-11Benton, John B Jr NEW83Amy Elsner
1046Alejandro PerinFrance2026-05-16Morlong Associates RENEWAL49Anna Fali
1047Silvio SlusarskiArgentina2026-05-16Chanay, Jeffrey A Esq PROPOSAL57Stephen Shaw
1048Darci PoquetteJapan2026-05-18Truhlar And Truhlar Attys QUALIFIED93Bernardo Dominic
1049David DarakjyRussia2026-05-14Chapman, Ross E Esq NEW13Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Kadeem FlosiRussiaStephen Shaw UNQUALIFIED
Juan WieserAustraliaOnyama Limba UNQUALIFIED
Greenwood BologniaIndiaStephen Shaw QUALIFIED
Kadeem FlosiArgentinaStephen Shaw UNQUALIFIED
Ricardo GauchoFranceBernardo Dominic UNQUALIFIED
Leja CaldareraBrazilAsiya Javayant NEW
Ricardo GauchoRussiaAmy Elsner RENEWAL
Morrow RutaItalyAnna Fali NEGOTIATION
Leja CaldareraRussiaOnyama Limba PROPOSAL
Mujtaba NickaIndiaIoni Bowcher RENEWAL
Costa DilliardJapanIvan Magalhaes RENEWAL
Aditya KuskoBrazilIvan Magalhaes RENEWAL
Smith GlickBrazilAsiya Javayant PROPOSAL
Ricardo GauchoUnited KingdomIvan Magalhaes RENEWAL
Aika InouyeUnited KingdomOnyama Limba QUALIFIED
Julie StensethUnited KingdomAsiya Javayant PROPOSAL
Claire TollnerItalyStephen Shaw QUALIFIED
Aika InouyeUnited KingdomOnyama Limba UNQUALIFIED
Claire TollnerIndiaAsiya Javayant PROPOSAL
Johnson SergiFranceBernardo Dominic PROPOSAL
Aruna FigeroaArgentinaXuxue Feng UNQUALIFIED
Chavez BriddickCanadaBernardo Dominic NEGOTIATION
Emily WhobreySpainIoni Bowcher NEGOTIATION
Mayumi KolmetzFranceBernardo Dominic UNQUALIFIED
Johnson SergiGermanyStephen Shaw QUALIFIED
Misaki RoysterSpainIvan Magalhaes QUALIFIED
Jeanfrancois VenereBrazilBernardo Dominic RENEWAL
Wickens NestleSpainIvan Magalhaes QUALIFIED
Juan WieserJapanBernardo Dominic RENEWAL
Chavez BriddickBrazilAmy Elsner UNQUALIFIED
Darci PoquetteUnited KingdomXuxue Feng QUALIFIED
Aika InouyeJapanXuxue Feng QUALIFIED
Izzy GarufiFranceAnna Fali UNQUALIFIED
Morrow RutaSpainAmy Elsner UNQUALIFIED
Stacey MacleadBrazilBernardo Dominic RENEWAL
Juan WieserItalyXuxue Feng UNQUALIFIED
Munro FerenczRussiaAmy Elsner NEW
Adams MorascaRussiaXuxue Feng UNQUALIFIED
Misaki RoysterIndiaIvan Magalhaes NEGOTIATION
Deepesh ChuiFranceElwin Sharvill NEW
Silvio SlusarskiUnited KingdomBernardo Dominic NEW
Julie StensethCanadaOnyama Limba QUALIFIED
Jennifer AmigonGermanyIvan Magalhaes PROPOSAL
Octavia MaletArgentinaIvan Magalhaes UNQUALIFIED
Jones VocelkaCanadaIoni Bowcher UNQUALIFIED
Morrow RutaArgentinaXuxue Feng NEW
Jeanfrancois VenereBrazilAsiya Javayant NEGOTIATION
Isabel BowleyIndiaIvan Magalhaes RENEWAL
Darci PoquetteRussiaBernardo Dominic QUALIFIED
Cody SaylorsBrazilBernardo Dominic PROPOSAL
Frozen Columns
Name
Mayumi Kolmetz
Kaitlin Ostrosky
Tony Foller
Rodrigues Campain
Aruna Figeroa
Kaitlin Ostrosky
Jones Vocelka
Silvio Slusarski
Munro Ferencz
Izzy Garufi
Nicolas Iturbide
Chavez Briddick
Mujtaba Nicka
Ricardo Gaucho
Maisha Rulapaugh
Leja Caldarera
Stacey Maclead
Deepesh Chui
Darci Poquette
Mujtaba Nicka
Ivar Paprocki
Mayumi Kolmetz
Cody Saylors
Emily Whobrey
Leja Caldarera
Darci Poquette
Johnson Sergi
Mayumi Kolmetz
Munro Ferencz
David Darakjy
Octavia Malet
Salvatore Stockham
Darci Poquette
Adams Morasca
Isabel Bowley
Jones Vocelka
Jefferson Schemmer
Nicolas Iturbide
Francesco Shinko
James Butt
Maria Marrier
Johnson Sergi
Darci Poquette
Murillo Malet
Aruna Figeroa
Ivar Paprocki
Nicolas Iturbide
Cody Saylors
Mayumi Kolmetz
Aditya Kusko
IdCountryDate
1000United Kingdom2026-05-15
1001India2026-05-18
1002Brazil2026-05-22
1003Australia2026-05-19
1004Japan2026-05-04
1005Australia2026-05-23
1006Spain2026-05-12
1007Germany2026-05-18
1008Germany2026-05-10
1009Spain2026-05-15
1010Spain2026-05-18
1011India2026-05-26
1012India2026-05-17
1013Spain2026-05-06
1014Japan2026-05-21
1015Spain2026-05-19
1016Russia2026-05-13
1017France2026-05-05
1018United Kingdom2026-05-05
1019France2026-05-26
1020Spain2026-05-23
1021Spain2026-05-16
1022Australia2026-06-01
1023Spain2026-05-08
1024Japan2026-05-29
1025Germany2026-05-22
1026Italy2026-05-22
1027Germany2026-05-13
1028Italy2026-05-31
1029Germany2026-05-18
1030Germany2026-05-31
1031India2026-05-14
1032Germany2026-06-01
1033United Kingdom2026-05-17
1034Argentina2026-05-25
1035Australia2026-05-16
1036Spain2026-05-26
1037United Kingdom2026-05-13
1038Canada2026-05-17
1039Spain2026-05-05
1040Spain2026-05-22
1041Canada2026-05-08
1042Argentina2026-05-30
1043Brazil2026-05-25
1044India2026-05-07
1045Italy2026-05-13
1046Spain2026-06-01
1047Argentina2026-05-18
1048France2026-05-29
1049Italy2026-05-28

On-Demand Data

NameIdCountryDate
Tony Foller1000France2026-05-23
Leon Oldroyd1001Australia2026-05-06
Maisha Rulapaugh1002Japan2026-05-24
Ricardo Gaucho1003Brazil2026-05-25
Ricardo Gaucho1004France2026-05-22
Misaki Royster1005United Kingdom2026-05-04
Maria Marrier1006Germany2026-05-26
Stacey Maclead1007Russia2026-05-11
Silvio Slusarski1008France2026-05-27
Ashley Doe1009Italy2026-05-28
Julie Stenseth1010Spain2026-06-02
Murillo Malet1011Italy2026-05-22
Julie Stenseth1012United Kingdom2026-05-28
Julie Stenseth1013Australia2026-05-30
Misaki Royster1014Canada2026-05-29
Ashley Doe1015France2026-05-05
Stacey Maclead1016Australia2026-05-18
Izzy Garufi1017Canada2026-05-09
Francesco Shinko1018Australia2026-05-12
David Darakjy1019Brazil2026-05-17
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Silvio SlusarskiUnited KingdomAmy Elsner NEGOTIATION
Rodrigues CampainJapanAmy Elsner PROPOSAL
Francesco ShinkoItalyAsiya Javayant NEW
Wickens NestleRussiaBernardo Dominic UNQUALIFIED
Kadeem FlosiRussiaIoni Bowcher QUALIFIED
Murillo MaletGermanyAsiya Javayant NEGOTIATION
Wickens NestleJapanXuxue Feng PROPOSAL
Adams MorascaUnited KingdomOnyama Limba PROPOSAL
Antonio CaudySpainAsiya Javayant QUALIFIED
Maisha RulapaughArgentinaAnna Fali UNQUALIFIED
Greenwood BologniaItalyStephen Shaw UNQUALIFIED
Deepesh ChuiArgentinaAmy Elsner UNQUALIFIED
Jefferson SchemmerSpainAsiya Javayant NEGOTIATION
Izzy GarufiBrazilOnyama Limba NEGOTIATION
Cody SaylorsCanadaOnyama Limba NEW
Ivar PaprockiSpainXuxue Feng RENEWAL
Alejandro PerinGermanyIoni Bowcher QUALIFIED
Maisha RulapaughRussiaXuxue Feng NEGOTIATION
Isabel BowleyArgentinaAnna Fali RENEWAL
Salvatore StockhamBrazilElwin Sharvill NEW
Misaki RoysterUnited KingdomIoni Bowcher QUALIFIED
Munro FerenczJapanAnna Fali RENEWAL
Murillo MaletJapanIoni Bowcher RENEWAL
Aditya KuskoIndiaElwin Sharvill RENEWAL
Octavia MaletArgentinaIvan Magalhaes QUALIFIED
Claire TollnerItalyXuxue Feng RENEWAL
Cody SaylorsIndiaAnna Fali NEW
Clifford RimSpainElwin Sharvill RENEWAL
Isabel BowleyBrazilAnna Fali RENEWAL
Nicolas IturbideAustraliaAnna Fali RENEWAL
Julie StensethJapanStephen Shaw NEW
Mayumi KolmetzRussiaAsiya Javayant PROPOSAL
Mayumi KolmetzSpainIoni Bowcher QUALIFIED
Emily WhobreyAustraliaAsiya Javayant PROPOSAL
Silvio SlusarskiJapanBernardo Dominic NEW
Mujtaba NickaUnited KingdomAnna Fali UNQUALIFIED
James ButtUnited KingdomXuxue Feng NEGOTIATION
Morrow RutaAustraliaIvan Magalhaes NEGOTIATION
Ashley DoeItalyIvan Magalhaes UNQUALIFIED
Aika InouyeItalyAsiya Javayant PROPOSAL

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