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
Greenwood BologniaAustraliaAsiya Javayant UNQUALIFIED
Mujtaba NickaGermanyAnna Fali QUALIFIED
Darci PoquetteUnited KingdomAnna Fali NEGOTIATION
Ashley DoeArgentinaAnna Fali QUALIFIED
Francesco ShinkoRussiaAsiya Javayant UNQUALIFIED
Arvin AlbaresAustraliaAnna Fali UNQUALIFIED
Munro FerenczFranceOnyama Limba QUALIFIED
Ashley DoeCanadaStephen Shaw UNQUALIFIED
Leja CaldareraCanadaAmy Elsner NEW
Jones VocelkaArgentinaAmy Elsner PROPOSAL
Aruna FigeroaSpainAnna Fali NEGOTIATION
Aruna FigeroaUnited KingdomXuxue Feng RENEWAL
Mujtaba NickaIndiaAsiya Javayant UNQUALIFIED
Kaitlin OstroskyRussiaIvan Magalhaes QUALIFIED
Rodrigues CampainFranceBernardo Dominic UNQUALIFIED
Sinclair WaycottFranceXuxue Feng UNQUALIFIED
Leon OldroydArgentinaIvan Magalhaes NEGOTIATION
Jeanfrancois VenereCanadaIvan Magalhaes PROPOSAL
Jefferson SchemmerJapanAsiya Javayant NEGOTIATION
Octavia MaletRussiaBernardo Dominic UNQUALIFIED
Faith GillianItalyElwin Sharvill QUALIFIED
Morrow RutaRussiaAnna Fali NEW
Jennifer AmigonAustraliaIvan Magalhaes PROPOSAL
Sinclair WaycottItalyOnyama Limba NEGOTIATION
Chavez BriddickAustraliaAmy Elsner QUALIFIED
Adams MorascaItalyAmy Elsner QUALIFIED
Alejandro PerinAustraliaAmy Elsner UNQUALIFIED
Deepesh ChuiArgentinaAnna Fali PROPOSAL
Silvio SlusarskiFranceIvan Magalhaes QUALIFIED
Octavia MaletCanadaAsiya Javayant UNQUALIFIED
Darci PoquetteItalyIoni Bowcher NEW
Izzy GarufiAustraliaElwin Sharvill NEW
James ButtUnited KingdomAmy Elsner QUALIFIED
Darci PoquetteAustraliaAmy Elsner NEW
Izzy GarufiCanadaAmy Elsner NEW
Ashley DoeGermanyIvan Magalhaes NEGOTIATION
Chavez BriddickItalyBernardo Dominic NEGOTIATION
Julie StensethItalyAmy Elsner UNQUALIFIED
Leja CaldareraGermanyBernardo Dominic NEGOTIATION
Adams MorascaBrazilElwin Sharvill RENEWAL
Jones VocelkaCanadaOnyama Limba NEGOTIATION
Jennifer AmigonGermanyBernardo Dominic UNQUALIFIED
Tony FollerBrazilAnna Fali NEGOTIATION
Greenwood BologniaBrazilIvan Magalhaes UNQUALIFIED
Darci PoquetteFranceAnna Fali NEGOTIATION
Murillo MaletIndiaOnyama Limba UNQUALIFIED
Munro FerenczRussiaElwin Sharvill PROPOSAL
Adams MorascaUnited KingdomAmy Elsner NEGOTIATION
Tony FollerFranceIoni Bowcher QUALIFIED
Aruna FigeroaArgentinaIoni Bowcher NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Cody SaylorsCanadaElwin Sharvill NEGOTIATION
Morrow RutaCanadaAnna Fali NEW
Maisha RulapaughUnited KingdomAmy Elsner UNQUALIFIED
Munro FerenczUnited KingdomAmy Elsner UNQUALIFIED
Adams MorascaRussiaBernardo Dominic NEGOTIATION
Ivar PaprockiRussiaBernardo Dominic NEGOTIATION
Claire TollnerArgentinaBernardo Dominic QUALIFIED
Emily WhobreyFranceIvan Magalhaes RENEWAL
Tony FollerCanadaIvan Magalhaes RENEWAL
Leja CaldareraBrazilXuxue Feng NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Antonio CaudyFrance2026-04-30Rangoni Of Florence QUALIFIED72Asiya Javayant
1001Greenwood BologniaIndia2026-04-12Buckley Miller Wright QUALIFIED52Anna Fali
1002Munro FerenczAustralia2026-04-07Dorl, James J Esq UNQUALIFIED47Xuxue Feng
1003Adams MorascaItaly2026-04-20Chemel, James L Cpa NEW43Stephen Shaw
1004Munro FerenczUnited Kingdom2026-04-20Truhlar And Truhlar Attys PROPOSAL44Amy Elsner
1005Aditya KuskoUnited Kingdom2026-04-30King, Christopher A Esq QUALIFIED34Xuxue Feng
1006Aruna FigeroaSpain2026-05-02Chemel, James L Cpa RENEWAL44Stephen Shaw
1007Antonio CaudyItaly2026-05-01Printing Dimensions NEGOTIATION5Anna Fali
1008Chavez BriddickGermany2026-04-17Chanay, Jeffrey A Esq NEW88Amy Elsner
1009Smith GlickIndia2026-04-03Dorl, James J Esq PROPOSAL73Anna Fali
1010Leon OldroydAustralia2026-04-21Rousseaux, Michael Esq QUALIFIED31Ivan Magalhaes
1011Izzy GarufiBrazil2026-04-17King, Christopher A Esq NEW27Elwin Sharvill
1012Smith GlickUnited Kingdom2026-04-25Chapman, Ross E Esq PROPOSAL45Stephen Shaw
1013Jefferson SchemmerIndia2026-05-01Printing Dimensions UNQUALIFIED70Anna Fali
1014Juan WieserFrance2026-04-25Dorl, James J Esq UNQUALIFIED88Ioni Bowcher
1015Nicolas IturbideAustralia2026-04-24King, Christopher A Esq UNQUALIFIED80Amy Elsner
1016Jones VocelkaUnited Kingdom2026-04-07Rousseaux, Michael Esq QUALIFIED15Xuxue Feng
1017Murillo MaletRussia2026-04-18Chanay, Jeffrey A Esq NEGOTIATION63Asiya Javayant
1018Wickens NestleItaly2026-04-27King, Christopher A Esq NEW3Xuxue Feng
1019Johnson SergiRussia2026-05-02Benton, John B Jr UNQUALIFIED21Anna Fali
1020Jennifer AmigonBrazil2026-04-29Dorl, James J Esq UNQUALIFIED25Asiya Javayant
1021Ricardo GauchoCanada2026-04-06Feiner Bros NEW55Ivan Magalhaes
1022Cody SaylorsItaly2026-04-21Benton, John B Jr PROPOSAL59Stephen Shaw
1023Mujtaba NickaRussia2026-04-03Commercial Press PROPOSAL80Anna Fali
1024Silvio SlusarskiUnited Kingdom2026-04-11Commercial Press NEW74Ivan Magalhaes
1025James ButtItaly2026-04-08Dorl, James J Esq NEW82Onyama Limba
1026Jefferson SchemmerArgentina2026-04-10Feiner Bros NEGOTIATION29Amy Elsner
1027Aika InouyeJapan2026-04-18Chemel, James L Cpa QUALIFIED15Onyama Limba
1028Leja CaldareraCanada2026-04-30Rangoni Of Florence QUALIFIED28Onyama Limba
1029Jennifer AmigonItaly2026-04-19Dorl, James J Esq QUALIFIED31Xuxue Feng
1030David DarakjyFrance2026-04-30King, Christopher A Esq UNQUALIFIED83Xuxue Feng
1031Munro FerenczBrazil2026-05-01Commercial Press RENEWAL31Anna Fali
1032Munro FerenczRussia2026-04-19Buckley Miller Wright NEGOTIATION65Bernardo Dominic
1033Leon OldroydBrazil2026-04-29Feltz Printing Service NEGOTIATION4Ioni Bowcher
1034Tony FollerUnited Kingdom2026-04-23Morlong Associates RENEWAL58Anna Fali
1035Munro FerenczUnited Kingdom2026-05-01Chanay, Jeffrey A Esq NEGOTIATION36Bernardo Dominic
1036Aditya KuskoRussia2026-04-25Chapman, Ross E Esq QUALIFIED14Ivan Magalhaes
1037Aditya KuskoFrance2026-04-29Rousseaux, Michael Esq NEGOTIATION50Amy Elsner
1038Rodrigues CampainRussia2026-04-06Chanay, Jeffrey A Esq RENEWAL30Amy Elsner
1039Octavia MaletCanada2026-05-02King, Christopher A Esq NEW82Anna Fali
1040Jefferson SchemmerFrance2026-04-18Rangoni Of Florence QUALIFIED52Ioni Bowcher
1041Aruna FigeroaItaly2026-04-18Truhlar And Truhlar Attys NEW56Stephen Shaw
1042Aika InouyeFrance2026-04-12Printing Dimensions NEGOTIATION65Ivan Magalhaes
1043Jones VocelkaJapan2026-05-02Rousseaux, Michael Esq NEGOTIATION26Anna Fali
1044Stacey MacleadAustralia2026-04-24Chapman, Ross E Esq NEGOTIATION19Elwin Sharvill
1045Deepesh ChuiBrazil2026-04-10Benton, John B Jr QUALIFIED15Amy Elsner
1046Ricardo GauchoBrazil2026-04-17King, Christopher A Esq RENEWAL34Asiya Javayant
1047Nicolas IturbideJapan2026-04-13Buckley Miller Wright QUALIFIED75Amy Elsner
1048Izzy GarufiJapan2026-05-01King, Christopher A Esq NEW68Elwin Sharvill
1049Salvatore StockhamFrance2026-04-04Benton, John B Jr RENEWAL80Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Morrow RutaJapanElwin Sharvill PROPOSAL
Antonio CaudyArgentinaAsiya Javayant RENEWAL
Adams MorascaCanadaBernardo Dominic UNQUALIFIED
Ivar PaprockiSpainIoni Bowcher UNQUALIFIED
James ButtIndiaIvan Magalhaes NEW
Stacey MacleadArgentinaAsiya Javayant NEW
Julie StensethJapanIvan Magalhaes RENEWAL
Darci PoquetteIndiaAmy Elsner UNQUALIFIED
Sinclair WaycottItalyXuxue Feng PROPOSAL
Mayumi KolmetzArgentinaAmy Elsner QUALIFIED
Rodrigues CampainIndiaStephen Shaw RENEWAL
Jefferson SchemmerRussiaAmy Elsner NEW
Salvatore StockhamSpainStephen Shaw RENEWAL
Jennifer AmigonSpainIvan Magalhaes NEGOTIATION
Kadeem FlosiBrazilElwin Sharvill RENEWAL
Smith GlickUnited KingdomStephen Shaw UNQUALIFIED
Emily WhobreyCanadaStephen Shaw UNQUALIFIED
Jeanfrancois VenereGermanyBernardo Dominic UNQUALIFIED
Murillo MaletSpainAsiya Javayant PROPOSAL
Aruna FigeroaUnited KingdomOnyama Limba NEW
David DarakjyUnited KingdomXuxue Feng QUALIFIED
Leon OldroydRussiaOnyama Limba QUALIFIED
Greenwood BologniaCanadaAmy Elsner RENEWAL
Deepesh ChuiArgentinaAmy Elsner NEGOTIATION
Aika InouyeItalyOnyama Limba PROPOSAL
Nicolas IturbideBrazilAsiya Javayant UNQUALIFIED
Nicolas IturbideAustraliaXuxue Feng QUALIFIED
Clifford RimFranceAsiya Javayant PROPOSAL
Aruna FigeroaAustraliaIvan Magalhaes PROPOSAL
Mayumi KolmetzArgentinaStephen Shaw NEGOTIATION
Ivar PaprockiIndiaStephen Shaw NEGOTIATION
Adams MorascaItalyAmy Elsner RENEWAL
Jefferson SchemmerCanadaStephen Shaw NEW
Faith GillianAustraliaAnna Fali QUALIFIED
Costa DilliardGermanyBernardo Dominic UNQUALIFIED
Munro FerenczUnited KingdomAnna Fali RENEWAL
Isabel BowleySpainIoni Bowcher NEW
Chavez BriddickArgentinaBernardo Dominic QUALIFIED
Mayumi KolmetzSpainXuxue Feng RENEWAL
Leon OldroydSpainIvan Magalhaes RENEWAL
Kadeem FlosiJapanElwin Sharvill UNQUALIFIED
Isabel BowleyRussiaAsiya Javayant NEGOTIATION
Maria MarrierCanadaIvan Magalhaes NEW
Aika InouyeCanadaOnyama Limba UNQUALIFIED
Munro FerenczFranceAnna Fali UNQUALIFIED
Jeanfrancois VenereSpainAnna Fali PROPOSAL
Greenwood BologniaCanadaBernardo Dominic RENEWAL
Maisha RulapaughAustraliaAnna Fali NEW
Aika InouyeRussiaStephen Shaw NEGOTIATION
Faith GillianCanadaAsiya Javayant RENEWAL
Frozen Columns
Name
Aditya Kusko
Octavia Malet
Aika Inouye
Aika Inouye
Kaitlin Ostrosky
Emily Whobrey
Cody Saylors
Munro Ferencz
Faith Gillian
Juan Wieser
Munro Ferencz
Salvatore Stockham
Leja Caldarera
Aika Inouye
Costa Dilliard
Jennifer Amigon
Johnson Sergi
Octavia Malet
Francesco Shinko
David Darakjy
Ivar Paprocki
Murillo Malet
Antonio Caudy
Adams Morasca
Adams Morasca
Greenwood Bolognia
Morrow Ruta
Silvio Slusarski
Ashley Doe
Jennifer Amigon
Mujtaba Nicka
Johnson Sergi
Ashley Doe
Kaitlin Ostrosky
David Darakjy
Salvatore Stockham
Alejandro Perin
Jeanfrancois Venere
Silvio Slusarski
Aditya Kusko
Misaki Royster
Greenwood Bolognia
Jefferson Schemmer
Kaitlin Ostrosky
Smith Glick
Johnson Sergi
Costa Dilliard
Jennifer Amigon
Isabel Bowley
Claire Tollner
IdCountryDate
1000Australia2026-04-08
1001Australia2026-04-10
1002Italy2026-04-06
1003Australia2026-04-20
1004Germany2026-04-13
1005Canada2026-04-30
1006Italy2026-04-05
1007Germany2026-04-26
1008United Kingdom2026-04-28
1009India2026-05-01
1010Brazil2026-04-15
1011Brazil2026-04-20
1012Brazil2026-04-05
1013Russia2026-04-25
1014Australia2026-04-27
1015France2026-04-15
1016Russia2026-04-13
1017Argentina2026-04-15
1018Brazil2026-04-30
1019France2026-04-30
1020Italy2026-04-05
1021Brazil2026-04-21
1022Brazil2026-04-13
1023Spain2026-04-12
1024Spain2026-04-11
1025India2026-04-16
1026India2026-04-26
1027Russia2026-04-09
1028Spain2026-04-10
1029Canada2026-04-14
1030Spain2026-04-17
1031India2026-04-11
1032Japan2026-04-13
1033Italy2026-04-11
1034France2026-04-15
1035Italy2026-04-25
1036Italy2026-04-16
1037Spain2026-04-25
1038Japan2026-05-01
1039India2026-04-23
1040Australia2026-04-21
1041Spain2026-04-17
1042Brazil2026-04-15
1043Australia2026-04-17
1044Argentina2026-04-23
1045Italy2026-04-04
1046Germany2026-04-20
1047Japan2026-04-06
1048Argentina2026-04-30
1049Italy2026-04-17

