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
Ashley DoeAustraliaStephen Shaw NEW
Mujtaba NickaUnited KingdomStephen Shaw PROPOSAL
Costa DilliardFranceIvan Magalhaes NEW
Jones VocelkaRussiaAsiya Javayant NEW
Johnson SergiCanadaElwin Sharvill PROPOSAL
Maisha RulapaughUnited KingdomAnna Fali NEW
Maisha RulapaughUnited KingdomXuxue Feng QUALIFIED
Aruna FigeroaBrazilStephen Shaw UNQUALIFIED
David DarakjyBrazilElwin Sharvill QUALIFIED
Kadeem FlosiSpainElwin Sharvill UNQUALIFIED
Izzy GarufiGermanyIvan Magalhaes RENEWAL
Clifford RimBrazilIoni Bowcher UNQUALIFIED
Cody SaylorsAustraliaIoni Bowcher RENEWAL
Salvatore StockhamGermanyOnyama Limba UNQUALIFIED
Cody SaylorsAustraliaElwin Sharvill NEGOTIATION
Jennifer AmigonArgentinaOnyama Limba PROPOSAL
Jones VocelkaArgentinaOnyama Limba NEW
Octavia MaletJapanOnyama Limba QUALIFIED
Darci PoquetteBrazilAsiya Javayant PROPOSAL
Leon OldroydBrazilAnna Fali UNQUALIFIED
Greenwood BologniaArgentinaXuxue Feng QUALIFIED
Kadeem FlosiGermanyIoni Bowcher RENEWAL
Clifford RimFranceOnyama Limba NEW
Kadeem FlosiJapanOnyama Limba PROPOSAL
Stacey MacleadCanadaStephen Shaw UNQUALIFIED
Deepesh ChuiItalyOnyama Limba QUALIFIED
Cody SaylorsBrazilAmy Elsner UNQUALIFIED
Cody SaylorsItalyOnyama Limba RENEWAL
Deepesh ChuiItalyBernardo Dominic NEW
Isabel BowleyAustraliaElwin Sharvill NEGOTIATION
Greenwood BologniaCanadaBernardo Dominic NEGOTIATION
Mujtaba NickaRussiaAnna Fali PROPOSAL
Mayumi KolmetzBrazilOnyama Limba QUALIFIED
Antonio CaudyFranceBernardo Dominic UNQUALIFIED
Sinclair WaycottUnited KingdomBernardo Dominic NEGOTIATION
Aika InouyeCanadaStephen Shaw UNQUALIFIED
Leja CaldareraJapanBernardo Dominic NEW
Antonio CaudyIndiaBernardo Dominic PROPOSAL
Morrow RutaSpainAmy Elsner RENEWAL
David DarakjyFranceOnyama Limba PROPOSAL
Mujtaba NickaIndiaStephen Shaw QUALIFIED
Mujtaba NickaAustraliaBernardo Dominic PROPOSAL
Rodrigues CampainArgentinaAnna Fali PROPOSAL
Wickens NestleSpainElwin Sharvill UNQUALIFIED
Sinclair WaycottFranceStephen Shaw PROPOSAL
Wickens NestleJapanStephen Shaw PROPOSAL
Salvatore StockhamGermanyAnna Fali NEGOTIATION
Mayumi KolmetzIndiaElwin Sharvill NEGOTIATION
Izzy GarufiArgentinaAnna Fali UNQUALIFIED
Salvatore StockhamJapanOnyama Limba UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Ashley DoeJapanElwin Sharvill PROPOSAL
Izzy GarufiBrazilIvan Magalhaes QUALIFIED
Morrow RutaSpainOnyama Limba RENEWAL
Maria MarrierUnited KingdomBernardo Dominic RENEWAL
Greenwood BologniaRussiaAmy Elsner NEW
Ivar PaprockiItalyOnyama Limba UNQUALIFIED
Mayumi KolmetzAustraliaAsiya Javayant NEGOTIATION
Kaitlin OstroskyAustraliaAsiya Javayant NEW
Smith GlickFranceIoni Bowcher NEGOTIATION
Isabel BowleyUnited KingdomElwin Sharvill NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Rodrigues CampainSpain2026-05-05Printing Dimensions RENEWAL28Xuxue Feng
1001Leja CaldareraRussia2026-05-11Rangoni Of Florence NEGOTIATION58Anna Fali
1002Jeanfrancois VenereUnited Kingdom2026-05-19Truhlar And Truhlar Attys PROPOSAL24Xuxue Feng
1003Jennifer AmigonSpain2026-05-30King, Christopher A Esq PROPOSAL23Asiya Javayant
1004James ButtSpain2026-05-29Rangoni Of Florence QUALIFIED95Ivan Magalhaes
1005Maria MarrierFrance2026-05-10Dorl, James J Esq UNQUALIFIED45Anna Fali
1006Nicolas IturbideUnited Kingdom2026-05-03Truhlar And Truhlar Attys UNQUALIFIED4Amy Elsner
1007David DarakjyUnited Kingdom2026-05-05Chanay, Jeffrey A Esq QUALIFIED17Stephen Shaw
1008Kadeem FlosiGermany2026-05-26Buckley Miller Wright QUALIFIED89Stephen Shaw
1009Kadeem FlosiBrazil2026-05-04Chemel, James L Cpa NEW26Asiya Javayant
1010Cody SaylorsUnited Kingdom2026-05-19Benton, John B Jr UNQUALIFIED79Ivan Magalhaes
1011Cody SaylorsAustralia2026-05-15Chanay, Jeffrey A Esq PROPOSAL40Ivan Magalhaes
1012Misaki RoysterRussia2026-05-05Commercial Press QUALIFIED48Asiya Javayant
1013Maisha RulapaughIndia2026-05-22Chapman, Ross E Esq PROPOSAL56Bernardo Dominic
1014Antonio CaudyJapan2026-05-16Chanay, Jeffrey A Esq NEGOTIATION26Bernardo Dominic
1015Costa DilliardSpain2026-05-14King, Christopher A Esq PROPOSAL67Ivan Magalhaes
1016Stacey MacleadFrance2026-05-08Morlong Associates PROPOSAL20Elwin Sharvill
1017Johnson SergiBrazil2026-05-07Feltz Printing Service NEGOTIATION16Asiya Javayant
1018David DarakjyIndia2026-05-14Benton, John B Jr QUALIFIED57Ivan Magalhaes
1019Munro FerenczFrance2026-05-28Truhlar And Truhlar Attys UNQUALIFIED40Ioni Bowcher
1020Munro FerenczGermany2026-05-07King, Christopher A Esq UNQUALIFIED5Amy Elsner
1021Jennifer AmigonItaly2026-05-30Rousseaux, Michael Esq QUALIFIED17Stephen Shaw
1022Adams MorascaJapan2026-05-26Buckley Miller Wright RENEWAL11Xuxue Feng
1023Cody SaylorsGermany2026-05-30Chapman, Ross E Esq RENEWAL33Onyama Limba
1024Adams MorascaIndia2026-05-04Feiner Bros UNQUALIFIED25Onyama Limba
1025Francesco ShinkoUnited Kingdom2026-05-25King, Christopher A Esq RENEWAL0Onyama Limba
1026Francesco ShinkoBrazil2026-05-04Truhlar And Truhlar Attys UNQUALIFIED75Ivan Magalhaes
1027Deepesh ChuiAustralia2026-05-23Feltz Printing Service PROPOSAL61Elwin Sharvill
1028Ricardo GauchoItaly2026-05-11Morlong Associates NEW45Ivan Magalhaes
1029Wickens NestleUnited Kingdom2026-05-21Feltz Printing Service NEGOTIATION45Amy Elsner
1030Jefferson SchemmerSpain2026-05-05Morlong Associates PROPOSAL99Asiya Javayant
1031Aditya KuskoFrance2026-05-02Feltz Printing Service NEW87Elwin Sharvill
1032Chavez BriddickAustralia2026-05-08Rousseaux, Michael Esq NEGOTIATION1Elwin Sharvill
1033Mayumi KolmetzItaly2026-05-08Chanay, Jeffrey A Esq NEW72Onyama Limba
1034Johnson SergiSpain2026-05-18Commercial Press NEGOTIATION0Bernardo Dominic
1035Mujtaba NickaItaly2026-05-03Rousseaux, Michael Esq NEW68Elwin Sharvill
1036Izzy GarufiCanada2026-05-02King, Christopher A Esq NEW64Onyama Limba
1037Emily WhobreyGermany2026-05-23Printing Dimensions RENEWAL59Asiya Javayant
1038Arvin AlbaresRussia2026-05-21Benton, John B Jr RENEWAL87Ivan Magalhaes
1039Jefferson SchemmerJapan2026-05-22Rangoni Of Florence RENEWAL38Ivan Magalhaes
1040Murillo MaletBrazil2026-05-23Commercial Press NEW39Amy Elsner
1041Octavia MaletItaly2026-05-07Chemel, James L Cpa NEW21Anna Fali
1042David DarakjyGermany2026-05-10Buckley Miller Wright NEGOTIATION10Xuxue Feng
1043Emily WhobreyRussia2026-05-08Truhlar And Truhlar Attys RENEWAL22Anna Fali
1044Ashley DoeAustralia2026-05-12Rousseaux, Michael Esq PROPOSAL18Ivan Magalhaes
1045Munro FerenczSpain2026-05-26Printing Dimensions QUALIFIED26Asiya Javayant
1046Misaki RoysterUnited Kingdom2026-05-14King, Christopher A Esq NEW74Stephen Shaw
1047Misaki RoysterFrance2026-05-17Chanay, Jeffrey A Esq UNQUALIFIED12Ioni Bowcher
1048Salvatore StockhamIndia2026-05-19Morlong Associates NEW33Ioni Bowcher
1049Ricardo GauchoGermany2026-05-11Commercial Press PROPOSAL62Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
James ButtAustraliaIoni Bowcher UNQUALIFIED
Chavez BriddickSpainAnna Fali UNQUALIFIED
Tony FollerCanadaElwin Sharvill NEGOTIATION
Nicolas IturbideArgentinaAnna Fali PROPOSAL
Francesco ShinkoItalyStephen Shaw NEW
Ivar PaprockiSpainAsiya Javayant QUALIFIED
Jones VocelkaRussiaStephen Shaw RENEWAL
Jeanfrancois VenereRussiaAsiya Javayant NEW
Jones VocelkaGermanyBernardo Dominic NEGOTIATION
Salvatore StockhamIndiaIvan Magalhaes PROPOSAL
Maisha RulapaughArgentinaBernardo Dominic NEGOTIATION
Emily WhobreyBrazilIvan Magalhaes RENEWAL
Cody SaylorsArgentinaIoni Bowcher QUALIFIED
Chavez BriddickRussiaAnna Fali QUALIFIED
Aika InouyeIndiaAnna Fali NEW
Mayumi KolmetzUnited KingdomIvan Magalhaes NEW
Kaitlin OstroskyJapanIvan Magalhaes RENEWAL
Stacey MacleadFranceAmy Elsner RENEWAL
Cody SaylorsUnited KingdomElwin Sharvill UNQUALIFIED
Arvin AlbaresBrazilIvan Magalhaes UNQUALIFIED
Aditya KuskoItalyOnyama Limba RENEWAL
Claire TollnerItalyAmy Elsner PROPOSAL
Kadeem FlosiAustraliaXuxue Feng NEGOTIATION
Antonio CaudyArgentinaAsiya Javayant QUALIFIED
Maria MarrierFranceAnna Fali NEW
Greenwood BologniaArgentinaXuxue Feng NEGOTIATION
Stacey MacleadBrazilElwin Sharvill UNQUALIFIED
Maria MarrierSpainXuxue Feng QUALIFIED
Alejandro PerinJapanAmy Elsner RENEWAL
Octavia MaletIndiaStephen Shaw NEW
Emily WhobreyGermanyAmy Elsner NEW
Munro FerenczIndiaIoni Bowcher NEW
Isabel BowleyGermanyBernardo Dominic NEGOTIATION
Cody SaylorsArgentinaAnna Fali UNQUALIFIED
Misaki RoysterFranceAsiya Javayant NEGOTIATION
Julie StensethGermanyElwin Sharvill NEW
Francesco ShinkoUnited KingdomXuxue Feng PROPOSAL
Faith GillianArgentinaIvan Magalhaes NEW
Cody SaylorsFranceAmy Elsner RENEWAL
Maisha RulapaughGermanyXuxue Feng NEGOTIATION
Johnson SergiItalyIoni Bowcher UNQUALIFIED
James ButtSpainIoni Bowcher NEW
Aruna FigeroaSpainStephen Shaw PROPOSAL
Jennifer AmigonBrazilAnna Fali PROPOSAL
Maria MarrierFranceAmy Elsner RENEWAL
Jennifer AmigonAustraliaAmy Elsner QUALIFIED
Munro FerenczItalyStephen Shaw NEGOTIATION
Sinclair WaycottRussiaAmy Elsner RENEWAL
Isabel BowleyRussiaElwin Sharvill PROPOSAL
Leja CaldareraGermanyIoni Bowcher NEGOTIATION
Frozen Columns
Name
Izzy Garufi
Munro Ferencz
Isabel Bowley
Antonio Caudy
Munro Ferencz
Kaitlin Ostrosky
Francesco Shinko
Wickens Nestle
Morrow Ruta
Smith Glick
Juan Wieser
Silvio Slusarski
Isabel Bowley
Costa Dilliard
Aruna Figeroa
Jefferson Schemmer
Francesco Shinko
Kaitlin Ostrosky
Kaitlin Ostrosky
Ivar Paprocki
Deepesh Chui
Tony Foller
Morrow Ruta
Clifford Rim
Greenwood Bolognia
Chavez Briddick
Aruna Figeroa
Morrow Ruta
Claire Tollner
Wickens Nestle
Leon Oldroyd
Chavez Briddick
Arvin Albares
Morrow Ruta
Jennifer Amigon
Claire Tollner
Maria Marrier
Faith Gillian
Arvin Albares
Claire Tollner
Juan Wieser
Francesco Shinko
Juan Wieser
Maisha Rulapaugh
Jeanfrancois Venere
Chavez Briddick
Morrow Ruta
Mayumi Kolmetz
Wickens Nestle
Darci Poquette
IdCountryDate
1000France2026-05-21
1001Russia2026-05-16
1002Brazil2026-05-15
1003Spain2026-05-22
1004Germany2026-05-28
1005United Kingdom2026-05-13
1006Australia2026-05-06
1007Spain2026-05-13
1008France2026-05-20
1009Brazil2026-05-22
1010Germany2026-05-15
1011Germany2026-05-11
1012Brazil2026-05-30
1013Italy2026-05-15
1014Brazil2026-05-07
1015Argentina2026-05-20
1016Japan2026-05-09
1017Italy2026-05-28
1018Russia2026-05-19
1019India2026-05-26
1020Spain2026-05-24
1021Canada2026-05-10
1022Australia2026-05-14
1023Argentina2026-05-23
1024Spain2026-05-14
1025Spain2026-05-28
1026Canada2026-05-04
1027Canada2026-05-12
1028United Kingdom2026-05-01
1029Australia2026-05-13
1030Brazil2026-05-07
1031Australia2026-05-29
1032Russia2026-05-02
1033Argentina2026-05-01
1034Argentina2026-05-22
1035Argentina2026-05-28
1036Russia2026-05-14
1037Italy2026-05-15
1038Japan2026-05-25
1039Russia2026-05-29
1040France2026-05-27
1041Spain2026-05-09
1042India2026-05-08
1043Argentina2026-05-04
1044France2026-05-13
1045Italy2026-05-26
1046United Kingdom2026-05-01
1047Australia2026-05-17
1048Japan2026-05-29
1049France2026-05-24

