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
Juan WieserItalyXuxue Feng NEW
Silvio SlusarskiCanadaIvan Magalhaes NEGOTIATION
Kaitlin OstroskyIndiaXuxue Feng UNQUALIFIED
Ricardo GauchoUnited KingdomBernardo Dominic QUALIFIED
Ivar PaprockiAustraliaIvan Magalhaes NEW
Maisha RulapaughItalyIvan Magalhaes UNQUALIFIED
Leja CaldareraSpainXuxue Feng NEGOTIATION
Octavia MaletBrazilIvan Magalhaes QUALIFIED
Izzy GarufiCanadaIvan Magalhaes PROPOSAL
Arvin AlbaresJapanXuxue Feng NEW
Aika InouyeIndiaXuxue Feng QUALIFIED
Costa DilliardArgentinaBernardo Dominic QUALIFIED
Rodrigues CampainRussiaAmy Elsner NEW
Murillo MaletItalyElwin Sharvill RENEWAL
Arvin AlbaresBrazilStephen Shaw PROPOSAL
Silvio SlusarskiAustraliaAsiya Javayant NEGOTIATION
Alejandro PerinArgentinaIoni Bowcher UNQUALIFIED
Antonio CaudyIndiaXuxue Feng QUALIFIED
Faith GillianCanadaIoni Bowcher UNQUALIFIED
Octavia MaletUnited KingdomIoni Bowcher NEGOTIATION
James ButtIndiaIoni Bowcher UNQUALIFIED
Ricardo GauchoSpainStephen Shaw NEW
Ivar PaprockiBrazilIvan Magalhaes QUALIFIED
Octavia MaletArgentinaOnyama Limba NEGOTIATION
Octavia MaletIndiaStephen Shaw NEGOTIATION
Maisha RulapaughUnited KingdomAsiya Javayant PROPOSAL
Mayumi KolmetzBrazilBernardo Dominic PROPOSAL
Antonio CaudyBrazilElwin Sharvill NEGOTIATION
Salvatore StockhamBrazilStephen Shaw QUALIFIED
Salvatore StockhamUnited KingdomAmy Elsner RENEWAL
Clifford RimRussiaAmy Elsner QUALIFIED
Izzy GarufiItalyOnyama Limba NEW
Isabel BowleyItalyIoni Bowcher NEW
Leja CaldareraIndiaBernardo Dominic NEW
Juan WieserRussiaIoni Bowcher PROPOSAL
Chavez BriddickSpainElwin Sharvill NEGOTIATION
Darci PoquetteItalyOnyama Limba UNQUALIFIED
Kaitlin OstroskyItalyAsiya Javayant NEGOTIATION
Izzy GarufiItalyIvan Magalhaes UNQUALIFIED
Jeanfrancois VenereCanadaAnna Fali NEGOTIATION
Leon OldroydAustraliaBernardo Dominic NEGOTIATION
Aditya KuskoBrazilIoni Bowcher NEGOTIATION
Juan WieserGermanyAnna Fali NEGOTIATION
Jones VocelkaSpainIoni Bowcher PROPOSAL
Clifford RimItalyElwin Sharvill QUALIFIED
Leon OldroydAustraliaElwin Sharvill QUALIFIED
Clifford RimFranceAmy Elsner NEW
David DarakjyRussiaIoni Bowcher PROPOSAL
Mujtaba NickaCanadaAnna Fali UNQUALIFIED
Ashley DoeArgentinaAnna Fali QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Julie StensethIndiaStephen Shaw NEW
Arvin AlbaresArgentinaStephen Shaw NEGOTIATION
Johnson SergiBrazilBernardo Dominic NEW
Izzy GarufiArgentinaElwin Sharvill NEGOTIATION
Clifford RimUnited KingdomIvan Magalhaes NEW
Mujtaba NickaBrazilIoni Bowcher NEGOTIATION
Aditya KuskoItalyAmy Elsner NEGOTIATION
Wickens NestleFranceIoni Bowcher RENEWAL
Clifford RimAustraliaAsiya Javayant UNQUALIFIED
Francesco ShinkoIndiaXuxue Feng NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000David DarakjyItaly2026-04-03Truhlar And Truhlar Attys UNQUALIFIED51Onyama Limba
1001Claire TollnerFrance2026-03-29Printing Dimensions RENEWAL12Xuxue Feng
1002Maisha RulapaughFrance2026-04-09King, Christopher A Esq PROPOSAL62Ivan Magalhaes
1003Ivar PaprockiIndia2026-04-07Truhlar And Truhlar Attys PROPOSAL38Xuxue Feng
1004Ricardo GauchoBrazil2026-04-11Chanay, Jeffrey A Esq NEGOTIATION83Ivan Magalhaes
1005Greenwood BologniaBrazil2026-04-02Rousseaux, Michael Esq NEW65Xuxue Feng
1006Arvin AlbaresSpain2026-04-22Benton, John B Jr NEGOTIATION87Stephen Shaw
1007Maria MarrierUnited Kingdom2026-04-12Chemel, James L Cpa UNQUALIFIED33Stephen Shaw
1008Silvio SlusarskiGermany2026-04-03Truhlar And Truhlar Attys QUALIFIED13Onyama Limba
1009Juan WieserIndia2026-04-16King, Christopher A Esq NEGOTIATION47Amy Elsner
1010Kaitlin OstroskyBrazil2026-04-16King, Christopher A Esq NEW16Elwin Sharvill
1011Francesco ShinkoUnited Kingdom2026-04-23Chemel, James L Cpa NEW2Xuxue Feng
1012Jones VocelkaJapan2026-04-02Feiner Bros QUALIFIED10Asiya Javayant
1013Costa DilliardArgentina2026-04-16King, Christopher A Esq NEGOTIATION15Asiya Javayant
1014Chavez BriddickUnited Kingdom2026-04-16Feiner Bros NEW59Anna Fali
1015Misaki RoysterArgentina2026-04-26Rangoni Of Florence QUALIFIED34Anna Fali
1016Nicolas IturbideGermany2026-04-05Dorl, James J Esq RENEWAL74Stephen Shaw
1017Darci PoquetteCanada2026-04-23Rangoni Of Florence QUALIFIED26Xuxue Feng
1018Arvin AlbaresItaly2026-04-17Rousseaux, Michael Esq PROPOSAL95Asiya Javayant
1019Misaki RoysterBrazil2026-04-17Rangoni Of Florence UNQUALIFIED33Amy Elsner
1020Deepesh ChuiItaly2026-04-14Printing Dimensions UNQUALIFIED23Ivan Magalhaes
1021Morrow RutaBrazil2026-04-21Printing Dimensions QUALIFIED73Anna Fali
1022Isabel BowleyCanada2026-04-13King, Christopher A Esq NEW65Ioni Bowcher
1023Francesco ShinkoAustralia2026-03-29Chanay, Jeffrey A Esq NEGOTIATION35Asiya Javayant
1024Juan WieserBrazil2026-04-14Chanay, Jeffrey A Esq QUALIFIED48Elwin Sharvill
1025Kadeem FlosiJapan2026-04-14Morlong Associates QUALIFIED24Onyama Limba
1026Greenwood BologniaCanada2026-04-15Morlong Associates NEW76Amy Elsner
1027Chavez BriddickJapan2026-03-28Printing Dimensions PROPOSAL10Anna Fali
1028Tony FollerCanada2026-04-26Chanay, Jeffrey A Esq QUALIFIED79Onyama Limba
1029Greenwood BologniaIndia2026-04-09Commercial Press NEW45Ivan Magalhaes
1030Alejandro PerinJapan2026-03-30Rousseaux, Michael Esq NEGOTIATION71Amy Elsner
1031Tony FollerCanada2026-04-06Feltz Printing Service PROPOSAL57Xuxue Feng
1032Kaitlin OstroskyIndia2026-04-03Commercial Press NEGOTIATION30Ioni Bowcher
1033Deepesh ChuiFrance2026-04-16Benton, John B Jr PROPOSAL71Anna Fali
1034Mujtaba NickaAustralia2026-04-22Benton, John B Jr QUALIFIED81Onyama Limba
1035Tony FollerBrazil2026-04-11Chemel, James L Cpa UNQUALIFIED54Xuxue Feng
1036Jefferson SchemmerJapan2026-04-26Chemel, James L Cpa QUALIFIED32Amy Elsner
1037David DarakjyRussia2026-04-21Commercial Press QUALIFIED85Elwin Sharvill
1038Salvatore StockhamSpain2026-03-28King, Christopher A Esq UNQUALIFIED92Stephen Shaw
1039Tony FollerBrazil2026-04-11Feltz Printing Service RENEWAL16Onyama Limba
1040Munro FerenczGermany2026-04-21Buckley Miller Wright QUALIFIED99Bernardo Dominic
1041Izzy GarufiArgentina2026-04-05Commercial Press PROPOSAL3Stephen Shaw
1042Maria MarrierIndia2026-03-28King, Christopher A Esq RENEWAL99Bernardo Dominic
1043Ivar PaprockiIndia2026-04-26Rousseaux, Michael Esq NEGOTIATION30Ivan Magalhaes
1044Johnson SergiArgentina2026-04-13Chemel, James L Cpa PROPOSAL77Anna Fali
1045James ButtRussia2026-04-23Benton, John B Jr PROPOSAL85Asiya Javayant
1046Kaitlin OstroskyUnited Kingdom2026-04-23King, Christopher A Esq UNQUALIFIED41Anna Fali
1047Ricardo GauchoJapan2026-04-01Chapman, Ross E Esq QUALIFIED35Bernardo Dominic
1048Salvatore StockhamSpain2026-03-31Printing Dimensions NEGOTIATION70Bernardo Dominic
1049Aditya KuskoAustralia2026-03-28Buckley Miller Wright NEGOTIATION76Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Nicolas IturbideAustraliaBernardo Dominic NEGOTIATION
Morrow RutaSpainBernardo Dominic PROPOSAL
Kadeem FlosiSpainElwin Sharvill NEW
Ivar PaprockiArgentinaOnyama Limba QUALIFIED
Silvio SlusarskiFranceIoni Bowcher NEGOTIATION
Adams MorascaUnited KingdomElwin Sharvill UNQUALIFIED
Munro FerenczFranceIvan Magalhaes RENEWAL
Smith GlickArgentinaIvan Magalhaes PROPOSAL
Julie StensethFranceAmy Elsner QUALIFIED
Morrow RutaArgentinaAsiya Javayant NEGOTIATION
Maisha RulapaughGermanyAmy Elsner UNQUALIFIED
Clifford RimBrazilElwin Sharvill NEGOTIATION
Jones VocelkaItalyOnyama Limba NEW
Ashley DoeFranceIoni Bowcher NEW
Sinclair WaycottAustraliaAmy Elsner UNQUALIFIED
Kaitlin OstroskyBrazilAnna Fali QUALIFIED
Emily WhobreyIndiaStephen Shaw RENEWAL
Rodrigues CampainFranceIvan Magalhaes NEGOTIATION
Arvin AlbaresGermanyElwin Sharvill NEGOTIATION
Juan WieserCanadaStephen Shaw NEGOTIATION
Arvin AlbaresBrazilBernardo Dominic UNQUALIFIED
Adams MorascaUnited KingdomAsiya Javayant RENEWAL
Smith GlickRussiaStephen Shaw UNQUALIFIED
Adams MorascaAustraliaXuxue Feng NEGOTIATION
Leon OldroydIndiaAmy Elsner PROPOSAL
Izzy GarufiAustraliaElwin Sharvill QUALIFIED
Deepesh ChuiRussiaBernardo Dominic UNQUALIFIED
Ricardo GauchoRussiaAsiya Javayant UNQUALIFIED
Leja CaldareraCanadaStephen Shaw QUALIFIED
Chavez BriddickIndiaStephen Shaw PROPOSAL
Nicolas IturbideItalyBernardo Dominic QUALIFIED
Octavia MaletBrazilBernardo Dominic RENEWAL
Rodrigues CampainRussiaElwin Sharvill NEW
Ricardo GauchoJapanElwin Sharvill NEW
Arvin AlbaresGermanyAmy Elsner PROPOSAL
Adams MorascaUnited KingdomAnna Fali NEGOTIATION
Alejandro PerinJapanElwin Sharvill UNQUALIFIED
Tony FollerGermanyXuxue Feng PROPOSAL
Maria MarrierCanadaIvan Magalhaes QUALIFIED
Mayumi KolmetzUnited KingdomOnyama Limba UNQUALIFIED
Alejandro PerinGermanyElwin Sharvill UNQUALIFIED
Leja CaldareraArgentinaIvan Magalhaes NEGOTIATION
Alejandro PerinFranceElwin Sharvill PROPOSAL
Maria MarrierUnited KingdomBernardo Dominic QUALIFIED
Jeanfrancois VenereIndiaAmy Elsner PROPOSAL
Silvio SlusarskiSpainXuxue Feng PROPOSAL
Emily WhobreyBrazilAmy Elsner PROPOSAL
Ashley DoeIndiaOnyama Limba NEW
Stacey MacleadSpainBernardo Dominic NEW
Juan WieserIndiaXuxue Feng NEGOTIATION
Frozen Columns
Name
Sinclair Waycott
Aruna Figeroa
Mayumi Kolmetz
Claire Tollner
Ivar Paprocki
Deepesh Chui
Ricardo Gaucho
Darci Poquette
David Darakjy
Alejandro Perin
Izzy Garufi
Aditya Kusko
Wickens Nestle
Smith Glick
Mujtaba Nicka
Ricardo Gaucho
Salvatore Stockham
Ricardo Gaucho
Darci Poquette
Clifford Rim
Cody Saylors
Ashley Doe
Misaki Royster
Deepesh Chui
Antonio Caudy
Leja Caldarera
Jeanfrancois Venere
Emily Whobrey
Cody Saylors
Rodrigues Campain
Mujtaba Nicka
Juan Wieser
Kaitlin Ostrosky
Jones Vocelka
Deepesh Chui
Morrow Ruta
Arvin Albares
Ivar Paprocki
Clifford Rim
Stacey Maclead
Greenwood Bolognia
Leja Caldarera
Maria Marrier
Julie Stenseth
Juan Wieser
Adams Morasca
Clifford Rim
Claire Tollner
Faith Gillian
Jones Vocelka
IdCountryDate
1000Russia2026-03-30
1001India2026-04-26
1002United Kingdom2026-04-07
1003Japan2026-04-03
1004Spain2026-04-21
1005Argentina2026-04-21
1006Brazil2026-04-23
1007Canada2026-04-17
1008Brazil2026-04-02
1009Germany2026-03-29
1010France2026-04-03
1011Italy2026-04-06
1012United Kingdom2026-04-20
1013France2026-03-29
1014United Kingdom2026-03-31
1015Japan2026-03-28
1016Spain2026-04-21
1017United Kingdom2026-04-05
1018Spain2026-04-15
1019United Kingdom2026-04-14
1020Russia2026-04-09
1021Japan2026-04-04
1022France2026-04-08
1023United Kingdom2026-04-07
1024France2026-04-18
1025Canada2026-04-17
1026India2026-04-23
1027Australia2026-04-16
1028Brazil2026-04-09
1029Australia2026-03-31
1030Germany2026-04-20
1031India2026-04-20
1032India2026-04-06
1033Canada2026-04-15
1034France2026-04-16
1035India2026-04-05
1036Spain2026-04-06
1037France2026-04-02
1038Germany2026-04-06
1039Japan2026-04-08
1040Canada2026-04-06
1041Brazil2026-04-26
1042France2026-04-19
1043Spain2026-04-17
1044Argentina2026-04-03
1045Brazil2026-04-01
1046Brazil2026-04-07
1047Argentina2026-04-10
1048Russia2026-04-12
1049India2026-04-05

