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
Nicolas IturbideIndiaAmy Elsner RENEWAL
Octavia MaletAustraliaStephen Shaw QUALIFIED
Jennifer AmigonJapanIvan Magalhaes RENEWAL
Antonio CaudyCanadaElwin Sharvill QUALIFIED
Ashley DoeAustraliaIoni Bowcher NEW
David DarakjyBrazilAsiya Javayant PROPOSAL
Izzy GarufiUnited KingdomStephen Shaw PROPOSAL
Jones VocelkaIndiaElwin Sharvill QUALIFIED
Murillo MaletIndiaIoni Bowcher PROPOSAL
Maria MarrierGermanyAnna Fali QUALIFIED
Munro FerenczUnited KingdomStephen Shaw PROPOSAL
Jeanfrancois VenereArgentinaIvan Magalhaes NEGOTIATION
Ashley DoeUnited KingdomIvan Magalhaes PROPOSAL
Chavez BriddickUnited KingdomIoni Bowcher QUALIFIED
Cody SaylorsIndiaElwin Sharvill UNQUALIFIED
Aruna FigeroaSpainIoni Bowcher QUALIFIED
Nicolas IturbideUnited KingdomAsiya Javayant UNQUALIFIED
Rodrigues CampainBrazilElwin Sharvill RENEWAL
Claire TollnerIndiaAsiya Javayant RENEWAL
Deepesh ChuiGermanyBernardo Dominic QUALIFIED
Tony FollerIndiaStephen Shaw QUALIFIED
Morrow RutaJapanAnna Fali UNQUALIFIED
Izzy GarufiAustraliaAnna Fali NEGOTIATION
Mayumi KolmetzBrazilOnyama Limba RENEWAL
Johnson SergiArgentinaIoni Bowcher UNQUALIFIED
Claire TollnerAustraliaOnyama Limba NEGOTIATION
Emily WhobreyJapanAsiya Javayant PROPOSAL
Octavia MaletAustraliaBernardo Dominic RENEWAL
Greenwood BologniaBrazilBernardo Dominic PROPOSAL
Antonio CaudyCanadaIoni Bowcher PROPOSAL
Jeanfrancois VenereGermanyOnyama Limba QUALIFIED
Jennifer AmigonIndiaElwin Sharvill PROPOSAL
Nicolas IturbideItalyAsiya Javayant UNQUALIFIED
Alejandro PerinCanadaAnna Fali PROPOSAL
Greenwood BologniaJapanOnyama Limba NEGOTIATION
Smith GlickJapanOnyama Limba PROPOSAL
Munro FerenczUnited KingdomStephen Shaw RENEWAL
Rodrigues CampainFranceOnyama Limba PROPOSAL
Clifford RimSpainAmy Elsner NEGOTIATION
Cody SaylorsItalyElwin Sharvill RENEWAL
Misaki RoysterSpainBernardo Dominic QUALIFIED
Leon OldroydCanadaAnna Fali QUALIFIED
Jennifer AmigonGermanyIvan Magalhaes QUALIFIED
Kaitlin OstroskyCanadaOnyama Limba RENEWAL
Leon OldroydBrazilOnyama Limba UNQUALIFIED
Leja CaldareraBrazilStephen Shaw PROPOSAL
David DarakjyUnited KingdomAnna Fali NEGOTIATION
Maisha RulapaughItalyAmy Elsner RENEWAL
Tony FollerSpainElwin Sharvill UNQUALIFIED
Stacey MacleadUnited KingdomXuxue Feng NEW
Horizontal
NameCountryRepresentativeStatus
Emily WhobreyAustraliaXuxue Feng PROPOSAL
Morrow RutaItalyElwin Sharvill UNQUALIFIED
Juan WieserJapanAmy Elsner NEW
Jefferson SchemmerGermanyAsiya Javayant QUALIFIED
Ricardo GauchoRussiaOnyama Limba NEGOTIATION
Kadeem FlosiSpainBernardo Dominic UNQUALIFIED
Maisha RulapaughIndiaElwin Sharvill RENEWAL
Emily WhobreyAustraliaAnna Fali NEGOTIATION
Adams MorascaRussiaXuxue Feng QUALIFIED
Wickens NestleBrazilAsiya Javayant QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jennifer AmigonIndia2025-09-24Commercial Press PROPOSAL55Onyama Limba
1001Deepesh ChuiItaly2025-09-14Dorl, James J Esq RENEWAL3Onyama Limba
1002Adams MorascaSpain2025-09-14Buckley Miller Wright NEGOTIATION84Ivan Magalhaes
1003Leja CaldareraSpain2025-09-19Chemel, James L Cpa UNQUALIFIED90Bernardo Dominic
1004Aruna FigeroaJapan2025-09-14Benton, John B Jr NEGOTIATION68Ioni Bowcher
1005James ButtArgentina2025-09-29Chanay, Jeffrey A Esq UNQUALIFIED73Bernardo Dominic
1006Isabel BowleyBrazil2025-10-10Dorl, James J Esq QUALIFIED72Bernardo Dominic
1007Darci PoquetteGermany2025-10-08Benton, John B Jr NEGOTIATION38Elwin Sharvill
1008Stacey MacleadIndia2025-09-27Truhlar And Truhlar Attys QUALIFIED22Onyama Limba
1009Claire TollnerFrance2025-09-16Rousseaux, Michael Esq NEW80Onyama Limba
1010Julie StensethIndia2025-09-19Rousseaux, Michael Esq UNQUALIFIED9Asiya Javayant
1011Maria MarrierArgentina2025-09-30Rangoni Of Florence QUALIFIED63Xuxue Feng
1012Kadeem FlosiFrance2025-09-27Buckley Miller Wright PROPOSAL10Elwin Sharvill
1013Stacey MacleadArgentina2025-10-10Feiner Bros QUALIFIED72Ivan Magalhaes
1014Emily WhobreyJapan2025-10-06Chapman, Ross E Esq NEGOTIATION17Onyama Limba
1015Smith GlickGermany2025-10-01Feltz Printing Service QUALIFIED24Amy Elsner
1016Maria MarrierItaly2025-09-28Printing Dimensions UNQUALIFIED53Amy Elsner
1017Juan WieserJapan2025-09-18Buckley Miller Wright QUALIFIED37Ivan Magalhaes
1018Ricardo GauchoItaly2025-09-24Rangoni Of Florence UNQUALIFIED21Xuxue Feng
1019Maisha RulapaughIndia2025-10-11Chemel, James L Cpa NEW22Xuxue Feng
1020Octavia MaletSpain2025-09-22Rangoni Of Florence UNQUALIFIED47Xuxue Feng
1021Julie StensethCanada2025-09-29Chanay, Jeffrey A Esq RENEWAL62Amy Elsner
1022Julie StensethBrazil2025-09-25Chanay, Jeffrey A Esq QUALIFIED54Xuxue Feng
1023Octavia MaletRussia2025-09-16King, Christopher A Esq UNQUALIFIED29Anna Fali
1024Mayumi KolmetzSpain2025-09-21Commercial Press NEGOTIATION97Stephen Shaw
1025Nicolas IturbideUnited Kingdom2025-10-05Chanay, Jeffrey A Esq RENEWAL10Ioni Bowcher
1026Aika InouyeSpain2025-10-01Truhlar And Truhlar Attys NEW30Amy Elsner
1027Aditya KuskoSpain2025-10-06Printing Dimensions RENEWAL73Xuxue Feng
1028Munro FerenczSpain2025-09-20Rousseaux, Michael Esq NEW56Bernardo Dominic
1029Arvin AlbaresIndia2025-10-04Chapman, Ross E Esq PROPOSAL71Onyama Limba
1030Leon OldroydJapan2025-09-17Feltz Printing Service NEGOTIATION61Bernardo Dominic
1031Morrow RutaItaly2025-09-21Buckley Miller Wright RENEWAL99Stephen Shaw
1032Faith GillianIndia2025-09-21Morlong Associates NEGOTIATION3Ioni Bowcher
1033Cody SaylorsSpain2025-09-27Dorl, James J Esq PROPOSAL75Onyama Limba
1034Ivar PaprockiGermany2025-09-24Benton, John B Jr UNQUALIFIED93Amy Elsner
1035Kaitlin OstroskyRussia2025-10-07Feiner Bros PROPOSAL48Stephen Shaw
1036Johnson SergiRussia2025-10-05Truhlar And Truhlar Attys NEW51Bernardo Dominic
1037Stacey MacleadSpain2025-09-16Truhlar And Truhlar Attys QUALIFIED79Ioni Bowcher
1038Faith GillianJapan2025-10-01Rangoni Of Florence NEGOTIATION83Stephen Shaw
1039Ivar PaprockiGermany2025-10-12Dorl, James J Esq RENEWAL60Onyama Limba
1040Adams MorascaAustralia2025-10-03Benton, John B Jr RENEWAL32Bernardo Dominic
1041Isabel BowleyAustralia2025-09-17Feltz Printing Service UNQUALIFIED53Stephen Shaw
1042Aditya KuskoBrazil2025-10-07Morlong Associates NEGOTIATION45Bernardo Dominic
1043Kadeem FlosiRussia2025-09-27Printing Dimensions NEW7Elwin Sharvill
1044David DarakjyAustralia2025-09-13Chapman, Ross E Esq PROPOSAL48Asiya Javayant
1045Francesco ShinkoCanada2025-09-27Morlong Associates UNQUALIFIED29Ivan Magalhaes
1046Juan WieserItaly2025-09-19Chemel, James L Cpa NEGOTIATION70Stephen Shaw
1047Francesco ShinkoCanada2025-09-22Chemel, James L Cpa RENEWAL37Elwin Sharvill
1048Tony FollerRussia2025-09-27Feiner Bros RENEWAL58Anna Fali
1049Mujtaba NickaItaly2025-10-01Benton, John B Jr NEW94Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Ashley DoeSpainAsiya Javayant NEW
Clifford RimRussiaAnna Fali PROPOSAL
Kadeem FlosiCanadaAmy Elsner NEW
Chavez BriddickItalyBernardo Dominic NEW
David DarakjySpainIoni Bowcher UNQUALIFIED
Rodrigues CampainGermanyAmy Elsner NEW
Kadeem FlosiCanadaElwin Sharvill NEGOTIATION
Maria MarrierRussiaAsiya Javayant NEGOTIATION
Sinclair WaycottCanadaAmy Elsner RENEWAL
Salvatore StockhamCanadaAmy Elsner QUALIFIED
Jones VocelkaGermanyStephen Shaw NEW
Costa DilliardCanadaAnna Fali NEW
Kaitlin OstroskyRussiaBernardo Dominic QUALIFIED
Mujtaba NickaRussiaAnna Fali RENEWAL
Chavez BriddickUnited KingdomIoni Bowcher PROPOSAL
Misaki RoysterAustraliaStephen Shaw RENEWAL
Claire TollnerCanadaIvan Magalhaes NEGOTIATION
Silvio SlusarskiSpainOnyama Limba NEGOTIATION
Mayumi KolmetzIndiaOnyama Limba RENEWAL
Darci PoquetteItalyIoni Bowcher QUALIFIED
Izzy GarufiAustraliaXuxue Feng QUALIFIED
Jennifer AmigonUnited KingdomAnna Fali NEW
Francesco ShinkoRussiaBernardo Dominic QUALIFIED
Misaki RoysterJapanOnyama Limba QUALIFIED
Greenwood BologniaBrazilXuxue Feng PROPOSAL
Francesco ShinkoAustraliaIoni Bowcher QUALIFIED
Greenwood BologniaIndiaIoni Bowcher NEGOTIATION
Smith GlickRussiaIvan Magalhaes NEGOTIATION
Aruna FigeroaJapanElwin Sharvill PROPOSAL
Juan WieserCanadaIoni Bowcher UNQUALIFIED
Jones VocelkaIndiaIvan Magalhaes NEW
Rodrigues CampainItalyOnyama Limba QUALIFIED
Jennifer AmigonFranceAsiya Javayant NEGOTIATION
David DarakjyUnited KingdomAsiya Javayant QUALIFIED
Cody SaylorsAustraliaStephen Shaw QUALIFIED
Darci PoquetteUnited KingdomStephen Shaw NEGOTIATION
Mujtaba NickaUnited KingdomAnna Fali UNQUALIFIED
Misaki RoysterCanadaIoni Bowcher UNQUALIFIED
Kadeem FlosiItalyAsiya Javayant RENEWAL
Arvin AlbaresArgentinaStephen Shaw RENEWAL
Mayumi KolmetzJapanStephen Shaw NEW
Ivar PaprockiArgentinaAsiya Javayant UNQUALIFIED
Aditya KuskoItalyIoni Bowcher RENEWAL
Deepesh ChuiCanadaOnyama Limba RENEWAL
Jones VocelkaFranceAmy Elsner NEW
Aika InouyeIndiaAmy Elsner PROPOSAL
Juan WieserRussiaBernardo Dominic UNQUALIFIED
Darci PoquetteArgentinaBernardo Dominic NEGOTIATION
Arvin AlbaresBrazilBernardo Dominic PROPOSAL
Arvin AlbaresFranceAsiya Javayant RENEWAL
Frozen Columns
Name
Johnson Sergi
Tony Foller
Izzy Garufi
Leja Caldarera
Izzy Garufi
Julie Stenseth
Rodrigues Campain
Tony Foller
David Darakjy
Costa Dilliard
James Butt
Isabel Bowley
Rodrigues Campain
Emily Whobrey
Smith Glick
Julie Stenseth
Mayumi Kolmetz
Jeanfrancois Venere
Adams Morasca
Stacey Maclead
Morrow Ruta
Salvatore Stockham
Julie Stenseth
Silvio Slusarski
Smith Glick
Wickens Nestle
Misaki Royster
Leja Caldarera
Alejandro Perin
Adams Morasca
Francesco Shinko
James Butt
Izzy Garufi
Misaki Royster
Faith Gillian
Adams Morasca
Ivar Paprocki
Maisha Rulapaugh
Ricardo Gaucho
Stacey Maclead
Nicolas Iturbide
James Butt
Sinclair Waycott
Mayumi Kolmetz
Octavia Malet
Cody Saylors
Aika Inouye
Stacey Maclead
Ashley Doe
Kaitlin Ostrosky
IdCountryDate
1000Italy2025-09-22
1001United Kingdom2025-10-03
1002Canada2025-10-08
1003Spain2025-09-27
1004Germany2025-10-03
1005Russia2025-10-09
1006India2025-09-23
1007Italy2025-09-20
1008Japan2025-09-20
1009Canada2025-09-29
1010India2025-10-03
1011Italy2025-09-23
1012Brazil2025-10-07
1013Canada2025-10-05
1014Germany2025-09-13
1015Germany2025-09-29
1016Spain2025-09-26
1017Spain2025-10-05
1018Australia2025-09-30
1019Spain2025-09-21
1020Spain2025-09-27
1021Germany2025-10-12
1022United Kingdom2025-09-29
1023Australia2025-10-06
1024Spain2025-10-09
1025Argentina2025-09-21
1026Argentina2025-10-05
1027Germany2025-10-09
1028Canada2025-09-14
1029Germany2025-10-12
1030Australia2025-09-18
1031Germany2025-10-12
1032Brazil2025-09-30
1033France2025-09-13
1034Australia2025-10-04
1035Spain2025-09-30
1036Brazil2025-09-25
1037India2025-09-24
1038Canada2025-10-03
1039Australia2025-09-28
1040Germany2025-10-11
1041Japan2025-09-16
1042France2025-10-11
1043Italy2025-09-20
1044France2025-10-09
1045Canada2025-10-06
1046India2025-10-12
1047United Kingdom2025-09-30
1048Spain2025-09-30
1049India2025-09-13