On-Demand Data

NameIdCountryDate
Jones Vocelka1000Italy2026-04-16
Arvin Albares1001Brazil2026-05-02
Jefferson Schemmer1002Germany2026-04-20
Emily Whobrey1003Australia2026-05-02
Izzy Garufi1004India2026-04-27
Silvio Slusarski1005United Kingdom2026-04-18
Ricardo Gaucho1006United Kingdom2026-04-08
Juan Wieser1007Italy2026-05-01
Ashley Doe1008United Kingdom2026-04-14
Smith Glick1009United Kingdom2026-04-19
Rodrigues Campain1010Italy2026-04-23
Juan Wieser1011Russia2026-05-02
Costa Dilliard1012Spain2026-04-09
Aruna Figeroa1013Australia2026-04-05
Deepesh Chui1014India2026-04-06
Nicolas Iturbide1015Argentina2026-04-13
David Darakjy1016France2026-04-21
James Butt1017Canada2026-04-03
Julie Stenseth1018Russia2026-04-28
Ivar Paprocki1019Spain2026-04-18
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Juan WieserSpainStephen Shaw PROPOSAL
Ashley DoeAustraliaXuxue Feng UNQUALIFIED
Octavia MaletJapanAmy Elsner RENEWAL
Chavez BriddickBrazilXuxue Feng QUALIFIED
Kaitlin OstroskyUnited KingdomAmy Elsner PROPOSAL
Aruna FigeroaGermanyAmy Elsner RENEWAL
Jennifer AmigonIndiaIoni Bowcher UNQUALIFIED
Clifford RimRussiaXuxue Feng QUALIFIED
Salvatore StockhamGermanyAnna Fali QUALIFIED
Claire TollnerUnited KingdomIvan Magalhaes NEW
Octavia MaletSpainXuxue Feng UNQUALIFIED
Octavia MaletBrazilAsiya Javayant NEGOTIATION
Aditya KuskoFranceIvan Magalhaes PROPOSAL
Maisha RulapaughJapanBernardo Dominic RENEWAL
Tony FollerJapanOnyama Limba QUALIFIED
Jennifer AmigonGermanyAsiya Javayant UNQUALIFIED
Jeanfrancois VenereItalyAmy Elsner NEW
Munro FerenczJapanAnna Fali NEW
Octavia MaletItalyIoni Bowcher QUALIFIED
Adams MorascaSpainAnna Fali QUALIFIED
Clifford RimIndiaAnna Fali UNQUALIFIED
Arvin AlbaresUnited KingdomAnna Fali PROPOSAL
Leja CaldareraArgentinaAnna Fali PROPOSAL
Jones VocelkaGermanyIoni Bowcher NEW
Isabel BowleyJapanStephen Shaw NEGOTIATION
Murillo MaletArgentinaStephen Shaw NEW
Cody SaylorsGermanyAsiya Javayant PROPOSAL
Misaki RoysterBrazilOnyama Limba PROPOSAL
Octavia MaletRussiaIvan Magalhaes NEW
Claire TollnerArgentinaStephen Shaw UNQUALIFIED
Faith GillianBrazilOnyama Limba NEW
Nicolas IturbideIndiaIvan Magalhaes RENEWAL
Misaki RoysterRussiaBernardo Dominic PROPOSAL
Jefferson SchemmerJapanElwin Sharvill QUALIFIED
Faith GillianItalyAmy Elsner QUALIFIED
Cody SaylorsUnited KingdomAmy Elsner NEW
David DarakjySpainElwin Sharvill PROPOSAL
Silvio SlusarskiUnited KingdomXuxue Feng NEW
Stacey MacleadCanadaAmy Elsner QUALIFIED
Maria MarrierGermanyAnna Fali 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>