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
Aika InouyeUnited KingdomAnna Fali NEGOTIATION
Munro FerenczBrazilOnyama Limba PROPOSAL
Alejandro PerinGermanyAmy Elsner NEGOTIATION
Kadeem FlosiIndiaElwin Sharvill NEGOTIATION
Julie StensethSpainAmy Elsner PROPOSAL
Smith GlickCanadaStephen Shaw NEGOTIATION
Juan WieserFranceIvan Magalhaes UNQUALIFIED
Morrow RutaRussiaBernardo Dominic NEGOTIATION
Emily WhobreyBrazilIoni Bowcher RENEWAL
Tony FollerAustraliaAnna Fali UNQUALIFIED
Izzy GarufiCanadaIvan Magalhaes QUALIFIED
Sinclair WaycottGermanyAsiya Javayant QUALIFIED
James ButtSpainAmy Elsner UNQUALIFIED
Leja CaldareraRussiaAmy Elsner NEW
Mayumi KolmetzAustraliaIoni Bowcher PROPOSAL
Maisha RulapaughJapanIvan Magalhaes UNQUALIFIED
Mayumi KolmetzBrazilOnyama Limba RENEWAL
Costa DilliardSpainStephen Shaw RENEWAL
Jennifer AmigonRussiaAsiya Javayant QUALIFIED
Izzy GarufiGermanyOnyama Limba NEW
Francesco ShinkoBrazilOnyama Limba NEGOTIATION
Mayumi KolmetzArgentinaAnna Fali UNQUALIFIED
Jones VocelkaAustraliaOnyama Limba PROPOSAL
Francesco ShinkoRussiaIoni Bowcher RENEWAL
Aditya KuskoGermanyIoni Bowcher RENEWAL
Kadeem FlosiSpainOnyama Limba PROPOSAL
Tony FollerRussiaAsiya Javayant QUALIFIED
Ashley DoeFranceAsiya Javayant NEW
Francesco ShinkoItalyAnna Fali QUALIFIED
Cody SaylorsRussiaAmy Elsner RENEWAL
Darci PoquetteAustraliaBernardo Dominic RENEWAL
Alejandro PerinArgentinaAnna Fali RENEWAL
Leja CaldareraJapanBernardo Dominic PROPOSAL
Mujtaba NickaSpainOnyama Limba RENEWAL
Juan WieserBrazilXuxue Feng RENEWAL
Jefferson SchemmerAustraliaOnyama Limba NEW
Ivar PaprockiFranceStephen Shaw NEGOTIATION
Rodrigues CampainCanadaXuxue Feng NEW
Maria MarrierAustraliaStephen Shaw RENEWAL
Juan WieserBrazilAmy Elsner RENEWAL
Kaitlin OstroskySpainXuxue Feng NEW
Izzy GarufiAustraliaBernardo Dominic UNQUALIFIED
Jennifer AmigonAustraliaBernardo Dominic QUALIFIED
Emily WhobreyGermanyElwin Sharvill PROPOSAL
Aika InouyeItalyAnna Fali QUALIFIED
Leon OldroydRussiaAmy Elsner NEGOTIATION
Murillo MaletItalyBernardo Dominic NEW
Murillo MaletCanadaAmy Elsner NEGOTIATION
Isabel BowleyAustraliaAmy Elsner QUALIFIED
Ashley DoeJapanStephen Shaw NEW
Horizontal
NameCountryRepresentativeStatus
Clifford RimArgentinaStephen Shaw RENEWAL
Greenwood BologniaBrazilElwin Sharvill PROPOSAL
Darci PoquetteIndiaAmy Elsner UNQUALIFIED
Morrow RutaGermanyStephen Shaw UNQUALIFIED
Kaitlin OstroskyGermanyStephen Shaw UNQUALIFIED
Costa DilliardIndiaAnna Fali PROPOSAL
Maisha RulapaughArgentinaAsiya Javayant QUALIFIED
Leja CaldareraIndiaIvan Magalhaes NEW
Maria MarrierArgentinaAnna Fali QUALIFIED
Wickens NestleGermanyElwin Sharvill NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Silvio SlusarskiUnited Kingdom2026-06-07Feltz Printing Service QUALIFIED25Bernardo Dominic
1001Mayumi KolmetzRussia2026-06-13Feiner Bros PROPOSAL96Stephen Shaw
1002Munro FerenczAustralia2026-05-28Printing Dimensions PROPOSAL64Bernardo Dominic
1003Tony FollerAustralia2026-05-27Rousseaux, Michael Esq NEW36Elwin Sharvill
1004Costa DilliardItaly2026-06-15Rangoni Of Florence NEW6Stephen Shaw
1005Misaki RoysterJapan2026-06-07Buckley Miller Wright UNQUALIFIED60Xuxue Feng
1006Mujtaba NickaJapan2026-06-07Dorl, James J Esq NEGOTIATION59Stephen Shaw
1007Deepesh ChuiFrance2026-06-08King, Christopher A Esq UNQUALIFIED39Ioni Bowcher
1008Chavez BriddickArgentina2026-05-25Chapman, Ross E Esq QUALIFIED38Onyama Limba
1009Mujtaba NickaUnited Kingdom2026-06-04Truhlar And Truhlar Attys NEGOTIATION57Anna Fali
1010David DarakjyCanada2026-06-09Benton, John B Jr RENEWAL42Anna Fali
1011Murillo MaletSpain2026-06-08Chemel, James L Cpa QUALIFIED60Xuxue Feng
1012Tony FollerItaly2026-06-06Chemel, James L Cpa NEGOTIATION98Ivan Magalhaes
1013Aditya KuskoIndia2026-06-05Rousseaux, Michael Esq RENEWAL95Anna Fali
1014Ivar PaprockiUnited Kingdom2026-05-30Chanay, Jeffrey A Esq PROPOSAL23Anna Fali
1015Darci PoquetteFrance2026-05-26Commercial Press NEW17Ioni Bowcher
1016Salvatore StockhamItaly2026-05-25Printing Dimensions RENEWAL8Stephen Shaw
1017Jefferson SchemmerAustralia2026-06-20Chapman, Ross E Esq UNQUALIFIED74Anna Fali
1018Clifford RimArgentina2026-06-02Feltz Printing Service PROPOSAL63Xuxue Feng
1019Antonio CaudyGermany2026-06-02Rousseaux, Michael Esq PROPOSAL80Bernardo Dominic
1020Chavez BriddickAustralia2026-05-29Morlong Associates QUALIFIED93Ivan Magalhaes
1021Maria MarrierRussia2026-06-07Chanay, Jeffrey A Esq RENEWAL5Onyama Limba
1022Jennifer AmigonArgentina2026-06-17Chemel, James L Cpa NEGOTIATION75Amy Elsner
1023Murillo MaletSpain2026-05-22Truhlar And Truhlar Attys RENEWAL18Elwin Sharvill
1024Murillo MaletBrazil2026-05-31Buckley Miller Wright QUALIFIED24Elwin Sharvill
1025Aruna FigeroaCanada2026-06-15Morlong Associates QUALIFIED11Amy Elsner
1026Julie StensethSpain2026-05-28Chanay, Jeffrey A Esq QUALIFIED39Asiya Javayant
1027Jefferson SchemmerGermany2026-06-20Buckley Miller Wright UNQUALIFIED68Elwin Sharvill
1028Kaitlin OstroskyItaly2026-05-25King, Christopher A Esq PROPOSAL40Amy Elsner
1029Aika InouyeJapan2026-06-13Chemel, James L Cpa QUALIFIED55Elwin Sharvill
1030Darci PoquetteAustralia2026-06-08Truhlar And Truhlar Attys PROPOSAL46Asiya Javayant
1031Arvin AlbaresGermany2026-06-13Commercial Press PROPOSAL23Onyama Limba
1032Maria MarrierArgentina2026-06-10Rangoni Of Florence UNQUALIFIED5Ivan Magalhaes
1033Ricardo GauchoRussia2026-05-23King, Christopher A Esq NEW87Amy Elsner
1034Arvin AlbaresJapan2026-06-01Chapman, Ross E Esq UNQUALIFIED35Ivan Magalhaes
1035Emily WhobreyAustralia2026-05-29Rousseaux, Michael Esq NEW77Bernardo Dominic
1036Ashley DoeUnited Kingdom2026-05-30Chanay, Jeffrey A Esq QUALIFIED36Onyama Limba
1037Aruna FigeroaCanada2026-06-16Feltz Printing Service RENEWAL56Ivan Magalhaes
1038Costa DilliardUnited Kingdom2026-06-20Rangoni Of Florence RENEWAL85Ivan Magalhaes
1039Juan WieserGermany2026-06-19Rousseaux, Michael Esq PROPOSAL38Stephen Shaw
1040Greenwood BologniaRussia2026-06-19Feiner Bros NEGOTIATION25Asiya Javayant
1041Ricardo GauchoAustralia2026-06-20Feltz Printing Service RENEWAL6Anna Fali
1042Greenwood BologniaJapan2026-06-09Feltz Printing Service QUALIFIED11Stephen Shaw
1043David DarakjySpain2026-06-19Commercial Press NEGOTIATION61Bernardo Dominic
1044Johnson SergiGermany2026-06-01Chanay, Jeffrey A Esq NEGOTIATION70Ivan Magalhaes
1045Julie StensethArgentina2026-05-28Rangoni Of Florence PROPOSAL60Ivan Magalhaes
1046Maisha RulapaughJapan2026-06-06Rangoni Of Florence UNQUALIFIED63Stephen Shaw
1047Isabel BowleySpain2026-06-20Benton, John B Jr QUALIFIED1Ivan Magalhaes
1048Nicolas IturbideFrance2026-06-04Dorl, James J Esq RENEWAL69Amy Elsner
1049Misaki RoysterSpain2026-06-16Chemel, James L Cpa PROPOSAL34Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Jefferson SchemmerJapanAnna Fali UNQUALIFIED
Alejandro PerinFranceIoni Bowcher NEGOTIATION
James ButtAustraliaStephen Shaw UNQUALIFIED
Aruna FigeroaSpainAsiya Javayant NEW
Emily WhobreyIndiaBernardo Dominic UNQUALIFIED
Tony FollerCanadaAmy Elsner NEW
Misaki RoysterRussiaBernardo Dominic PROPOSAL
Emily WhobreyUnited KingdomOnyama Limba NEGOTIATION
Clifford RimFranceAmy Elsner NEW
Johnson SergiIndiaAmy Elsner NEGOTIATION
Rodrigues CampainJapanAsiya Javayant PROPOSAL
Faith GillianSpainAmy Elsner NEGOTIATION
Adams MorascaUnited KingdomAmy Elsner PROPOSAL
Aditya KuskoJapanIvan Magalhaes QUALIFIED
Greenwood BologniaSpainAsiya Javayant NEGOTIATION
Jefferson SchemmerFranceBernardo Dominic PROPOSAL
Jones VocelkaJapanAmy Elsner NEGOTIATION
Emily WhobreyGermanyAsiya Javayant NEW
Kaitlin OstroskyJapanXuxue Feng NEW
Smith GlickAustraliaAnna Fali QUALIFIED
Darci PoquetteArgentinaIvan Magalhaes UNQUALIFIED
Stacey MacleadItalyIoni Bowcher PROPOSAL
Jeanfrancois VenereBrazilAnna Fali UNQUALIFIED
Octavia MaletIndiaAmy Elsner QUALIFIED
Munro FerenczAustraliaOnyama Limba NEW
Izzy GarufiGermanyAsiya Javayant UNQUALIFIED
Rodrigues CampainBrazilXuxue Feng NEGOTIATION
Claire TollnerJapanXuxue Feng QUALIFIED
Leon OldroydItalyAsiya Javayant PROPOSAL
Ashley DoeArgentinaIvan Magalhaes QUALIFIED
Nicolas IturbideArgentinaIvan Magalhaes RENEWAL
Alejandro PerinRussiaElwin Sharvill QUALIFIED
Morrow RutaUnited KingdomBernardo Dominic UNQUALIFIED
Salvatore StockhamSpainOnyama Limba NEW
Faith GillianIndiaStephen Shaw UNQUALIFIED
Greenwood BologniaSpainBernardo Dominic RENEWAL
Isabel BowleyBrazilAsiya Javayant PROPOSAL
Sinclair WaycottUnited KingdomXuxue Feng QUALIFIED
Clifford RimFranceElwin Sharvill NEW
Smith GlickItalyIvan Magalhaes NEGOTIATION
Juan WieserJapanStephen Shaw UNQUALIFIED
James ButtFranceAmy Elsner RENEWAL
Arvin AlbaresGermanyElwin Sharvill QUALIFIED
Aruna FigeroaArgentinaIoni Bowcher UNQUALIFIED
Francesco ShinkoIndiaAmy Elsner UNQUALIFIED
Costa DilliardCanadaAsiya Javayant NEW
Jefferson SchemmerItalyOnyama Limba UNQUALIFIED
Leja CaldareraIndiaXuxue Feng QUALIFIED
Cody SaylorsFranceIoni Bowcher RENEWAL
Aruna FigeroaIndiaBernardo Dominic PROPOSAL
Frozen Columns
Name
Arvin Albares
Kadeem Flosi
Ricardo Gaucho
Munro Ferencz
Maria Marrier
Juan Wieser
Leja Caldarera
Aruna Figeroa
Arvin Albares
Silvio Slusarski
Johnson Sergi
Silvio Slusarski
Johnson Sergi
Murillo Malet
Ashley Doe
Emily Whobrey
Maisha Rulapaugh
Clifford Rim
Morrow Ruta
Mayumi Kolmetz
Munro Ferencz
Jeanfrancois Venere
Ricardo Gaucho
Juan Wieser
Isabel Bowley
Johnson Sergi
Ivar Paprocki
Arvin Albares
Maria Marrier
Maisha Rulapaugh
Jefferson Schemmer
Kaitlin Ostrosky
Leja Caldarera
Silvio Slusarski
Johnson Sergi
Maria Marrier
Kadeem Flosi
Ricardo Gaucho
Munro Ferencz
Jennifer Amigon
Darci Poquette
Ashley Doe
Alejandro Perin
Ricardo Gaucho
Jefferson Schemmer
Jeanfrancois Venere
Leja Caldarera
Nicolas Iturbide
Morrow Ruta
Mayumi Kolmetz
IdCountryDate
1000Argentina2026-06-16
1001Russia2026-05-25
1002Russia2026-06-05
1003Canada2026-06-19
1004Germany2026-05-23
1005Canada2026-06-17
1006Argentina2026-05-23
1007Canada2026-06-10
1008Brazil2026-05-30
1009United Kingdom2026-05-27
1010Spain2026-06-18
1011Spain2026-06-10
1012France2026-06-04
1013India2026-05-25
1014India2026-06-08
1015France2026-06-10
1016Russia2026-05-29
1017France2026-06-14
1018Germany2026-06-10
1019India2026-05-22
1020Argentina2026-06-15
1021France2026-06-19
1022France2026-06-11
1023Italy2026-05-29
1024United Kingdom2026-06-19
1025Brazil2026-06-14
1026Germany2026-05-25
1027United Kingdom2026-06-14
1028United Kingdom2026-06-01
1029Australia2026-05-24
1030United Kingdom2026-05-30
1031United Kingdom2026-06-04
1032Argentina2026-06-14
1033Russia2026-05-30
1034Argentina2026-06-14
1035United Kingdom2026-05-26
1036United Kingdom2026-06-05
1037India2026-06-15
1038Spain2026-06-03
1039Russia2026-06-14
1040Argentina2026-06-12
1041Spain2026-06-11
1042Italy2026-06-04
1043Argentina2026-06-09
1044Argentina2026-06-11
1045Spain2026-06-17
1046Russia2026-05-23
1047Japan2026-06-06
1048Germany2026-06-19
1049Canada2026-05-27

