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
Deepesh ChuiGermanyBernardo Dominic PROPOSAL
Arvin AlbaresRussiaIvan Magalhaes NEW
Aditya KuskoIndiaAnna Fali QUALIFIED
Izzy GarufiRussiaOnyama Limba UNQUALIFIED
Isabel BowleyCanadaAmy Elsner NEGOTIATION
Octavia MaletUnited KingdomXuxue Feng UNQUALIFIED
Isabel BowleyJapanIoni Bowcher NEGOTIATION
Mayumi KolmetzBrazilStephen Shaw NEW
Leon OldroydAustraliaIoni Bowcher NEGOTIATION
Isabel BowleyRussiaStephen Shaw NEW
Isabel BowleyRussiaOnyama Limba QUALIFIED
Wickens NestleBrazilAnna Fali NEW
Aika InouyeJapanBernardo Dominic UNQUALIFIED
Antonio CaudyBrazilElwin Sharvill NEW
Jones VocelkaGermanyIvan Magalhaes PROPOSAL
Jeanfrancois VenereFranceElwin Sharvill UNQUALIFIED
Jennifer AmigonSpainAnna Fali RENEWAL
Izzy GarufiItalyAmy Elsner NEW
Julie StensethGermanyIvan Magalhaes RENEWAL
Alejandro PerinJapanStephen Shaw NEGOTIATION
Arvin AlbaresArgentinaStephen Shaw NEGOTIATION
Maisha RulapaughArgentinaBernardo Dominic UNQUALIFIED
Ashley DoeBrazilStephen Shaw UNQUALIFIED
Stacey MacleadGermanyAnna Fali RENEWAL
Maisha RulapaughAustraliaAmy Elsner NEW
Mujtaba NickaGermanyIoni Bowcher RENEWAL
Leon OldroydArgentinaAsiya Javayant PROPOSAL
Jones VocelkaArgentinaIoni Bowcher QUALIFIED
Claire TollnerSpainElwin Sharvill RENEWAL
Johnson SergiGermanyElwin Sharvill PROPOSAL
Maria MarrierItalyIvan Magalhaes RENEWAL
Deepesh ChuiUnited KingdomIoni Bowcher RENEWAL
Kadeem FlosiJapanAnna Fali QUALIFIED
Cody SaylorsArgentinaBernardo Dominic NEGOTIATION
David DarakjyUnited KingdomAnna Fali PROPOSAL
Claire TollnerBrazilXuxue Feng PROPOSAL
Costa DilliardArgentinaAnna Fali UNQUALIFIED
Ashley DoeUnited KingdomXuxue Feng NEW
Stacey MacleadItalyXuxue Feng UNQUALIFIED
James ButtUnited KingdomAmy Elsner UNQUALIFIED
Clifford RimIndiaAsiya Javayant QUALIFIED
Sinclair WaycottFranceStephen Shaw NEGOTIATION
Leon OldroydItalyAnna Fali UNQUALIFIED
Misaki RoysterBrazilElwin Sharvill PROPOSAL
Morrow RutaIndiaAsiya Javayant NEW
Leon OldroydRussiaStephen Shaw PROPOSAL
Stacey MacleadBrazilAnna Fali UNQUALIFIED
David DarakjyFranceOnyama Limba UNQUALIFIED
Isabel BowleyGermanyOnyama Limba NEGOTIATION
Mujtaba NickaArgentinaElwin Sharvill UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Aruna FigeroaGermanyBernardo Dominic PROPOSAL
Juan WieserItalyStephen Shaw PROPOSAL
Ivar PaprockiUnited KingdomXuxue Feng UNQUALIFIED
Juan WieserRussiaAnna Fali PROPOSAL
Ivar PaprockiJapanElwin Sharvill PROPOSAL
Julie StensethRussiaOnyama Limba NEGOTIATION
Aika InouyeIndiaIvan Magalhaes QUALIFIED
Ricardo GauchoArgentinaAnna Fali RENEWAL
Murillo MaletBrazilElwin Sharvill RENEWAL
Morrow RutaJapanIvan Magalhaes NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Greenwood BologniaCanada2026-05-12Chanay, Jeffrey A Esq NEGOTIATION72Amy Elsner
1001Francesco ShinkoCanada2026-05-15Dorl, James J Esq NEGOTIATION7Asiya Javayant
1002Juan WieserFrance2026-06-01Printing Dimensions RENEWAL90Anna Fali
1003Julie StensethFrance2026-05-24Chemel, James L Cpa PROPOSAL12Anna Fali
1004Jefferson SchemmerCanada2026-05-28Feltz Printing Service PROPOSAL9Bernardo Dominic
1005Chavez BriddickFrance2026-06-03Rousseaux, Michael Esq PROPOSAL12Bernardo Dominic
1006Jennifer AmigonCanada2026-06-04Truhlar And Truhlar Attys NEGOTIATION70Elwin Sharvill
1007Ivar PaprockiJapan2026-06-02Dorl, James J Esq RENEWAL5Amy Elsner
1008Julie StensethCanada2026-05-29Dorl, James J Esq PROPOSAL37Onyama Limba
1009Aruna FigeroaFrance2026-05-27Feltz Printing Service PROPOSAL49Ioni Bowcher
1010Adams MorascaSpain2026-05-07Feiner Bros QUALIFIED11Bernardo Dominic
1011Cody SaylorsUnited Kingdom2026-05-10Benton, John B Jr UNQUALIFIED38Onyama Limba
1012Mayumi KolmetzJapan2026-05-11Chapman, Ross E Esq QUALIFIED7Bernardo Dominic
1013Jennifer AmigonJapan2026-05-16King, Christopher A Esq NEGOTIATION84Bernardo Dominic
1014Emily WhobreyBrazil2026-05-22Chemel, James L Cpa NEGOTIATION31Ioni Bowcher
1015Aruna FigeroaUnited Kingdom2026-05-12Truhlar And Truhlar Attys QUALIFIED45Ivan Magalhaes
1016Chavez BriddickSpain2026-05-16Buckley Miller Wright QUALIFIED22Amy Elsner
1017Johnson SergiUnited Kingdom2026-05-08Truhlar And Truhlar Attys RENEWAL99Amy Elsner
1018Aika InouyeRussia2026-05-19Dorl, James J Esq UNQUALIFIED25Asiya Javayant
1019Wickens NestleFrance2026-05-23Benton, John B Jr RENEWAL15Anna Fali
1020Tony FollerArgentina2026-05-30King, Christopher A Esq QUALIFIED25Elwin Sharvill
1021Aditya KuskoSpain2026-05-15Commercial Press RENEWAL54Elwin Sharvill
1022Izzy GarufiGermany2026-05-13Feltz Printing Service QUALIFIED68Asiya Javayant
1023Greenwood BologniaUnited Kingdom2026-05-20Commercial Press UNQUALIFIED41Bernardo Dominic
1024Chavez BriddickAustralia2026-05-12Morlong Associates UNQUALIFIED50Xuxue Feng
1025Juan WieserFrance2026-06-02Morlong Associates NEGOTIATION24Xuxue Feng
1026Deepesh ChuiBrazil2026-05-07Benton, John B Jr UNQUALIFIED79Asiya Javayant
1027Jefferson SchemmerCanada2026-05-19Chemel, James L Cpa QUALIFIED45Stephen Shaw
1028Aruna FigeroaRussia2026-05-25Benton, John B Jr NEGOTIATION30Bernardo Dominic
1029Kaitlin OstroskySpain2026-06-02Chanay, Jeffrey A Esq PROPOSAL70Onyama Limba
1030Francesco ShinkoGermany2026-05-13Chemel, James L Cpa QUALIFIED29Asiya Javayant
1031Maria MarrierFrance2026-05-27Rangoni Of Florence RENEWAL62Asiya Javayant
1032Rodrigues CampainBrazil2026-05-12Rousseaux, Michael Esq RENEWAL23Elwin Sharvill
1033Aruna FigeroaGermany2026-05-25Commercial Press UNQUALIFIED80Ivan Magalhaes
1034Aruna FigeroaItaly2026-05-30Feiner Bros QUALIFIED78Ioni Bowcher
1035Greenwood BologniaAustralia2026-06-01Printing Dimensions NEGOTIATION80Ioni Bowcher
1036Julie StensethUnited Kingdom2026-05-22Chemel, James L Cpa UNQUALIFIED94Elwin Sharvill
1037Smith GlickItaly2026-05-23Truhlar And Truhlar Attys NEGOTIATION35Bernardo Dominic
1038Chavez BriddickIndia2026-05-12Feltz Printing Service QUALIFIED21Xuxue Feng
1039James ButtArgentina2026-05-22Chemel, James L Cpa UNQUALIFIED84Asiya Javayant
1040Deepesh ChuiFrance2026-05-10Truhlar And Truhlar Attys RENEWAL28Elwin Sharvill
1041Juan WieserIndia2026-05-11Commercial Press NEW54Stephen Shaw
1042Ashley DoeJapan2026-05-15Rangoni Of Florence RENEWAL16Asiya Javayant
1043Maria MarrierItaly2026-05-28Chemel, James L Cpa NEGOTIATION51Onyama Limba
1044Aditya KuskoGermany2026-05-23Commercial Press QUALIFIED26Stephen Shaw
1045Aika InouyeIndia2026-05-11Benton, John B Jr NEGOTIATION63Xuxue Feng
1046Isabel BowleyGermany2026-05-17Dorl, James J Esq UNQUALIFIED0Onyama Limba
1047Chavez BriddickJapan2026-05-08Dorl, James J Esq UNQUALIFIED22Onyama Limba
1048Ricardo GauchoIndia2026-05-08Morlong Associates RENEWAL21Bernardo Dominic
1049Francesco ShinkoRussia2026-05-23Chapman, Ross E Esq QUALIFIED90Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Alejandro PerinFranceOnyama Limba NEGOTIATION
Morrow RutaGermanyElwin Sharvill UNQUALIFIED
Chavez BriddickArgentinaOnyama Limba RENEWAL
Claire TollnerBrazilAmy Elsner NEW
Claire TollnerIndiaAsiya Javayant QUALIFIED
Juan WieserUnited KingdomIoni Bowcher NEW
Tony FollerAustraliaOnyama Limba PROPOSAL
Munro FerenczBrazilAsiya Javayant PROPOSAL
David DarakjyArgentinaIvan Magalhaes RENEWAL
Ashley DoeArgentinaAsiya Javayant RENEWAL
Alejandro PerinGermanyAsiya Javayant UNQUALIFIED
Cody SaylorsFranceAmy Elsner UNQUALIFIED
Emily WhobreyUnited KingdomStephen Shaw NEW
Stacey MacleadSpainAsiya Javayant PROPOSAL
Chavez BriddickFranceStephen Shaw QUALIFIED
Costa DilliardRussiaBernardo Dominic PROPOSAL
Aditya KuskoJapanIoni Bowcher QUALIFIED
Silvio SlusarskiItalyAsiya Javayant QUALIFIED
Clifford RimArgentinaIoni Bowcher UNQUALIFIED
Jennifer AmigonArgentinaIvan Magalhaes UNQUALIFIED
Antonio CaudyFranceAnna Fali NEGOTIATION
David DarakjyArgentinaXuxue Feng QUALIFIED
Rodrigues CampainUnited KingdomAnna Fali NEW
Emily WhobreyRussiaIoni Bowcher NEW
Leon OldroydUnited KingdomIoni Bowcher RENEWAL
James ButtUnited KingdomElwin Sharvill QUALIFIED
Izzy GarufiItalyAnna Fali NEW
Emily WhobreyGermanyAmy Elsner NEGOTIATION
Smith GlickIndiaAmy Elsner QUALIFIED
Wickens NestleCanadaOnyama Limba QUALIFIED
Antonio CaudyRussiaIvan Magalhaes QUALIFIED
Aruna FigeroaJapanIoni Bowcher NEW
Mujtaba NickaSpainAnna Fali RENEWAL
Leon OldroydSpainXuxue Feng NEW
Darci PoquetteFranceIoni Bowcher UNQUALIFIED
Sinclair WaycottBrazilAmy Elsner NEW
Jeanfrancois VenereJapanStephen Shaw QUALIFIED
Leon OldroydIndiaElwin Sharvill QUALIFIED
Salvatore StockhamUnited KingdomAsiya Javayant PROPOSAL
Maisha RulapaughAustraliaAsiya Javayant NEGOTIATION
Mujtaba NickaArgentinaOnyama Limba PROPOSAL
Misaki RoysterGermanyElwin Sharvill RENEWAL
Faith GillianJapanXuxue Feng UNQUALIFIED
Juan WieserRussiaOnyama Limba NEW
Mujtaba NickaUnited KingdomOnyama Limba QUALIFIED
Maria MarrierAustraliaBernardo Dominic QUALIFIED
Clifford RimFranceOnyama Limba QUALIFIED
Stacey MacleadIndiaElwin Sharvill PROPOSAL
Tony FollerFranceOnyama Limba UNQUALIFIED
Aditya KuskoArgentinaBernardo Dominic RENEWAL
Frozen Columns
Name
Leja Caldarera
Darci Poquette
Cody Saylors
Octavia Malet
Costa Dilliard
Smith Glick
Francesco Shinko
Jeanfrancois Venere
Arvin Albares
Julie Stenseth
Cody Saylors
Tony Foller
Julie Stenseth
Cody Saylors
Cody Saylors
Rodrigues Campain
Misaki Royster
Leja Caldarera
Stacey Maclead
Adams Morasca
Murillo Malet
Clifford Rim
Leja Caldarera
Maisha Rulapaugh
Ivar Paprocki
Mujtaba Nicka
Aditya Kusko
Rodrigues Campain
Ricardo Gaucho
Alejandro Perin
Leon Oldroyd
Aruna Figeroa
David Darakjy
Leja Caldarera
Alejandro Perin
Tony Foller
Silvio Slusarski
David Darakjy
Leja Caldarera
Wickens Nestle
Isabel Bowley
Mujtaba Nicka
Jeanfrancois Venere
Julie Stenseth
Jefferson Schemmer
Mayumi Kolmetz
Salvatore Stockham
David Darakjy
Cody Saylors
Wickens Nestle
IdCountryDate
1000Russia2026-05-25
1001Italy2026-05-31
1002Italy2026-05-11
1003Australia2026-05-09
1004India2026-05-07
1005Argentina2026-05-06
1006United Kingdom2026-05-15
1007Japan2026-05-29
1008Australia2026-05-14
1009Germany2026-05-16
1010United Kingdom2026-05-29
1011Germany2026-05-28
1012Canada2026-05-09
1013Canada2026-05-10
1014Brazil2026-05-13
1015United Kingdom2026-06-04
1016Italy2026-05-26
1017Brazil2026-05-12
1018United Kingdom2026-06-03
1019Italy2026-05-24
1020Germany2026-05-20
1021Italy2026-06-04
1022France2026-05-23
1023Spain2026-05-28
1024Brazil2026-05-14
1025France2026-05-13
1026Japan2026-05-13
1027Brazil2026-05-07
1028Australia2026-05-16
1029France2026-05-20
1030Russia2026-05-17
1031United Kingdom2026-05-28
1032Brazil2026-05-14
1033Japan2026-05-06
1034Russia2026-05-20
1035India2026-05-20
1036Germany2026-05-21
1037Russia2026-05-23
1038Argentina2026-05-12
1039Russia2026-05-10
1040Spain2026-05-29
1041India2026-05-25
1042Argentina2026-05-19
1043Germany2026-05-28
1044Germany2026-05-29
1045Canada2026-05-19
1046Brazil2026-05-26
1047Canada2026-05-20
1048Germany2026-05-21
1049Canada2026-05-18

