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
Morrow RutaArgentinaElwin Sharvill NEW
Greenwood BologniaItalyStephen Shaw PROPOSAL
Misaki RoysterJapanBernardo Dominic UNQUALIFIED
Clifford RimItalyAmy Elsner NEW
Smith GlickIndiaAnna Fali PROPOSAL
Rodrigues CampainItalyElwin Sharvill NEGOTIATION
Salvatore StockhamSpainAsiya Javayant QUALIFIED
Stacey MacleadUnited KingdomAmy Elsner NEGOTIATION
Jefferson SchemmerFranceAmy Elsner NEW
Jefferson SchemmerFranceIoni Bowcher QUALIFIED
Aruna FigeroaSpainOnyama Limba PROPOSAL
Maria MarrierItalyIoni Bowcher PROPOSAL
Nicolas IturbideBrazilOnyama Limba NEGOTIATION
Deepesh ChuiIndiaIoni Bowcher UNQUALIFIED
Darci PoquetteItalyElwin Sharvill UNQUALIFIED
Costa DilliardGermanyAmy Elsner QUALIFIED
Adams MorascaAustraliaStephen Shaw NEW
Costa DilliardUnited KingdomAmy Elsner UNQUALIFIED
Claire TollnerAustraliaAmy Elsner QUALIFIED
Johnson SergiJapanIvan Magalhaes NEGOTIATION
Sinclair WaycottAustraliaIvan Magalhaes UNQUALIFIED
Maria MarrierBrazilIvan Magalhaes UNQUALIFIED
Jennifer AmigonSpainAnna Fali QUALIFIED
Izzy GarufiItalyAnna Fali NEGOTIATION
Antonio CaudyAustraliaBernardo Dominic RENEWAL
Faith GillianRussiaOnyama Limba NEGOTIATION
Ricardo GauchoAustraliaOnyama Limba UNQUALIFIED
James ButtArgentinaBernardo Dominic NEW
Clifford RimCanadaIoni Bowcher UNQUALIFIED
Kadeem FlosiAustraliaBernardo Dominic PROPOSAL
Jeanfrancois VenereSpainStephen Shaw UNQUALIFIED
Kaitlin OstroskyAustraliaAsiya Javayant RENEWAL
Aditya KuskoCanadaXuxue Feng PROPOSAL
Greenwood BologniaIndiaAmy Elsner UNQUALIFIED
Kaitlin OstroskyBrazilOnyama Limba QUALIFIED
Murillo MaletSpainStephen Shaw RENEWAL
Juan WieserUnited KingdomAsiya Javayant NEGOTIATION
Emily WhobreyGermanyAmy Elsner PROPOSAL
David DarakjyArgentinaStephen Shaw PROPOSAL
Johnson SergiUnited KingdomAnna Fali QUALIFIED
Cody SaylorsSpainOnyama Limba NEGOTIATION
Ivar PaprockiRussiaXuxue Feng PROPOSAL
Claire TollnerItalyBernardo Dominic RENEWAL
Leja CaldareraAustraliaIoni Bowcher UNQUALIFIED
Morrow RutaSpainXuxue Feng NEGOTIATION
David DarakjyAustraliaStephen Shaw RENEWAL
Juan WieserJapanBernardo Dominic UNQUALIFIED
Isabel BowleyBrazilAsiya Javayant RENEWAL
Kaitlin OstroskyIndiaAsiya Javayant RENEWAL
Izzy GarufiJapanAsiya Javayant NEW
Horizontal
NameCountryRepresentativeStatus
Johnson SergiCanadaElwin Sharvill PROPOSAL
Murillo MaletIndiaIvan Magalhaes NEGOTIATION
Ricardo GauchoArgentinaBernardo Dominic RENEWAL
Wickens NestleItalyAmy Elsner NEGOTIATION
Sinclair WaycottSpainAnna Fali PROPOSAL
Emily WhobreyAustraliaAnna Fali QUALIFIED
Claire TollnerFranceAnna Fali NEGOTIATION
David DarakjyRussiaAsiya Javayant QUALIFIED
Kadeem FlosiItalyStephen Shaw RENEWAL
Sinclair WaycottCanadaXuxue Feng NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Smith GlickUnited Kingdom2026-06-18Printing Dimensions NEW18Elwin Sharvill
1001Misaki RoysterIndia2026-06-01Chemel, James L Cpa RENEWAL60Ioni Bowcher
1002Sinclair WaycottCanada2026-06-19Rangoni Of Florence NEGOTIATION63Ivan Magalhaes
1003Johnson SergiAustralia2026-06-18Buckley Miller Wright RENEWAL22Stephen Shaw
1004Kadeem FlosiGermany2026-06-09Chemel, James L Cpa UNQUALIFIED50Asiya Javayant
1005Izzy GarufiRussia2026-06-10Buckley Miller Wright PROPOSAL76Ioni Bowcher
1006Emily WhobreyAustralia2026-06-11Commercial Press UNQUALIFIED59Elwin Sharvill
1007Ricardo GauchoJapan2026-05-31Benton, John B Jr RENEWAL90Bernardo Dominic
1008Faith GillianBrazil2026-05-22Feltz Printing Service UNQUALIFIED76Asiya Javayant
1009Maria MarrierAustralia2026-06-15Truhlar And Truhlar Attys RENEWAL21Bernardo Dominic
1010Faith GillianUnited Kingdom2026-06-12Rangoni Of Florence NEGOTIATION41Stephen Shaw
1011Misaki RoysterSpain2026-06-16Benton, John B Jr NEW28Onyama Limba
1012Isabel BowleyAustralia2026-06-16Feiner Bros UNQUALIFIED27Stephen Shaw
1013Mayumi KolmetzAustralia2026-06-19Rousseaux, Michael Esq RENEWAL20Amy Elsner
1014David DarakjyAustralia2026-05-26Chanay, Jeffrey A Esq NEW5Stephen Shaw
1015Chavez BriddickIndia2026-05-23Morlong Associates UNQUALIFIED20Bernardo Dominic
1016Cody SaylorsJapan2026-06-09Truhlar And Truhlar Attys NEGOTIATION78Bernardo Dominic
1017David DarakjyAustralia2026-06-04Morlong Associates RENEWAL79Xuxue Feng
1018Darci PoquetteSpain2026-05-31Benton, John B Jr NEGOTIATION59Ioni Bowcher
1019Johnson SergiBrazil2026-06-20Morlong Associates PROPOSAL7Onyama Limba
1020Munro FerenczSpain2026-06-14Buckley Miller Wright QUALIFIED98Stephen Shaw
1021Jones VocelkaItaly2026-06-06Truhlar And Truhlar Attys UNQUALIFIED40Asiya Javayant
1022Aika InouyeGermany2026-06-15Chanay, Jeffrey A Esq RENEWAL29Anna Fali
1023Aruna FigeroaAustralia2026-06-14Commercial Press PROPOSAL86Ioni Bowcher
1024Octavia MaletItaly2026-05-31Truhlar And Truhlar Attys RENEWAL65Stephen Shaw
1025Izzy GarufiSpain2026-05-27Feiner Bros PROPOSAL83Stephen Shaw
1026Mayumi KolmetzRussia2026-06-19Chanay, Jeffrey A Esq NEGOTIATION2Asiya Javayant
1027Antonio CaudyItaly2026-06-15Feltz Printing Service NEGOTIATION47Xuxue Feng
1028David DarakjyBrazil2026-06-20Chapman, Ross E Esq QUALIFIED99Elwin Sharvill
1029Wickens NestleRussia2026-06-02Chapman, Ross E Esq PROPOSAL94Elwin Sharvill
1030Alejandro PerinCanada2026-06-01Rangoni Of Florence UNQUALIFIED68Elwin Sharvill
1031Kaitlin OstroskyBrazil2026-06-10Dorl, James J Esq UNQUALIFIED48Stephen Shaw
1032Clifford RimIndia2026-06-15Buckley Miller Wright QUALIFIED72Bernardo Dominic
1033Emily WhobreyJapan2026-06-02Feltz Printing Service PROPOSAL95Onyama Limba
1034Claire TollnerJapan2026-06-03Truhlar And Truhlar Attys PROPOSAL31Xuxue Feng
1035Antonio CaudyIndia2026-06-15Rangoni Of Florence NEGOTIATION88Bernardo Dominic
1036Costa DilliardUnited Kingdom2026-06-13Benton, John B Jr PROPOSAL8Asiya Javayant
1037Leon OldroydFrance2026-06-18Feiner Bros NEW63Elwin Sharvill
1038Greenwood BologniaUnited Kingdom2026-06-12Benton, John B Jr PROPOSAL69Amy Elsner
1039Octavia MaletFrance2026-06-07Chemel, James L Cpa QUALIFIED45Elwin Sharvill
1040Adams MorascaCanada2026-06-03Feltz Printing Service QUALIFIED17Anna Fali
1041Maria MarrierItaly2026-05-22King, Christopher A Esq UNQUALIFIED85Asiya Javayant
1042Ashley DoeArgentina2026-05-25Printing Dimensions RENEWAL17Anna Fali
1043Deepesh ChuiGermany2026-06-18Chemel, James L Cpa RENEWAL36Amy Elsner
1044Faith GillianUnited Kingdom2026-06-04Rousseaux, Michael Esq QUALIFIED72Elwin Sharvill
1045Jones VocelkaCanada2026-06-09Chemel, James L Cpa NEW19Anna Fali
1046Claire TollnerArgentina2026-06-01Feiner Bros NEGOTIATION64Elwin Sharvill
1047Julie StensethItaly2026-06-11Feltz Printing Service UNQUALIFIED69Onyama Limba
1048Kaitlin OstroskyFrance2026-06-05Commercial Press NEW57Onyama Limba
1049Aruna FigeroaBrazil2026-06-09Rousseaux, Michael Esq NEW70Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Arvin AlbaresCanadaIvan Magalhaes RENEWAL
Kadeem FlosiRussiaXuxue Feng QUALIFIED
Jeanfrancois VenereBrazilIvan Magalhaes PROPOSAL
James ButtArgentinaBernardo Dominic UNQUALIFIED
Ashley DoeSpainAmy Elsner PROPOSAL
Johnson SergiRussiaIvan Magalhaes RENEWAL
Ashley DoeGermanyOnyama Limba NEGOTIATION
Juan WieserIndiaAsiya Javayant QUALIFIED
Kadeem FlosiItalyOnyama Limba NEGOTIATION
Leja CaldareraIndiaAmy Elsner PROPOSAL
Octavia MaletUnited KingdomStephen Shaw RENEWAL
Smith GlickIndiaAmy Elsner NEGOTIATION
Jefferson SchemmerIndiaIvan Magalhaes QUALIFIED
Tony FollerArgentinaIoni Bowcher RENEWAL
Leja CaldareraAustraliaOnyama Limba NEGOTIATION
Ivar PaprockiBrazilOnyama Limba RENEWAL
Nicolas IturbideBrazilAsiya Javayant UNQUALIFIED
Adams MorascaUnited KingdomAnna Fali PROPOSAL
Morrow RutaSpainIvan Magalhaes NEGOTIATION
Julie StensethCanadaAsiya Javayant QUALIFIED
Wickens NestleCanadaIoni Bowcher UNQUALIFIED
Jennifer AmigonFranceElwin Sharvill NEGOTIATION
Emily WhobreyItalyXuxue Feng NEGOTIATION
Adams MorascaRussiaStephen Shaw NEW
Costa DilliardSpainStephen Shaw UNQUALIFIED
Antonio CaudyRussiaElwin Sharvill PROPOSAL
Alejandro PerinIndiaStephen Shaw NEW
Chavez BriddickJapanIvan Magalhaes NEGOTIATION
Darci PoquetteAustraliaIvan Magalhaes UNQUALIFIED
Octavia MaletAustraliaXuxue Feng RENEWAL
Alejandro PerinRussiaXuxue Feng QUALIFIED
Munro FerenczRussiaXuxue Feng NEGOTIATION
Smith GlickSpainOnyama Limba NEGOTIATION
Ashley DoeFranceAmy Elsner RENEWAL
Ashley DoeSpainIvan Magalhaes QUALIFIED
Isabel BowleyGermanyAmy Elsner PROPOSAL
Murillo MaletGermanyAmy Elsner NEGOTIATION
Murillo MaletItalyIoni Bowcher QUALIFIED
Costa DilliardCanadaBernardo Dominic QUALIFIED
Alejandro PerinJapanIoni Bowcher UNQUALIFIED
Aditya KuskoFranceIoni Bowcher NEW
Darci PoquetteArgentinaXuxue Feng PROPOSAL
Salvatore StockhamIndiaAsiya Javayant UNQUALIFIED
Mujtaba NickaIndiaBernardo Dominic QUALIFIED
Mayumi KolmetzAustraliaAmy Elsner QUALIFIED
Julie StensethCanadaXuxue Feng PROPOSAL
Stacey MacleadRussiaAmy Elsner PROPOSAL
Adams MorascaUnited KingdomBernardo Dominic NEW
Tony FollerArgentinaBernardo Dominic PROPOSAL
Ivar PaprockiSpainBernardo Dominic NEGOTIATION
Frozen Columns
Name
Misaki Royster
Ashley Doe
Jennifer Amigon
Julie Stenseth
Adams Morasca
Aika Inouye
Aika Inouye
Julie Stenseth
Rodrigues Campain
Silvio Slusarski
Isabel Bowley
Tony Foller
Mayumi Kolmetz
Faith Gillian
Octavia Malet
Octavia Malet
Costa Dilliard
Octavia Malet
Julie Stenseth
Aika Inouye
Costa Dilliard
Emily Whobrey
Julie Stenseth
Costa Dilliard
Johnson Sergi
Wickens Nestle
Darci Poquette
Maria Marrier
Alejandro Perin
Jefferson Schemmer
Jeanfrancois Venere
Juan Wieser
Leja Caldarera
Julie Stenseth
Adams Morasca
Cody Saylors
Adams Morasca
Morrow Ruta
Jeanfrancois Venere
Rodrigues Campain
Arvin Albares
David Darakjy
Antonio Caudy
Claire Tollner
Murillo Malet
Jefferson Schemmer
Juan Wieser
Maria Marrier
Isabel Bowley
Darci Poquette
IdCountryDate
1000India2026-06-09
1001United Kingdom2026-06-10
1002Russia2026-06-06
1003Brazil2026-06-12
1004Italy2026-05-28
1005Brazil2026-06-01
1006Australia2026-05-29
1007Argentina2026-06-06
1008Russia2026-05-28
1009Canada2026-06-05
1010France2026-05-27
1011Japan2026-06-11
1012Brazil2026-05-22
1013France2026-05-25
1014Italy2026-06-11
1015United Kingdom2026-05-23
1016Australia2026-06-15
1017Italy2026-05-29
1018Argentina2026-06-18
1019Canada2026-05-30
1020France2026-06-19
1021Argentina2026-06-07
1022Canada2026-06-03
1023Canada2026-05-25
1024United Kingdom2026-05-22
1025Germany2026-06-05
1026Argentina2026-05-22
1027Russia2026-06-10
1028Germany2026-06-17
1029Brazil2026-05-28
1030United Kingdom2026-05-26
1031Japan2026-05-25
1032Argentina2026-06-03
1033Japan2026-06-03
1034Russia2026-06-20
1035Argentina2026-06-20
1036Brazil2026-06-20
1037India2026-06-03
1038Germany2026-06-05
1039Australia2026-06-12
1040Italy2026-06-18
1041Spain2026-06-04
1042Japan2026-05-31
1043Australia2026-06-02
1044Germany2026-06-15
1045Spain2026-06-05
1046Russia2026-06-12
1047Germany2026-05-31
1048Argentina2026-06-06
1049Canada2026-06-04