On-Demand Data

NameIdCountryDate
Stacey Maclead1000India2026-06-11
Faith Gillian1001Australia2026-06-09
Arvin Albares1002India2026-05-25
Kadeem Flosi1003United Kingdom2026-06-06
Greenwood Bolognia1004Germany2026-06-03
Sinclair Waycott1005Italy2026-05-30
Kaitlin Ostrosky1006France2026-06-05
Aditya Kusko1007India2026-05-22
Clifford Rim1008Canada2026-06-04
Salvatore Stockham1009United Kingdom2026-06-10
Kaitlin Ostrosky1010Japan2026-06-09
Maria Marrier1011India2026-06-13
Mayumi Kolmetz1012Spain2026-06-07
Emily Whobrey1013Spain2026-05-31
Stacey Maclead1014Germany2026-06-20
Clifford Rim1015United Kingdom2026-06-15
Darci Poquette1016Argentina2026-05-29
Clifford Rim1017Spain2026-05-30
Alejandro Perin1018Brazil2026-06-02
Francesco Shinko1019Germany2026-06-14
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Deepesh ChuiSpainAnna Fali RENEWAL
Nicolas IturbideFranceIvan Magalhaes PROPOSAL
Mayumi KolmetzUnited KingdomIoni Bowcher NEGOTIATION
Maria MarrierUnited KingdomOnyama Limba RENEWAL
Morrow RutaFranceBernardo Dominic NEW
Tony FollerIndiaXuxue Feng PROPOSAL
Morrow RutaBrazilIvan Magalhaes RENEWAL
Francesco ShinkoRussiaAmy Elsner PROPOSAL
Costa DilliardAustraliaIvan Magalhaes QUALIFIED
Murillo MaletUnited KingdomStephen Shaw NEGOTIATION
Ivar PaprockiBrazilStephen Shaw RENEWAL
Antonio CaudyAustraliaBernardo Dominic UNQUALIFIED
Aika InouyeUnited KingdomElwin Sharvill PROPOSAL
Clifford RimIndiaElwin Sharvill NEW
Ashley DoeCanadaAnna Fali PROPOSAL
Maisha RulapaughItalyXuxue Feng NEW
Claire TollnerIndiaAsiya Javayant UNQUALIFIED
Jeanfrancois VenereUnited KingdomElwin Sharvill RENEWAL
Murillo MaletGermanyOnyama Limba PROPOSAL
Smith GlickJapanXuxue Feng NEGOTIATION
Ivar PaprockiGermanyElwin Sharvill NEW
Francesco ShinkoSpainIoni Bowcher PROPOSAL
Munro FerenczCanadaIoni Bowcher NEW
Jefferson SchemmerRussiaAnna Fali RENEWAL
Silvio SlusarskiIndiaAsiya Javayant NEW
Tony FollerItalyIvan Magalhaes NEGOTIATION
Izzy GarufiItalyAnna Fali RENEWAL
Isabel BowleyBrazilAsiya Javayant RENEWAL
Maisha RulapaughSpainAsiya Javayant UNQUALIFIED
Jennifer AmigonAustraliaBernardo Dominic UNQUALIFIED
Misaki RoysterJapanXuxue Feng RENEWAL
Francesco ShinkoIndiaElwin Sharvill NEGOTIATION
Aditya KuskoItalyStephen Shaw RENEWAL
Antonio CaudyUnited KingdomOnyama Limba QUALIFIED
Jefferson SchemmerRussiaAmy Elsner PROPOSAL
Alejandro PerinCanadaAmy Elsner PROPOSAL
Julie StensethGermanyAnna Fali UNQUALIFIED
Ricardo GauchoGermanyAsiya Javayant NEW
Ashley DoeCanadaAmy Elsner NEGOTIATION
Aika InouyeFranceOnyama Limba 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>