On-Demand Data

NameIdCountryDate
Greenwood Bolognia1000Australia2026-04-06
Sinclair Waycott1001Australia2026-04-05
Leon Oldroyd1002Australia2026-04-13
Alejandro Perin1003Italy2026-03-29
Sinclair Waycott1004Italy2026-04-01
Antonio Caudy1005Russia2026-04-22
Cody Saylors1006Italy2026-04-19
Jefferson Schemmer1007Italy2026-03-28
Arvin Albares1008France2026-03-31
Izzy Garufi1009Australia2026-04-23
Maisha Rulapaugh1010Brazil2026-04-05
Maria Marrier1011India2026-04-19
Kaitlin Ostrosky1012India2026-04-14
Stacey Maclead1013Italy2026-04-11
Silvio Slusarski1014Canada2026-03-30
Izzy Garufi1015Russia2026-04-18
Faith Gillian1016Japan2026-04-15
Ashley Doe1017Australia2026-04-13
Smith Glick1018Brazil2026-04-10
Aditya Kusko1019Russia2026-04-04
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Octavia MaletUnited KingdomElwin Sharvill UNQUALIFIED
Arvin AlbaresItalyAmy Elsner QUALIFIED
Aruna FigeroaUnited KingdomAsiya Javayant NEW
Jennifer AmigonArgentinaAnna Fali NEW
Nicolas IturbideGermanyAsiya Javayant NEW
Alejandro PerinRussiaOnyama Limba QUALIFIED
Aruna FigeroaArgentinaAmy Elsner NEW
Murillo MaletFranceXuxue Feng NEW
Smith GlickFranceAmy Elsner QUALIFIED
Johnson SergiCanadaBernardo Dominic NEW
Faith GillianIndiaIoni Bowcher QUALIFIED
Juan WieserAustraliaXuxue Feng NEW
Juan WieserSpainBernardo Dominic QUALIFIED
Darci PoquetteJapanElwin Sharvill RENEWAL
Izzy GarufiFranceXuxue Feng NEGOTIATION
Kadeem FlosiFranceStephen Shaw RENEWAL
Francesco ShinkoBrazilIvan Magalhaes PROPOSAL
Emily WhobreyAustraliaAsiya Javayant QUALIFIED
Costa DilliardRussiaAnna Fali QUALIFIED
Costa DilliardRussiaElwin Sharvill NEW
Ricardo GauchoArgentinaAnna Fali QUALIFIED
Izzy GarufiCanadaElwin Sharvill UNQUALIFIED
Wickens NestleCanadaBernardo Dominic UNQUALIFIED
Emily WhobreyFranceAsiya Javayant RENEWAL
Julie StensethSpainIoni Bowcher QUALIFIED
Maria MarrierSpainAnna Fali NEGOTIATION
Adams MorascaFranceAsiya Javayant RENEWAL
Aruna FigeroaItalyAmy Elsner UNQUALIFIED
Tony FollerJapanIoni Bowcher PROPOSAL
Francesco ShinkoFranceXuxue Feng UNQUALIFIED
Ivar PaprockiArgentinaAmy Elsner NEGOTIATION
Aika InouyeAustraliaAsiya Javayant PROPOSAL
Isabel BowleyIndiaAmy Elsner NEW
Nicolas IturbideUnited KingdomOnyama Limba NEGOTIATION
Morrow RutaSpainAsiya Javayant PROPOSAL
Adams MorascaItalyBernardo Dominic RENEWAL
Costa DilliardSpainAnna Fali NEW
Jennifer AmigonItalyElwin Sharvill RENEWAL
Mayumi KolmetzCanadaXuxue Feng RENEWAL
Morrow RutaArgentinaElwin Sharvill 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>