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
James ButtArgentinaXuxue Feng QUALIFIED
Mayumi KolmetzAustraliaAsiya Javayant UNQUALIFIED
Chavez BriddickUnited KingdomIvan Magalhaes QUALIFIED
Clifford RimRussiaStephen Shaw UNQUALIFIED
Deepesh ChuiFranceOnyama Limba NEW
Juan WieserArgentinaAnna Fali RENEWAL
Rodrigues CampainAustraliaElwin Sharvill QUALIFIED
Julie StensethAustraliaIvan Magalhaes PROPOSAL
Maisha RulapaughArgentinaBernardo Dominic NEW
Octavia MaletIndiaXuxue Feng PROPOSAL
Julie StensethCanadaIoni Bowcher NEW
Ricardo GauchoFranceAnna Fali NEGOTIATION
Aruna FigeroaArgentinaElwin Sharvill RENEWAL
Alejandro PerinBrazilBernardo Dominic RENEWAL
Ivar PaprockiAustraliaStephen Shaw NEW
Silvio SlusarskiGermanyAsiya Javayant UNQUALIFIED
Deepesh ChuiArgentinaAsiya Javayant UNQUALIFIED
Nicolas IturbideAustraliaAsiya Javayant NEW
Johnson SergiGermanyXuxue Feng NEGOTIATION
Tony FollerArgentinaAnna Fali UNQUALIFIED
Leon OldroydRussiaAmy Elsner RENEWAL
Isabel BowleyGermanyAmy Elsner PROPOSAL
Sinclair WaycottJapanAmy Elsner QUALIFIED
Murillo MaletIndiaAmy Elsner RENEWAL
Adams MorascaUnited KingdomIoni Bowcher RENEWAL
Salvatore StockhamJapanXuxue Feng QUALIFIED
Ashley DoeFranceAsiya Javayant PROPOSAL
Murillo MaletIndiaBernardo Dominic RENEWAL
Aruna FigeroaSpainElwin Sharvill QUALIFIED
Johnson SergiIndiaAmy Elsner NEGOTIATION
Arvin AlbaresSpainElwin Sharvill RENEWAL
Aditya KuskoCanadaAnna Fali RENEWAL
Aruna FigeroaGermanyIvan Magalhaes NEGOTIATION
Stacey MacleadArgentinaIvan Magalhaes NEW
Francesco ShinkoFranceAsiya Javayant NEGOTIATION
Antonio CaudyItalyStephen Shaw UNQUALIFIED
Kaitlin OstroskyCanadaOnyama Limba QUALIFIED
Jennifer AmigonJapanStephen Shaw UNQUALIFIED
Clifford RimGermanyStephen Shaw NEGOTIATION
Jennifer AmigonAustraliaStephen Shaw RENEWAL
Ricardo GauchoAustraliaStephen Shaw PROPOSAL
Mujtaba NickaAustraliaAnna Fali NEW
Sinclair WaycottUnited KingdomIoni Bowcher NEW
Jeanfrancois VenereGermanyBernardo Dominic UNQUALIFIED
Jones VocelkaGermanyStephen Shaw UNQUALIFIED
Silvio SlusarskiItalyIoni Bowcher RENEWAL
Aruna FigeroaGermanyAsiya Javayant NEW
Maria MarrierBrazilElwin Sharvill PROPOSAL
Misaki RoysterIndiaStephen Shaw UNQUALIFIED
Darci PoquetteIndiaAnna Fali NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Morrow RutaAustraliaStephen Shaw UNQUALIFIED
Nicolas IturbideArgentinaStephen Shaw PROPOSAL
Munro FerenczRussiaAnna Fali PROPOSAL
Maria MarrierUnited KingdomXuxue Feng NEW
Deepesh ChuiSpainElwin Sharvill QUALIFIED
Aruna FigeroaIndiaBernardo Dominic PROPOSAL
Jennifer AmigonAustraliaAmy Elsner UNQUALIFIED
Stacey MacleadSpainAmy Elsner NEGOTIATION
Rodrigues CampainBrazilStephen Shaw UNQUALIFIED
Antonio CaudySpainIoni Bowcher NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Smith GlickUnited Kingdom2026-05-24Chapman, Ross E Esq RENEWAL48Onyama Limba
1001Antonio CaudyCanada2026-06-11Rangoni Of Florence RENEWAL53Stephen Shaw
1002Izzy GarufiRussia2026-06-07Dorl, James J Esq NEGOTIATION70Asiya Javayant
1003Maria MarrierUnited Kingdom2026-05-23Truhlar And Truhlar Attys QUALIFIED85Stephen Shaw
1004Johnson SergiIndia2026-05-30Dorl, James J Esq RENEWAL49Stephen Shaw
1005Jennifer AmigonIndia2026-06-04Rousseaux, Michael Esq NEW2Anna Fali
1006Jennifer AmigonUnited Kingdom2026-05-24Rangoni Of Florence PROPOSAL0Ioni Bowcher
1007Morrow RutaUnited Kingdom2026-05-19Chemel, James L Cpa UNQUALIFIED90Onyama Limba
1008Leja CaldareraJapan2026-06-14Buckley Miller Wright NEW47Xuxue Feng
1009Nicolas IturbideJapan2026-06-09Printing Dimensions RENEWAL61Asiya Javayant
1010Octavia MaletSpain2026-05-17King, Christopher A Esq NEGOTIATION87Ivan Magalhaes
1011Rodrigues CampainRussia2026-05-22Benton, John B Jr NEW74Asiya Javayant
1012Julie StensethGermany2026-05-28Buckley Miller Wright UNQUALIFIED0Bernardo Dominic
1013Jennifer AmigonGermany2026-06-02Rousseaux, Michael Esq RENEWAL62Anna Fali
1014Aruna FigeroaBrazil2026-05-16King, Christopher A Esq PROPOSAL28Ivan Magalhaes
1015Ivar PaprockiItaly2026-06-12Commercial Press UNQUALIFIED4Ivan Magalhaes
1016Chavez BriddickBrazil2026-05-30Morlong Associates NEGOTIATION7Ioni Bowcher
1017Faith GillianJapan2026-06-11Benton, John B Jr NEGOTIATION98Stephen Shaw
1018Claire TollnerBrazil2026-05-23Printing Dimensions PROPOSAL61Bernardo Dominic
1019Kadeem FlosiFrance2026-05-18Buckley Miller Wright QUALIFIED94Bernardo Dominic
1020Tony FollerAustralia2026-05-20Rangoni Of Florence RENEWAL4Stephen Shaw
1021Kaitlin OstroskyCanada2026-05-26King, Christopher A Esq RENEWAL83Anna Fali
1022Julie StensethUnited Kingdom2026-06-01Benton, John B Jr RENEWAL21Amy Elsner
1023Maisha RulapaughJapan2026-05-17Rousseaux, Michael Esq QUALIFIED51Ioni Bowcher
1024James ButtGermany2026-05-22Rangoni Of Florence QUALIFIED63Bernardo Dominic
1025Adams MorascaJapan2026-05-23Rousseaux, Michael Esq UNQUALIFIED57Asiya Javayant
1026Isabel BowleyIndia2026-06-06Chapman, Ross E Esq NEGOTIATION91Elwin Sharvill
1027Rodrigues CampainIndia2026-05-25Chanay, Jeffrey A Esq UNQUALIFIED60Asiya Javayant
1028Morrow RutaArgentina2026-06-08Benton, John B Jr QUALIFIED75Ivan Magalhaes
1029Aditya KuskoSpain2026-05-30Printing Dimensions UNQUALIFIED9Xuxue Feng
1030Ashley DoeIndia2026-05-28Feltz Printing Service UNQUALIFIED86Onyama Limba
1031Costa DilliardIndia2026-05-25Buckley Miller Wright QUALIFIED78Anna Fali
1032Greenwood BologniaAustralia2026-05-24Benton, John B Jr QUALIFIED90Asiya Javayant
1033Jennifer AmigonCanada2026-05-25Chapman, Ross E Esq UNQUALIFIED9Ioni Bowcher
1034Claire TollnerGermany2026-06-10Feltz Printing Service UNQUALIFIED10Stephen Shaw
1035Faith GillianUnited Kingdom2026-05-23Rangoni Of Florence NEW15Anna Fali
1036Ricardo GauchoArgentina2026-06-14Truhlar And Truhlar Attys QUALIFIED91Onyama Limba
1037Juan WieserCanada2026-06-12Feiner Bros QUALIFIED42Stephen Shaw
1038Aika InouyeFrance2026-05-20Commercial Press PROPOSAL48Onyama Limba
1039Greenwood BologniaRussia2026-06-03Chapman, Ross E Esq QUALIFIED33Ioni Bowcher
1040Emily WhobreyFrance2026-06-13Chemel, James L Cpa UNQUALIFIED37Onyama Limba
1041Aruna FigeroaJapan2026-06-11Benton, John B Jr UNQUALIFIED73Ioni Bowcher
1042Mayumi KolmetzFrance2026-05-25Rousseaux, Michael Esq UNQUALIFIED54Ivan Magalhaes
1043Clifford RimSpain2026-05-20Chemel, James L Cpa NEGOTIATION73Asiya Javayant
1044Leja CaldareraArgentina2026-06-05Printing Dimensions RENEWAL55Asiya Javayant
1045Sinclair WaycottAustralia2026-06-01Rangoni Of Florence QUALIFIED55Onyama Limba
1046Aika InouyeAustralia2026-05-17Chemel, James L Cpa RENEWAL42Bernardo Dominic
1047Adams MorascaIndia2026-06-13Chapman, Ross E Esq UNQUALIFIED17Bernardo Dominic
1048Darci PoquetteFrance2026-05-28Chanay, Jeffrey A Esq QUALIFIED87Xuxue Feng
1049Leon OldroydUnited Kingdom2026-06-02Feltz Printing Service QUALIFIED50Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Jennifer AmigonCanadaIoni Bowcher NEGOTIATION
Maisha RulapaughSpainElwin Sharvill RENEWAL
Faith GillianAustraliaOnyama Limba QUALIFIED
Faith GillianUnited KingdomAsiya Javayant QUALIFIED
Juan WieserBrazilElwin Sharvill NEGOTIATION
Ivar PaprockiBrazilIvan Magalhaes NEGOTIATION
Jennifer AmigonUnited KingdomXuxue Feng PROPOSAL
Rodrigues CampainUnited KingdomIoni Bowcher UNQUALIFIED
Claire TollnerGermanyAsiya Javayant RENEWAL
Maisha RulapaughIndiaStephen Shaw QUALIFIED
Adams MorascaFranceIoni Bowcher UNQUALIFIED
Faith GillianIndiaBernardo Dominic QUALIFIED
Jefferson SchemmerItalyBernardo Dominic NEW
Jennifer AmigonGermanyStephen Shaw RENEWAL
Leon OldroydArgentinaAnna Fali UNQUALIFIED
Cody SaylorsUnited KingdomIoni Bowcher PROPOSAL
Octavia MaletItalyIvan Magalhaes QUALIFIED
Ricardo GauchoItalyAnna Fali QUALIFIED
Kadeem FlosiBrazilXuxue Feng PROPOSAL
Costa DilliardJapanOnyama Limba NEGOTIATION
Deepesh ChuiAustraliaOnyama Limba UNQUALIFIED
Jones VocelkaCanadaAsiya Javayant UNQUALIFIED
Kadeem FlosiArgentinaOnyama Limba PROPOSAL
Leja CaldareraGermanyXuxue Feng PROPOSAL
Ivar PaprockiSpainBernardo Dominic NEW
Mayumi KolmetzSpainElwin Sharvill RENEWAL
Rodrigues CampainSpainAsiya Javayant PROPOSAL
Kaitlin OstroskyArgentinaElwin Sharvill UNQUALIFIED
Kaitlin OstroskyCanadaAmy Elsner PROPOSAL
Juan WieserFranceBernardo Dominic UNQUALIFIED
Rodrigues CampainAustraliaOnyama Limba RENEWAL
Stacey MacleadSpainIoni Bowcher RENEWAL
Jones VocelkaGermanyIvan Magalhaes QUALIFIED
Jefferson SchemmerRussiaIoni Bowcher QUALIFIED
Clifford RimUnited KingdomAsiya Javayant RENEWAL
Rodrigues CampainJapanElwin Sharvill QUALIFIED
Adams MorascaUnited KingdomIvan Magalhaes NEGOTIATION
Leja CaldareraIndiaAmy Elsner UNQUALIFIED
Emily WhobreyCanadaIoni Bowcher UNQUALIFIED
Nicolas IturbideUnited KingdomBernardo Dominic NEGOTIATION
Stacey MacleadRussiaBernardo Dominic QUALIFIED
Cody SaylorsRussiaIvan Magalhaes NEGOTIATION
Ashley DoeUnited KingdomAnna Fali PROPOSAL
Emily WhobreyJapanIoni Bowcher UNQUALIFIED
Costa DilliardAustraliaAmy Elsner QUALIFIED
Misaki RoysterRussiaElwin Sharvill QUALIFIED
Francesco ShinkoArgentinaAnna Fali RENEWAL
Misaki RoysterRussiaXuxue Feng RENEWAL
Alejandro PerinGermanyStephen Shaw NEW
Murillo MaletGermanyIoni Bowcher NEGOTIATION
Frozen Columns
Name
Stacey Maclead
Tony Foller
Cody Saylors
Octavia Malet
Aditya Kusko
Deepesh Chui
Mujtaba Nicka
David Darakjy
Mayumi Kolmetz
Jones Vocelka
Munro Ferencz
Tony Foller
James Butt
Juan Wieser
Clifford Rim
Jeanfrancois Venere
Arvin Albares
Juan Wieser
Rodrigues Campain
Mujtaba Nicka
Ivar Paprocki
Costa Dilliard
Sinclair Waycott
Aika Inouye
Maisha Rulapaugh
Kadeem Flosi
Clifford Rim
Leja Caldarera
Murillo Malet
Francesco Shinko
Mujtaba Nicka
Leja Caldarera
Wickens Nestle
Ashley Doe
Smith Glick
Jeanfrancois Venere
Juan Wieser
James Butt
Maisha Rulapaugh
Kaitlin Ostrosky
Isabel Bowley
Jones Vocelka
Adams Morasca
Izzy Garufi
Ivar Paprocki
Leon Oldroyd
Adams Morasca
Alejandro Perin
Sinclair Waycott
Johnson Sergi
IdCountryDate
1000Australia2026-06-10
1001Spain2026-05-29
1002India2026-06-08
1003France2026-06-13
1004Spain2026-05-19
1005France2026-05-16
1006Italy2026-06-14
1007Russia2026-06-05
1008Brazil2026-06-06
1009France2026-06-04
1010United Kingdom2026-06-13
1011India2026-05-26
1012Argentina2026-06-12
1013Japan2026-06-01
1014Spain2026-06-04
1015Spain2026-06-11
1016India2026-06-06
1017Canada2026-05-30
1018Australia2026-05-22
1019Australia2026-05-20
1020Russia2026-05-27
1021Argentina2026-06-04
1022Australia2026-05-23
1023Australia2026-05-23
1024United Kingdom2026-06-12
1025France2026-05-25
1026Australia2026-05-27
1027United Kingdom2026-06-01
1028United Kingdom2026-05-29
1029Italy2026-06-07
1030Canada2026-06-01
1031Japan2026-06-01
1032Australia2026-06-10
1033Italy2026-05-20
1034Brazil2026-05-19
1035Italy2026-06-01
1036India2026-06-08
1037Japan2026-06-07
1038France2026-05-26
1039Japan2026-05-27
1040Argentina2026-06-08
1041Japan2026-06-13
1042Russia2026-05-29
1043Japan2026-05-18
1044Australia2026-05-26
1045Japan2026-06-10
1046Italy2026-05-17
1047Russia2026-05-26
1048Japan2026-05-16
1049United Kingdom2026-05-29

