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
Jones VocelkaCanadaBernardo Dominic NEW
Maria MarrierJapanStephen Shaw RENEWAL
Munro FerenczIndiaStephen Shaw PROPOSAL
Mujtaba NickaJapanAmy Elsner QUALIFIED
Antonio CaudyCanadaXuxue Feng UNQUALIFIED
Faith GillianUnited KingdomIoni Bowcher RENEWAL
Chavez BriddickFranceAnna Fali UNQUALIFIED
Morrow RutaSpainOnyama Limba UNQUALIFIED
Cody SaylorsItalyIvan Magalhaes RENEWAL
Izzy GarufiArgentinaIvan Magalhaes PROPOSAL
Darci PoquetteBrazilXuxue Feng RENEWAL
Stacey MacleadGermanyAsiya Javayant NEGOTIATION
Salvatore StockhamUnited KingdomAnna Fali UNQUALIFIED
Munro FerenczRussiaBernardo Dominic PROPOSAL
Isabel BowleyIndiaStephen Shaw UNQUALIFIED
Leja CaldareraItalyBernardo Dominic RENEWAL
Chavez BriddickSpainOnyama Limba QUALIFIED
Stacey MacleadBrazilStephen Shaw PROPOSAL
Aditya KuskoJapanAnna Fali UNQUALIFIED
Juan WieserCanadaAnna Fali QUALIFIED
Stacey MacleadSpainElwin Sharvill NEW
Chavez BriddickItalyAmy Elsner PROPOSAL
Cody SaylorsRussiaAmy Elsner NEW
Chavez BriddickIndiaAnna Fali UNQUALIFIED
Antonio CaudyAustraliaStephen Shaw QUALIFIED
David DarakjyCanadaOnyama Limba UNQUALIFIED
Misaki RoysterUnited KingdomAnna Fali PROPOSAL
Adams MorascaJapanElwin Sharvill NEGOTIATION
Sinclair WaycottCanadaAnna Fali UNQUALIFIED
Kaitlin OstroskyItalyBernardo Dominic NEGOTIATION
Silvio SlusarskiCanadaAmy Elsner PROPOSAL
Aditya KuskoSpainAnna Fali RENEWAL
Sinclair WaycottUnited KingdomBernardo Dominic RENEWAL
Alejandro PerinUnited KingdomBernardo Dominic RENEWAL
Costa DilliardUnited KingdomXuxue Feng QUALIFIED
Francesco ShinkoIndiaIoni Bowcher NEW
Claire TollnerGermanyAmy Elsner QUALIFIED
Sinclair WaycottAustraliaXuxue Feng RENEWAL
Salvatore StockhamItalyAnna Fali NEW
Salvatore StockhamBrazilStephen Shaw NEGOTIATION
Clifford RimFranceIvan Magalhaes QUALIFIED
Jefferson SchemmerAustraliaIvan Magalhaes NEGOTIATION
Emily WhobreyUnited KingdomXuxue Feng NEGOTIATION
Emily WhobreyArgentinaIoni Bowcher UNQUALIFIED
Ivar PaprockiGermanyAnna Fali PROPOSAL
Johnson SergiArgentinaAmy Elsner NEGOTIATION
Maria MarrierBrazilBernardo Dominic RENEWAL
Alejandro PerinArgentinaOnyama Limba NEW
Ashley DoeIndiaIoni Bowcher NEGOTIATION
Clifford RimBrazilIvan Magalhaes QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Jefferson SchemmerArgentinaIoni Bowcher NEW
Maisha RulapaughArgentinaStephen Shaw RENEWAL
Greenwood BologniaArgentinaIoni Bowcher PROPOSAL
Darci PoquetteSpainBernardo Dominic RENEWAL
Tony FollerCanadaBernardo Dominic NEGOTIATION
Kadeem FlosiFranceOnyama Limba PROPOSAL
Darci PoquetteArgentinaOnyama Limba RENEWAL
Costa DilliardJapanAmy Elsner UNQUALIFIED
Costa DilliardArgentinaIoni Bowcher PROPOSAL
Johnson SergiBrazilAnna Fali UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Salvatore StockhamCanada2026-05-31King, Christopher A Esq RENEWAL79Onyama Limba
1001Aruna FigeroaBrazil2026-05-12Chanay, Jeffrey A Esq RENEWAL39Amy Elsner
1002Juan WieserJapan2026-05-15Benton, John B Jr UNQUALIFIED75Asiya Javayant
1003Aruna FigeroaRussia2026-05-11Rangoni Of Florence QUALIFIED90Xuxue Feng
1004Mayumi KolmetzBrazil2026-05-07Chemel, James L Cpa RENEWAL86Ivan Magalhaes
1005Ashley DoeFrance2026-06-02Chanay, Jeffrey A Esq UNQUALIFIED58Elwin Sharvill
1006Silvio SlusarskiCanada2026-06-02Benton, John B Jr PROPOSAL19Ivan Magalhaes
1007Cody SaylorsAustralia2026-05-20Feltz Printing Service NEGOTIATION4Asiya Javayant
1008Isabel BowleyFrance2026-05-09King, Christopher A Esq QUALIFIED66Onyama Limba
1009Silvio SlusarskiGermany2026-05-16Dorl, James J Esq RENEWAL22Asiya Javayant
1010Munro FerenczBrazil2026-05-19Feiner Bros PROPOSAL11Bernardo Dominic
1011Murillo MaletGermany2026-05-12Chemel, James L Cpa UNQUALIFIED43Anna Fali
1012Aika InouyeIndia2026-05-04Feiner Bros UNQUALIFIED73Ivan Magalhaes
1013Wickens NestleSpain2026-05-30Feltz Printing Service UNQUALIFIED11Onyama Limba
1014Ivar PaprockiCanada2026-05-10Benton, John B Jr UNQUALIFIED27Asiya Javayant
1015Smith GlickIndia2026-05-20Rousseaux, Michael Esq UNQUALIFIED10Ioni Bowcher
1016Jennifer AmigonArgentina2026-05-11Buckley Miller Wright RENEWAL6Asiya Javayant
1017Kadeem FlosiJapan2026-05-05Chanay, Jeffrey A Esq UNQUALIFIED17Elwin Sharvill
1018Mujtaba NickaArgentina2026-05-24Rangoni Of Florence UNQUALIFIED40Xuxue Feng
1019Kadeem FlosiIndia2026-05-19Chapman, Ross E Esq PROPOSAL94Asiya Javayant
1020Kaitlin OstroskyGermany2026-05-16Benton, John B Jr RENEWAL11Asiya Javayant
1021Silvio SlusarskiItaly2026-05-09Chanay, Jeffrey A Esq UNQUALIFIED13Ioni Bowcher
1022Stacey MacleadItaly2026-05-29Morlong Associates NEW91Amy Elsner
1023Sinclair WaycottUnited Kingdom2026-05-10Rangoni Of Florence PROPOSAL30Ivan Magalhaes
1024Costa DilliardRussia2026-05-10Truhlar And Truhlar Attys NEGOTIATION42Ioni Bowcher
1025Darci PoquetteFrance2026-05-10Truhlar And Truhlar Attys PROPOSAL78Xuxue Feng
1026Jeanfrancois VenereRussia2026-05-21Chemel, James L Cpa NEW18Bernardo Dominic
1027Antonio CaudyRussia2026-05-28Buckley Miller Wright NEW44Xuxue Feng
1028Morrow RutaIndia2026-05-25Rangoni Of Florence NEGOTIATION42Ivan Magalhaes
1029Tony FollerItaly2026-05-17Dorl, James J Esq NEGOTIATION42Ivan Magalhaes
1030Costa DilliardIndia2026-05-05Buckley Miller Wright RENEWAL71Xuxue Feng
1031James ButtIndia2026-05-12Truhlar And Truhlar Attys QUALIFIED47Ivan Magalhaes
1032Juan WieserFrance2026-05-26Benton, John B Jr NEGOTIATION6Asiya Javayant
1033James ButtAustralia2026-05-06Rangoni Of Florence PROPOSAL54Asiya Javayant
1034Leja CaldareraItaly2026-05-28Feltz Printing Service QUALIFIED29Elwin Sharvill
1035Greenwood BologniaJapan2026-05-07Benton, John B Jr NEW4Bernardo Dominic
1036Antonio CaudyJapan2026-05-09Chanay, Jeffrey A Esq NEGOTIATION55Stephen Shaw
1037Emily WhobreyFrance2026-05-30Rangoni Of Florence NEGOTIATION15Bernardo Dominic
1038James ButtFrance2026-05-15Dorl, James J Esq NEGOTIATION0Stephen Shaw
1039Aruna FigeroaIndia2026-05-31Commercial Press QUALIFIED48Ioni Bowcher
1040Julie StensethCanada2026-05-26Chapman, Ross E Esq PROPOSAL94Xuxue Feng
1041Clifford RimCanada2026-05-18Printing Dimensions RENEWAL83Ioni Bowcher
1042Murillo MaletGermany2026-05-31Benton, John B Jr UNQUALIFIED49Bernardo Dominic
1043David DarakjyUnited Kingdom2026-05-17Morlong Associates RENEWAL76Elwin Sharvill
1044Murillo MaletAustralia2026-05-24Printing Dimensions NEW61Xuxue Feng
1045Kadeem FlosiGermany2026-05-26Commercial Press NEW60Bernardo Dominic
1046Maisha RulapaughIndia2026-06-02Chemel, James L Cpa PROPOSAL98Elwin Sharvill
1047Emily WhobreySpain2026-05-29Chapman, Ross E Esq PROPOSAL17Bernardo Dominic
1048Deepesh ChuiFrance2026-05-28Truhlar And Truhlar Attys NEW67Xuxue Feng
1049Mayumi KolmetzJapan2026-05-13Truhlar And Truhlar Attys QUALIFIED1Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Murillo MaletGermanyAnna Fali NEGOTIATION
Tony FollerItalyAnna Fali NEGOTIATION
Francesco ShinkoGermanyIoni Bowcher PROPOSAL
Octavia MaletItalyStephen Shaw NEGOTIATION
Ricardo GauchoArgentinaAnna Fali NEW
Kaitlin OstroskyUnited KingdomIvan Magalhaes QUALIFIED
Ashley DoeAustraliaOnyama Limba NEGOTIATION
Adams MorascaCanadaXuxue Feng NEW
Johnson SergiAustraliaXuxue Feng QUALIFIED
Kaitlin OstroskyGermanyBernardo Dominic NEGOTIATION
Kadeem FlosiIndiaBernardo Dominic NEGOTIATION
Nicolas IturbideSpainStephen Shaw NEGOTIATION
Maria MarrierGermanyAmy Elsner UNQUALIFIED
Munro FerenczCanadaXuxue Feng RENEWAL
Alejandro PerinSpainIoni Bowcher RENEWAL
Salvatore StockhamIndiaOnyama Limba RENEWAL
Misaki RoysterSpainXuxue Feng UNQUALIFIED
Munro FerenczFranceAnna Fali NEW
Mujtaba NickaBrazilOnyama Limba RENEWAL
Kaitlin OstroskyIndiaIvan Magalhaes RENEWAL
Jefferson SchemmerArgentinaBernardo Dominic QUALIFIED
Salvatore StockhamCanadaBernardo Dominic UNQUALIFIED
Costa DilliardCanadaIvan Magalhaes NEW
Faith GillianIndiaAmy Elsner RENEWAL
Salvatore StockhamBrazilIvan Magalhaes NEW
Wickens NestleJapanIoni Bowcher PROPOSAL
Aika InouyeSpainBernardo Dominic RENEWAL
Nicolas IturbideFranceIoni Bowcher UNQUALIFIED
Kadeem FlosiBrazilAnna Fali RENEWAL
Salvatore StockhamIndiaAmy Elsner UNQUALIFIED
Silvio SlusarskiArgentinaIoni Bowcher NEW
Kaitlin OstroskyGermanyAnna Fali QUALIFIED
Clifford RimIndiaOnyama Limba RENEWAL
Aruna FigeroaArgentinaStephen Shaw QUALIFIED
Antonio CaudyBrazilStephen Shaw NEGOTIATION
Mayumi KolmetzFranceAnna Fali NEGOTIATION
James ButtAustraliaAnna Fali RENEWAL
Ivar PaprockiGermanyIoni Bowcher RENEWAL
Francesco ShinkoIndiaBernardo Dominic QUALIFIED
Izzy GarufiIndiaElwin Sharvill QUALIFIED
Francesco ShinkoRussiaElwin Sharvill QUALIFIED
Faith GillianJapanAnna Fali PROPOSAL
Smith GlickBrazilStephen Shaw QUALIFIED
Adams MorascaGermanyXuxue Feng PROPOSAL
Kadeem FlosiBrazilXuxue Feng NEGOTIATION
David DarakjyFranceAmy Elsner NEGOTIATION
Stacey MacleadGermanyElwin Sharvill UNQUALIFIED
Leja CaldareraRussiaOnyama Limba NEW
Smith GlickJapanAsiya Javayant UNQUALIFIED
Morrow RutaBrazilIoni Bowcher NEGOTIATION
Frozen Columns
Name
Adams Morasca
Chavez Briddick
Sinclair Waycott
Deepesh Chui
Isabel Bowley
Clifford Rim
Clifford Rim
Kaitlin Ostrosky
Mujtaba Nicka
Costa Dilliard
Octavia Malet
Wickens Nestle
Nicolas Iturbide
Leon Oldroyd
Wickens Nestle
Kadeem Flosi
Greenwood Bolognia
Maisha Rulapaugh
Leon Oldroyd
Deepesh Chui
Jennifer Amigon
Clifford Rim
Juan Wieser
Jennifer Amigon
Salvatore Stockham
Silvio Slusarski
Ashley Doe
Juan Wieser
Chavez Briddick
Maria Marrier
Leon Oldroyd
Ricardo Gaucho
Alejandro Perin
Cody Saylors
Jennifer Amigon
Smith Glick
Kadeem Flosi
Smith Glick
Isabel Bowley
Jennifer Amigon
Chavez Briddick
Wickens Nestle
Mayumi Kolmetz
Rodrigues Campain
Smith Glick
Johnson Sergi
Smith Glick
Mujtaba Nicka
James Butt
Maria Marrier
IdCountryDate
1000Spain2026-05-13
1001Argentina2026-05-22
1002Russia2026-05-27
1003France2026-05-21
1004Australia2026-05-16
1005Italy2026-05-31
1006Japan2026-05-11
1007Brazil2026-05-09
1008Canada2026-05-12
1009Italy2026-05-04
1010Italy2026-05-21
1011Brazil2026-05-26
1012Australia2026-05-04
1013Canada2026-05-04
1014India2026-05-24
1015India2026-05-12
1016United Kingdom2026-05-08
1017Canada2026-05-25
1018Argentina2026-05-29
1019Australia2026-05-07
1020Argentina2026-05-07
1021Australia2026-05-05
1022Spain2026-05-13
1023Argentina2026-05-22
1024Canada2026-05-10
1025Brazil2026-05-07
1026India2026-05-28
1027Spain2026-05-29
1028Brazil2026-05-16
1029Russia2026-06-01
1030Argentina2026-05-10
1031Argentina2026-05-25
1032India2026-05-24
1033Italy2026-05-12
1034Australia2026-05-30
1035Italy2026-05-14
1036Russia2026-05-12
1037Brazil2026-05-05
1038Argentina2026-05-08
1039Japan2026-05-16
1040Italy2026-05-19
1041Germany2026-05-24
1042Spain2026-05-18
1043Australia2026-05-18
1044Russia2026-05-11
1045United Kingdom2026-05-08
1046Japan2026-05-06
1047India2026-05-21
1048France2026-05-06
1049United Kingdom2026-05-16