On-Demand Data

NameIdCountryDate
Mujtaba Nicka1000Spain2026-05-07
Morrow Ruta1001Germany2026-05-20
Deepesh Chui1002France2026-05-25
Deepesh Chui1003Canada2026-05-15
Mayumi Kolmetz1004United Kingdom2026-05-10
Maisha Rulapaugh1005Japan2026-05-07
Julie Stenseth1006Italy2026-05-20
Tony Foller1007United Kingdom2026-06-01
Octavia Malet1008Argentina2026-05-06
Claire Tollner1009Japan2026-05-30
Leja Caldarera1010Italy2026-05-22
Aruna Figeroa1011United Kingdom2026-06-01
Alejandro Perin1012Argentina2026-05-19
Johnson Sergi1013Germany2026-05-10
Tony Foller1014United Kingdom2026-05-06
Leja Caldarera1015Russia2026-05-30
Faith Gillian1016Brazil2026-05-15
Kaitlin Ostrosky1017India2026-05-12
Misaki Royster1018Australia2026-06-01
Kaitlin Ostrosky1019India2026-05-07
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Smith GlickSpainIoni Bowcher PROPOSAL
Maisha RulapaughFranceXuxue Feng PROPOSAL
Faith GillianItalyAnna Fali NEGOTIATION
Leon OldroydGermanyAsiya Javayant QUALIFIED
Aruna FigeroaSpainIoni Bowcher PROPOSAL
Mujtaba NickaArgentinaBernardo Dominic PROPOSAL
Mayumi KolmetzSpainBernardo Dominic PROPOSAL
Julie StensethBrazilStephen Shaw NEGOTIATION
James ButtCanadaAsiya Javayant NEW
Faith GillianSpainOnyama Limba NEGOTIATION
Greenwood BologniaBrazilAsiya Javayant PROPOSAL
Ivar PaprockiJapanIoni Bowcher UNQUALIFIED
Misaki RoysterIndiaAnna Fali NEW
Nicolas IturbideJapanAmy Elsner QUALIFIED
Sinclair WaycottAustraliaXuxue Feng PROPOSAL
Izzy GarufiJapanStephen Shaw PROPOSAL
Clifford RimBrazilElwin Sharvill NEGOTIATION
Francesco ShinkoBrazilOnyama Limba NEW
Munro FerenczBrazilOnyama Limba QUALIFIED
Leja CaldareraIndiaIvan Magalhaes PROPOSAL
Jennifer AmigonArgentinaStephen Shaw PROPOSAL
Jones VocelkaGermanyAmy Elsner UNQUALIFIED
Aika InouyeAustraliaBernardo Dominic RENEWAL
Aika InouyeCanadaXuxue Feng PROPOSAL
Silvio SlusarskiIndiaXuxue Feng NEGOTIATION
Mujtaba NickaAustraliaOnyama Limba NEGOTIATION
Jones VocelkaArgentinaIvan Magalhaes NEW
Darci PoquetteCanadaOnyama Limba NEW
David DarakjyArgentinaIvan Magalhaes NEGOTIATION
Maisha RulapaughAustraliaXuxue Feng UNQUALIFIED
Greenwood BologniaAustraliaAsiya Javayant NEW
Alejandro PerinCanadaAnna Fali RENEWAL
Maisha RulapaughUnited KingdomIoni Bowcher NEGOTIATION
Murillo MaletArgentinaXuxue Feng PROPOSAL
Aditya KuskoGermanyOnyama Limba NEGOTIATION
Juan WieserSpainStephen Shaw RENEWAL
Johnson SergiCanadaAnna Fali QUALIFIED
Ashley DoeFranceElwin Sharvill NEW
Johnson SergiRussiaAmy Elsner PROPOSAL
Julie StensethAustraliaAnna Fali RENEWAL

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