On-Demand Data

NameIdCountryDate
Antonio Caudy1000France2025-09-17
Johnson Sergi1001United Kingdom2025-10-07
Arvin Albares1002Germany2025-09-25
Mujtaba Nicka1003France2025-10-10
Antonio Caudy1004Spain2025-10-05
Mayumi Kolmetz1005Japan2025-10-12
Jeanfrancois Venere1006Germany2025-09-20
Greenwood Bolognia1007Canada2025-09-15
Maisha Rulapaugh1008Spain2025-10-10
Johnson Sergi1009Italy2025-09-28
Mujtaba Nicka1010India2025-10-04
Aditya Kusko1011Russia2025-10-05
Ashley Doe1012Spain2025-10-04
Emily Whobrey1013Spain2025-10-03
Mujtaba Nicka1014Russia2025-10-07
Aika Inouye1015Japan2025-09-13
Sinclair Waycott1016Japan2025-09-14
Jennifer Amigon1017Japan2025-09-25
Wickens Nestle1018Italy2025-10-06
Leja Caldarera1019Germany2025-09-13
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Adams MorascaIndiaAmy Elsner UNQUALIFIED
Maria MarrierRussiaIvan Magalhaes NEGOTIATION
Nicolas IturbideFranceBernardo Dominic UNQUALIFIED
Cody SaylorsIndiaBernardo Dominic NEW
Arvin AlbaresJapanElwin Sharvill RENEWAL
Tony FollerRussiaIoni Bowcher QUALIFIED
Johnson SergiFranceAnna Fali UNQUALIFIED
Darci PoquetteItalyElwin Sharvill NEGOTIATION
Aditya KuskoSpainAnna Fali RENEWAL
Salvatore StockhamSpainIvan Magalhaes PROPOSAL
Julie StensethFranceAmy Elsner NEGOTIATION
Darci PoquetteAustraliaAsiya Javayant RENEWAL
Wickens NestleAustraliaIvan Magalhaes QUALIFIED
Adams MorascaItalyElwin Sharvill PROPOSAL
Maria MarrierCanadaStephen Shaw UNQUALIFIED
Munro FerenczJapanXuxue Feng NEGOTIATION
Ashley DoeUnited KingdomIoni Bowcher UNQUALIFIED
Morrow RutaArgentinaAmy Elsner NEGOTIATION
Silvio SlusarskiUnited KingdomOnyama Limba NEGOTIATION
Chavez BriddickRussiaElwin Sharvill RENEWAL
Sinclair WaycottItalyAmy Elsner UNQUALIFIED
Maria MarrierAustraliaAmy Elsner NEGOTIATION
Deepesh ChuiUnited KingdomElwin Sharvill NEW
Isabel BowleyGermanyStephen Shaw RENEWAL
Francesco ShinkoItalyElwin Sharvill UNQUALIFIED
Murillo MaletRussiaAnna Fali NEGOTIATION
James ButtItalyElwin Sharvill UNQUALIFIED
Isabel BowleyAustraliaElwin Sharvill QUALIFIED
Aruna FigeroaAustraliaIoni Bowcher NEW
Morrow RutaFranceIoni Bowcher NEW
Jeanfrancois VenereRussiaAnna Fali UNQUALIFIED
David DarakjyGermanyElwin Sharvill PROPOSAL
Murillo MaletCanadaBernardo Dominic NEGOTIATION
Emily WhobreyCanadaXuxue Feng NEW
Isabel BowleyIndiaElwin Sharvill NEW
Mayumi KolmetzSpainIvan Magalhaes UNQUALIFIED
Juan WieserBrazilAnna Fali NEW
Costa DilliardArgentinaBernardo Dominic RENEWAL
James ButtAustraliaIoni Bowcher UNQUALIFIED
James ButtRussiaAnna Fali UNQUALIFIED

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