On-Demand Data

NameIdCountryDate
Maisha Rulapaugh1000Canada2026-05-24
Misaki Royster1001Brazil2026-05-23
Leon Oldroyd1002United Kingdom2026-05-30
Silvio Slusarski1003Italy2026-05-21
Jeanfrancois Venere1004United Kingdom2026-05-22
Mayumi Kolmetz1005Australia2026-05-21
Darci Poquette1006Brazil2026-05-30
Juan Wieser1007Australia2026-06-01
Kadeem Flosi1008Canada2026-05-14
Sinclair Waycott1009Australia2026-05-14
Leja Caldarera1010Brazil2026-06-02
Maria Marrier1011Spain2026-05-05
Aditya Kusko1012Italy2026-05-11
Leja Caldarera1013India2026-05-26
Ivar Paprocki1014Argentina2026-05-25
Claire Tollner1015India2026-05-29
James Butt1016United Kingdom2026-05-07
Izzy Garufi1017Italy2026-05-17
Claire Tollner1018Italy2026-05-24
Leja Caldarera1019France2026-05-31
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Isabel BowleyArgentinaIoni Bowcher RENEWAL
James ButtBrazilAnna Fali NEW
Kadeem FlosiIndiaStephen Shaw QUALIFIED
Kadeem FlosiAustraliaXuxue Feng NEGOTIATION
Jennifer AmigonRussiaAnna Fali PROPOSAL
Costa DilliardBrazilIoni Bowcher PROPOSAL
Darci PoquetteSpainAmy Elsner RENEWAL
James ButtGermanyIvan Magalhaes RENEWAL
Jones VocelkaArgentinaAnna Fali UNQUALIFIED
Aruna FigeroaAustraliaAnna Fali UNQUALIFIED
Nicolas IturbideSpainAnna Fali NEGOTIATION
Johnson SergiGermanyIvan Magalhaes UNQUALIFIED
Alejandro PerinGermanyStephen Shaw PROPOSAL
Clifford RimFranceElwin Sharvill NEW
Leon OldroydAustraliaXuxue Feng NEGOTIATION
Kaitlin OstroskyJapanIoni Bowcher QUALIFIED
Alejandro PerinIndiaXuxue Feng NEGOTIATION
Darci PoquetteGermanyIvan Magalhaes QUALIFIED
Cody SaylorsFranceAmy Elsner UNQUALIFIED
Faith GillianItalyIvan Magalhaes UNQUALIFIED
Emily WhobreyRussiaOnyama Limba QUALIFIED
Alejandro PerinSpainOnyama Limba NEGOTIATION
Maria MarrierCanadaOnyama Limba NEW
Darci PoquetteUnited KingdomIvan Magalhaes QUALIFIED
Jones VocelkaGermanyStephen Shaw UNQUALIFIED
Misaki RoysterArgentinaElwin Sharvill UNQUALIFIED
Faith GillianBrazilElwin Sharvill UNQUALIFIED
Chavez BriddickFranceElwin Sharvill QUALIFIED
Jennifer AmigonFranceAmy Elsner UNQUALIFIED
Mayumi KolmetzGermanyElwin Sharvill RENEWAL
Murillo MaletBrazilXuxue Feng NEGOTIATION
Misaki RoysterItalyAmy Elsner QUALIFIED
Aika InouyeItalyXuxue Feng UNQUALIFIED
Aditya KuskoSpainXuxue Feng UNQUALIFIED
Leon OldroydJapanStephen Shaw NEGOTIATION
Faith GillianAustraliaAmy Elsner QUALIFIED
Darci PoquetteUnited KingdomAmy Elsner QUALIFIED
Greenwood BologniaBrazilStephen Shaw UNQUALIFIED
Wickens NestleArgentinaElwin Sharvill NEGOTIATION
Tony FollerArgentinaBernardo Dominic NEGOTIATION

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