On-Demand Data

NameIdCountryDate
Isabel Bowley1000India2026-05-14
Ricardo Gaucho1001Argentina2026-05-30
Francesco Shinko1002Japan2026-05-16
Smith Glick1003Brazil2026-05-01
Nicolas Iturbide1004India2026-05-11
Jefferson Schemmer1005Japan2026-05-14
Sinclair Waycott1006France2026-05-13
Greenwood Bolognia1007Japan2026-05-07
Kaitlin Ostrosky1008Germany2026-05-25
Jones Vocelka1009France2026-05-10
Claire Tollner1010Spain2026-05-18
Emily Whobrey1011Italy2026-05-19
David Darakjy1012Italy2026-05-18
Morrow Ruta1013Australia2026-05-03
Rodrigues Campain1014India2026-05-22
Murillo Malet1015Russia2026-05-03
Izzy Garufi1016Spain2026-05-24
Jennifer Amigon1017Argentina2026-05-23
Johnson Sergi1018India2026-05-24
Arvin Albares1019France2026-05-01
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Cody SaylorsBrazilIvan Magalhaes QUALIFIED
Octavia MaletAustraliaAsiya Javayant PROPOSAL
Salvatore StockhamBrazilXuxue Feng QUALIFIED
Julie StensethBrazilAsiya Javayant NEGOTIATION
James ButtBrazilAsiya Javayant NEGOTIATION
Wickens NestleFranceIvan Magalhaes NEGOTIATION
Leon OldroydBrazilIvan Magalhaes PROPOSAL
Salvatore StockhamArgentinaBernardo Dominic NEGOTIATION
Stacey MacleadIndiaXuxue Feng QUALIFIED
Misaki RoysterCanadaIvan Magalhaes UNQUALIFIED
Nicolas IturbideSpainIvan Magalhaes RENEWAL
Deepesh ChuiCanadaAnna Fali NEGOTIATION
Octavia MaletCanadaXuxue Feng RENEWAL
Costa DilliardIndiaBernardo Dominic NEW
Francesco ShinkoGermanyIvan Magalhaes QUALIFIED
Juan WieserArgentinaAsiya Javayant NEW
Deepesh ChuiIndiaStephen Shaw UNQUALIFIED
Emily WhobreyUnited KingdomIvan Magalhaes UNQUALIFIED
Darci PoquetteRussiaAnna Fali QUALIFIED
Johnson SergiArgentinaIvan Magalhaes UNQUALIFIED
Darci PoquetteIndiaElwin Sharvill QUALIFIED
Wickens NestleFranceAsiya Javayant UNQUALIFIED
Nicolas IturbideItalyAmy Elsner NEW
Aika InouyeUnited KingdomAmy Elsner QUALIFIED
Aruna FigeroaUnited KingdomIvan Magalhaes QUALIFIED
Aruna FigeroaJapanElwin Sharvill RENEWAL
Wickens NestleRussiaIoni Bowcher PROPOSAL
Silvio SlusarskiArgentinaElwin Sharvill NEW
David DarakjySpainAmy Elsner NEGOTIATION
Juan WieserBrazilStephen Shaw PROPOSAL
Mayumi KolmetzUnited KingdomOnyama Limba PROPOSAL
Sinclair WaycottFranceStephen Shaw PROPOSAL
Greenwood BologniaRussiaAmy Elsner NEGOTIATION
Isabel BowleyUnited KingdomAmy Elsner RENEWAL
Silvio SlusarskiIndiaOnyama Limba RENEWAL
Sinclair WaycottAustraliaOnyama Limba NEW
Kadeem FlosiSpainAnna Fali RENEWAL
Munro FerenczIndiaAnna Fali RENEWAL
Antonio CaudyArgentinaStephen Shaw PROPOSAL
Murillo MaletSpainAsiya Javayant 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>