On-Demand Data

NameIdCountryDate
Morrow Ruta1000Germany2026-06-08
Darci Poquette1001Italy2026-05-25
Costa Dilliard1002Australia2026-06-09
Maria Marrier1003Japan2026-05-24
Nicolas Iturbide1004Russia2026-06-09
Mujtaba Nicka1005United Kingdom2026-05-16
Antonio Caudy1006India2026-05-20
Chavez Briddick1007Brazil2026-05-18
James Butt1008Italy2026-06-05
Chavez Briddick1009Italy2026-06-02
Costa Dilliard1010India2026-06-03
Sinclair Waycott1011Australia2026-06-11
Johnson Sergi1012Argentina2026-05-22
Jones Vocelka1013Japan2026-06-07
James Butt1014Japan2026-05-23
Juan Wieser1015France2026-05-17
Mujtaba Nicka1016Australia2026-06-02
Costa Dilliard1017Canada2026-05-20
Munro Ferencz1018Italy2026-06-07
Ivar Paprocki1019United Kingdom2026-05-19
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ashley DoeSpainStephen Shaw UNQUALIFIED
Wickens NestleBrazilIvan Magalhaes NEW
Morrow RutaCanadaAmy Elsner QUALIFIED
Octavia MaletCanadaXuxue Feng UNQUALIFIED
Johnson SergiArgentinaBernardo Dominic UNQUALIFIED
Jones VocelkaBrazilBernardo Dominic NEGOTIATION
Ivar PaprockiGermanyIoni Bowcher UNQUALIFIED
Kadeem FlosiArgentinaAnna Fali NEW
Sinclair WaycottSpainAsiya Javayant RENEWAL
Juan WieserItalyOnyama Limba UNQUALIFIED
Wickens NestleBrazilXuxue Feng PROPOSAL
Nicolas IturbideIndiaStephen Shaw PROPOSAL
David DarakjyBrazilXuxue Feng PROPOSAL
Adams MorascaSpainStephen Shaw NEW
Cody SaylorsFranceAmy Elsner QUALIFIED
Maisha RulapaughIndiaAmy Elsner NEW
Emily WhobreySpainXuxue Feng QUALIFIED
Costa DilliardBrazilAsiya Javayant NEW
Jennifer AmigonAustraliaAsiya Javayant UNQUALIFIED
Munro FerenczUnited KingdomElwin Sharvill NEW
Izzy GarufiAustraliaIvan Magalhaes NEW
Octavia MaletJapanIvan Magalhaes NEW
Morrow RutaGermanyXuxue Feng NEGOTIATION
Aditya KuskoBrazilIoni Bowcher QUALIFIED
Cody SaylorsCanadaAnna Fali UNQUALIFIED
Isabel BowleyRussiaAnna Fali QUALIFIED
Antonio CaudyBrazilIoni Bowcher UNQUALIFIED
Leja CaldareraRussiaAsiya Javayant UNQUALIFIED
Ashley DoeSpainIoni Bowcher UNQUALIFIED
Jones VocelkaAustraliaElwin Sharvill QUALIFIED
Darci PoquetteItalyBernardo Dominic NEW
Smith GlickFranceElwin Sharvill NEW
Aditya KuskoSpainIvan Magalhaes NEGOTIATION
Claire TollnerIndiaOnyama Limba QUALIFIED
Juan WieserItalyElwin Sharvill PROPOSAL
Johnson SergiArgentinaIoni Bowcher NEW
Kaitlin OstroskyJapanAmy Elsner QUALIFIED
Morrow RutaUnited KingdomElwin Sharvill NEW
Leon OldroydIndiaXuxue Feng PROPOSAL
Alejandro PerinRussiaIoni Bowcher 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>