On-Demand Data

NameIdCountryDate
Juan Wieser1000Brazil2026-06-08
Adams Morasca1001Brazil2026-05-31
Stacey Maclead1002Italy2026-06-17
Darci Poquette1003Russia2026-06-12
Smith Glick1004India2026-05-23
Cody Saylors1005Argentina2026-06-09
Isabel Bowley1006United Kingdom2026-05-22
Arvin Albares1007India2026-06-20
Stacey Maclead1008Australia2026-05-28
Rodrigues Campain1009Germany2026-06-01
Aditya Kusko1010Italy2026-06-02
Antonio Caudy1011France2026-05-27
Salvatore Stockham1012United Kingdom2026-06-04
Chavez Briddick1013Brazil2026-06-01
Deepesh Chui1014Russia2026-06-03
Johnson Sergi1015Canada2026-06-12
Emily Whobrey1016Germany2026-05-31
Izzy Garufi1017Spain2026-05-22
Juan Wieser1018France2026-06-09
Faith Gillian1019India2026-05-26
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Smith GlickAustraliaAsiya Javayant NEGOTIATION
Misaki RoysterCanadaIvan Magalhaes QUALIFIED
Kaitlin OstroskyAustraliaIoni Bowcher QUALIFIED
Julie StensethArgentinaAsiya Javayant NEGOTIATION
Leja CaldareraFranceAmy Elsner PROPOSAL
Claire TollnerBrazilOnyama Limba QUALIFIED
Juan WieserUnited KingdomAnna Fali PROPOSAL
Cody SaylorsFranceXuxue Feng NEW
Silvio SlusarskiAustraliaAsiya Javayant RENEWAL
Clifford RimCanadaAsiya Javayant QUALIFIED
Ricardo GauchoIndiaAnna Fali QUALIFIED
Isabel BowleyRussiaOnyama Limba NEW
Aruna FigeroaCanadaElwin Sharvill QUALIFIED
Maria MarrierItalyStephen Shaw NEGOTIATION
Deepesh ChuiRussiaXuxue Feng NEW
Jefferson SchemmerAustraliaIoni Bowcher UNQUALIFIED
Costa DilliardAustraliaIoni Bowcher RENEWAL
Claire TollnerCanadaIvan Magalhaes QUALIFIED
Aika InouyeArgentinaStephen Shaw PROPOSAL
Clifford RimJapanAnna Fali UNQUALIFIED
Cody SaylorsArgentinaBernardo Dominic NEW
Jennifer AmigonUnited KingdomIoni Bowcher UNQUALIFIED
Jeanfrancois VenereRussiaStephen Shaw NEW
Smith GlickAustraliaAnna Fali RENEWAL
Munro FerenczItalyStephen Shaw QUALIFIED
Deepesh ChuiItalyIvan Magalhaes NEGOTIATION
Faith GillianBrazilAnna Fali NEGOTIATION
Mayumi KolmetzUnited KingdomAnna Fali PROPOSAL
Maria MarrierBrazilXuxue Feng NEW
Jeanfrancois VenereArgentinaAsiya Javayant UNQUALIFIED
Nicolas IturbideIndiaAmy Elsner UNQUALIFIED
Aruna FigeroaJapanIvan Magalhaes PROPOSAL
Deepesh ChuiJapanAnna Fali NEW
Aika InouyeAustraliaXuxue Feng QUALIFIED
Rodrigues CampainRussiaAsiya Javayant NEGOTIATION
Ricardo GauchoSpainAmy Elsner UNQUALIFIED
Aika InouyeAustraliaStephen Shaw NEGOTIATION
Adams MorascaCanadaAmy Elsner NEGOTIATION
Claire TollnerRussiaStephen Shaw RENEWAL
Izzy GarufiAustraliaBernardo Dominic 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>