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
Antonio CaudyBrazilIvan Magalhaes QUALIFIED
Maria MarrierUnited KingdomAnna Fali UNQUALIFIED
Izzy GarufiSpainAsiya Javayant RENEWAL
Misaki RoysterBrazilAsiya Javayant NEGOTIATION
Izzy GarufiItalyElwin Sharvill QUALIFIED
Maisha RulapaughSpainOnyama Limba QUALIFIED
Chavez BriddickIndiaElwin Sharvill NEW
Maisha RulapaughSpainStephen Shaw RENEWAL
Aditya KuskoBrazilAmy Elsner RENEWAL
Deepesh ChuiIndiaOnyama Limba QUALIFIED
Jeanfrancois VenereUnited KingdomBernardo Dominic UNQUALIFIED
Mujtaba NickaFranceIvan Magalhaes NEGOTIATION
Mayumi KolmetzRussiaStephen Shaw RENEWAL
Deepesh ChuiRussiaIoni Bowcher RENEWAL
Aika InouyeJapanBernardo Dominic PROPOSAL
Smith GlickFranceAnna Fali RENEWAL
Smith GlickCanadaStephen Shaw QUALIFIED
Greenwood BologniaArgentinaStephen Shaw NEW
Claire TollnerJapanStephen Shaw RENEWAL
Jeanfrancois VenereItalyOnyama Limba RENEWAL
Nicolas IturbideItalyAmy Elsner NEGOTIATION
Kaitlin OstroskyJapanStephen Shaw QUALIFIED
Maria MarrierItalyIoni Bowcher PROPOSAL
Izzy GarufiSpainAmy Elsner PROPOSAL
Clifford RimRussiaBernardo Dominic QUALIFIED
Costa DilliardBrazilAsiya Javayant PROPOSAL
Maria MarrierBrazilIvan Magalhaes QUALIFIED
Rodrigues CampainBrazilAsiya Javayant NEW
Jeanfrancois VenereUnited KingdomAnna Fali NEGOTIATION
Mayumi KolmetzIndiaAnna Fali UNQUALIFIED
Silvio SlusarskiUnited KingdomXuxue Feng NEW
Maria MarrierSpainIoni Bowcher UNQUALIFIED
Morrow RutaCanadaIoni Bowcher NEGOTIATION
Leon OldroydRussiaBernardo Dominic PROPOSAL
Adams MorascaIndiaAnna Fali NEW
Aditya KuskoBrazilOnyama Limba PROPOSAL
Jeanfrancois VenereItalyElwin Sharvill QUALIFIED
Octavia MaletGermanyBernardo Dominic NEW
Kadeem FlosiIndiaAnna Fali QUALIFIED
Nicolas IturbideGermanyAmy Elsner NEGOTIATION
James ButtSpainIvan Magalhaes NEW
Mayumi KolmetzJapanOnyama Limba NEW
Jennifer AmigonUnited KingdomStephen Shaw PROPOSAL
Jones VocelkaSpainIoni Bowcher RENEWAL
Salvatore StockhamIndiaBernardo Dominic NEGOTIATION
James ButtUnited KingdomAnna Fali RENEWAL
Aditya KuskoGermanyIoni Bowcher RENEWAL
Smith GlickSpainElwin Sharvill NEGOTIATION
Maria MarrierCanadaStephen Shaw NEW
Aika InouyeRussiaIvan Magalhaes RENEWAL
Horizontal
NameCountryRepresentativeStatus
Faith GillianArgentinaAsiya Javayant NEW
David DarakjyUnited KingdomXuxue Feng RENEWAL
Clifford RimFranceXuxue Feng NEGOTIATION
Smith GlickGermanyOnyama Limba QUALIFIED
Munro FerenczJapanIvan Magalhaes RENEWAL
Ricardo GauchoItalyOnyama Limba UNQUALIFIED
Mujtaba NickaRussiaXuxue Feng NEGOTIATION
Johnson SergiCanadaBernardo Dominic NEGOTIATION
Murillo MaletCanadaXuxue Feng NEGOTIATION
Kaitlin OstroskyArgentinaAmy Elsner RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Murillo MaletRussia2026-04-04Chanay, Jeffrey A Esq RENEWAL22Anna Fali
1001Arvin AlbaresRussia2026-03-29Truhlar And Truhlar Attys UNQUALIFIED37Ioni Bowcher
1002Isabel BowleyBrazil2026-03-26Printing Dimensions NEW79Bernardo Dominic
1003Jefferson SchemmerBrazil2026-04-15Dorl, James J Esq NEGOTIATION31Onyama Limba
1004Claire TollnerUnited Kingdom2026-04-12Printing Dimensions UNQUALIFIED72Amy Elsner
1005Rodrigues CampainJapan2026-04-10Chanay, Jeffrey A Esq UNQUALIFIED53Xuxue Feng
1006Jefferson SchemmerArgentina2026-03-23Buckley Miller Wright NEW28Elwin Sharvill
1007Ivar PaprockiAustralia2026-04-09Chanay, Jeffrey A Esq UNQUALIFIED13Ivan Magalhaes
1008Deepesh ChuiCanada2026-04-13Chemel, James L Cpa NEGOTIATION94Ioni Bowcher
1009Johnson SergiBrazil2026-03-23Chanay, Jeffrey A Esq NEGOTIATION74Xuxue Feng
1010Ricardo GauchoUnited Kingdom2026-04-16Dorl, James J Esq UNQUALIFIED63Xuxue Feng
1011David DarakjyIndia2026-04-08Commercial Press RENEWAL99Asiya Javayant
1012Leja CaldareraAustralia2026-04-07Morlong Associates QUALIFIED47Onyama Limba
1013Francesco ShinkoIndia2026-03-21Chapman, Ross E Esq UNQUALIFIED56Onyama Limba
1014Emily WhobreySpain2026-04-14Truhlar And Truhlar Attys PROPOSAL93Anna Fali
1015Deepesh ChuiGermany2026-03-31Feltz Printing Service RENEWAL46Stephen Shaw
1016Ashley DoeBrazil2026-04-10Morlong Associates UNQUALIFIED68Bernardo Dominic
1017Aika InouyeUnited Kingdom2026-04-04Buckley Miller Wright RENEWAL1Amy Elsner
1018Emily WhobreyUnited Kingdom2026-03-20Rousseaux, Michael Esq NEW50Xuxue Feng
1019Alejandro PerinArgentina2026-04-04Chapman, Ross E Esq QUALIFIED86Bernardo Dominic
1020Clifford RimFrance2026-03-21Rousseaux, Michael Esq NEGOTIATION35Asiya Javayant
1021Jefferson SchemmerRussia2026-03-27Chapman, Ross E Esq PROPOSAL33Anna Fali
1022Chavez BriddickSpain2026-04-11Chapman, Ross E Esq PROPOSAL78Ivan Magalhaes
1023Morrow RutaBrazil2026-03-31Chanay, Jeffrey A Esq RENEWAL58Ioni Bowcher
1024Misaki RoysterIndia2026-04-14Buckley Miller Wright PROPOSAL55Xuxue Feng
1025James ButtBrazil2026-03-31Feltz Printing Service RENEWAL21Stephen Shaw
1026Smith GlickIndia2026-03-20Truhlar And Truhlar Attys NEGOTIATION16Stephen Shaw
1027Clifford RimGermany2026-04-18King, Christopher A Esq QUALIFIED91Ivan Magalhaes
1028Aika InouyeGermany2026-03-31Buckley Miller Wright NEGOTIATION64Asiya Javayant
1029Jeanfrancois VenereBrazil2026-03-22Chanay, Jeffrey A Esq RENEWAL33Elwin Sharvill
1030Kadeem FlosiBrazil2026-03-22Feltz Printing Service NEW59Asiya Javayant
1031Morrow RutaCanada2026-04-06Dorl, James J Esq PROPOSAL31Asiya Javayant
1032Nicolas IturbideGermany2026-03-30Benton, John B Jr QUALIFIED35Ioni Bowcher
1033Arvin AlbaresUnited Kingdom2026-03-28Chapman, Ross E Esq RENEWAL78Anna Fali
1034Misaki RoysterItaly2026-04-04Chemel, James L Cpa PROPOSAL50Xuxue Feng
1035Mujtaba NickaCanada2026-03-25Chemel, James L Cpa QUALIFIED31Ivan Magalhaes
1036Clifford RimSpain2026-04-13Feiner Bros QUALIFIED45Xuxue Feng
1037Antonio CaudySpain2026-03-29Printing Dimensions NEGOTIATION54Ioni Bowcher
1038Emily WhobreyRussia2026-03-20King, Christopher A Esq UNQUALIFIED62Stephen Shaw
1039Johnson SergiAustralia2026-04-15Feiner Bros PROPOSAL71Asiya Javayant
1040Mujtaba NickaBrazil2026-03-23Chapman, Ross E Esq NEW15Ioni Bowcher
1041Murillo MaletIndia2026-04-14Chapman, Ross E Esq RENEWAL0Bernardo Dominic
1042Deepesh ChuiItaly2026-04-09Rangoni Of Florence RENEWAL31Bernardo Dominic
1043Jones VocelkaArgentina2026-04-04Rousseaux, Michael Esq QUALIFIED74Stephen Shaw
1044David DarakjyRussia2026-04-02Rousseaux, Michael Esq RENEWAL90Anna Fali
1045Deepesh ChuiIndia2026-04-14Commercial Press UNQUALIFIED22Ioni Bowcher
1046Claire TollnerGermany2026-04-10Buckley Miller Wright NEW95Elwin Sharvill
1047James ButtSpain2026-04-02Rousseaux, Michael Esq PROPOSAL20Stephen Shaw
1048Isabel BowleyJapan2026-04-11Printing Dimensions RENEWAL43Bernardo Dominic
1049Juan WieserArgentina2026-03-28Morlong Associates UNQUALIFIED48Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Stacey MacleadIndiaAsiya Javayant NEW
Wickens NestleBrazilOnyama Limba UNQUALIFIED
Faith GillianBrazilElwin Sharvill RENEWAL
Izzy GarufiItalyIoni Bowcher NEGOTIATION
Aruna FigeroaCanadaAmy Elsner UNQUALIFIED
Aditya KuskoBrazilIvan Magalhaes PROPOSAL
Mujtaba NickaIndiaStephen Shaw NEGOTIATION
Ricardo GauchoUnited KingdomAmy Elsner NEGOTIATION
Emily WhobreyArgentinaBernardo Dominic QUALIFIED
Silvio SlusarskiUnited KingdomOnyama Limba UNQUALIFIED
Ricardo GauchoSpainXuxue Feng UNQUALIFIED
Leja CaldareraArgentinaIoni Bowcher PROPOSAL
Ivar PaprockiCanadaElwin Sharvill NEGOTIATION
Ivar PaprockiIndiaIvan Magalhaes QUALIFIED
Kadeem FlosiUnited KingdomIvan Magalhaes RENEWAL
Wickens NestleFranceElwin Sharvill UNQUALIFIED
Isabel BowleyUnited KingdomIvan Magalhaes NEW
Murillo MaletGermanyOnyama Limba NEGOTIATION
David DarakjyUnited KingdomIoni Bowcher NEW
Nicolas IturbideItalyAmy Elsner QUALIFIED
Mujtaba NickaSpainIvan Magalhaes NEW
Mayumi KolmetzIndiaOnyama Limba NEGOTIATION
Aruna FigeroaGermanyXuxue Feng PROPOSAL
Maisha RulapaughCanadaAnna Fali NEGOTIATION
Morrow RutaFranceIoni Bowcher UNQUALIFIED
Rodrigues CampainBrazilElwin Sharvill PROPOSAL
Mujtaba NickaItalyXuxue Feng NEGOTIATION
Antonio CaudyArgentinaAsiya Javayant NEGOTIATION
Salvatore StockhamGermanyAnna Fali PROPOSAL
Isabel BowleyBrazilAnna Fali NEGOTIATION
Ivar PaprockiAustraliaAnna Fali NEW
Silvio SlusarskiBrazilIvan Magalhaes PROPOSAL
Mayumi KolmetzAustraliaStephen Shaw PROPOSAL
Kadeem FlosiIndiaIoni Bowcher PROPOSAL
Alejandro PerinItalyIoni Bowcher QUALIFIED
Wickens NestleFranceAmy Elsner NEW
Aruna FigeroaUnited KingdomIoni Bowcher QUALIFIED
Claire TollnerGermanyAsiya Javayant NEGOTIATION
Kaitlin OstroskyArgentinaAsiya Javayant QUALIFIED
Greenwood BologniaArgentinaStephen Shaw PROPOSAL
Aditya KuskoIndiaAsiya Javayant RENEWAL
Murillo MaletSpainIvan Magalhaes NEW
Greenwood BologniaRussiaStephen Shaw PROPOSAL
Misaki RoysterItalyBernardo Dominic QUALIFIED
Octavia MaletIndiaXuxue Feng NEGOTIATION
Jennifer AmigonRussiaAnna Fali UNQUALIFIED
Chavez BriddickIndiaStephen Shaw NEGOTIATION
Cody SaylorsSpainAsiya Javayant NEW
Smith GlickIndiaOnyama Limba PROPOSAL
Costa DilliardJapanBernardo Dominic PROPOSAL
Frozen Columns
Name
Salvatore Stockham
Claire Tollner
Jeanfrancois Venere
Octavia Malet
Ivar Paprocki
Octavia Malet
Ricardo Gaucho
Maria Marrier
Aruna Figeroa
Isabel Bowley
Ivar Paprocki
Sinclair Waycott
Salvatore Stockham
Julie Stenseth
Jennifer Amigon
Maisha Rulapaugh
Aditya Kusko
Isabel Bowley
James Butt
Emily Whobrey
Julie Stenseth
Emily Whobrey
Munro Ferencz
Murillo Malet
Stacey Maclead
Leja Caldarera
Julie Stenseth
Ashley Doe
Maria Marrier
Aruna Figeroa
Jones Vocelka
Johnson Sergi
Greenwood Bolognia
Aditya Kusko
Claire Tollner
Maisha Rulapaugh
James Butt
Kaitlin Ostrosky
Sinclair Waycott
Misaki Royster
Arvin Albares
Kaitlin Ostrosky
Aika Inouye
Jones Vocelka
Wickens Nestle
Izzy Garufi
Jones Vocelka
Stacey Maclead
Izzy Garufi
Misaki Royster
IdCountryDate
1000Japan2026-04-06
1001Spain2026-03-24
1002Canada2026-04-09
1003Germany2026-04-02
1004Spain2026-03-28
1005Brazil2026-03-20
1006Japan2026-04-05
1007Italy2026-03-26
1008United Kingdom2026-03-24
1009Russia2026-03-21
1010Brazil2026-04-05
1011Italy2026-04-10
1012Brazil2026-04-06
1013Australia2026-03-29
1014Russia2026-03-25
1015Germany2026-03-31
1016India2026-04-04
1017India2026-04-02
1018India2026-04-10
1019Germany2026-03-29
1020Spain2026-04-15
1021Spain2026-04-12
1022India2026-04-08
1023Spain2026-04-16
1024Brazil2026-04-03
1025Argentina2026-03-27
1026Russia2026-03-28
1027Germany2026-04-07
1028Australia2026-04-02
1029Australia2026-03-21
1030United Kingdom2026-04-17
1031Japan2026-03-27
1032Germany2026-04-09
1033Argentina2026-03-25
1034Australia2026-04-01
1035India2026-03-26
1036Italy2026-04-04
1037Australia2026-04-10
1038Canada2026-04-11
1039Brazil2026-03-28
1040Spain2026-03-22
1041Canada2026-03-28
1042Spain2026-04-10
1043Australia2026-03-31
1044Argentina2026-04-03
1045Italy2026-04-11
1046India2026-04-03
1047Brazil2026-03-21
1048Italy2026-04-10
1049France2026-04-11

On-Demand Data

NameIdCountryDate
Clifford Rim1000Japan2026-03-27
Ivar Paprocki1001Japan2026-04-16
Mujtaba Nicka1002Germany2026-04-06
Salvatore Stockham1003United Kingdom2026-03-22
Smith Glick1004Australia2026-04-12
Chavez Briddick1005Brazil2026-03-23
Johnson Sergi1006Canada2026-04-04
Clifford Rim1007Australia2026-03-29
Isabel Bowley1008Japan2026-03-31
Aika Inouye1009Brazil2026-04-17
Izzy Garufi1010Germany2026-04-05
Julie Stenseth1011United Kingdom2026-04-08
Julie Stenseth1012India2026-03-30
Maria Marrier1013Australia2026-03-29
Julie Stenseth1014Canada2026-04-06
Salvatore Stockham1015Italy2026-04-04
Ashley Doe1016Italy2026-04-04
Tony Foller1017Italy2026-04-03
Octavia Malet1018Canada2026-04-12
Arvin Albares1019Canada2026-04-10
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Deepesh ChuiAustraliaElwin Sharvill RENEWAL
Jones VocelkaAustraliaElwin Sharvill NEW
Aika InouyeAustraliaStephen Shaw NEW
Leja CaldareraIndiaXuxue Feng RENEWAL
Alejandro PerinArgentinaXuxue Feng NEW
Antonio CaudyItalyIvan Magalhaes NEGOTIATION
Claire TollnerAustraliaAmy Elsner QUALIFIED
Kaitlin OstroskyArgentinaBernardo Dominic UNQUALIFIED
Alejandro PerinUnited KingdomBernardo Dominic NEGOTIATION
Leon OldroydRussiaOnyama Limba PROPOSAL
Antonio CaudySpainBernardo Dominic NEGOTIATION
Maria MarrierBrazilAsiya Javayant QUALIFIED
Mujtaba NickaBrazilBernardo Dominic QUALIFIED
Kadeem FlosiFranceStephen Shaw NEW
David DarakjyJapanAmy Elsner RENEWAL
David DarakjyUnited KingdomStephen Shaw UNQUALIFIED
Arvin AlbaresAustraliaElwin Sharvill RENEWAL
Mayumi KolmetzJapanElwin Sharvill QUALIFIED
Maisha RulapaughArgentinaOnyama Limba NEW
Kadeem FlosiFranceAnna Fali RENEWAL
Faith GillianRussiaElwin Sharvill UNQUALIFIED
Johnson SergiUnited KingdomAmy Elsner QUALIFIED
Silvio SlusarskiUnited KingdomAmy Elsner PROPOSAL
Misaki RoysterArgentinaAmy Elsner PROPOSAL
Morrow RutaGermanyBernardo Dominic QUALIFIED
Maisha RulapaughJapanIoni Bowcher QUALIFIED
Ivar PaprockiSpainStephen Shaw NEGOTIATION
Clifford RimJapanStephen Shaw NEW
Emily WhobreyFranceElwin Sharvill NEGOTIATION
Ivar PaprockiFranceAmy Elsner QUALIFIED
Mayumi KolmetzIndiaAmy Elsner NEGOTIATION
Francesco ShinkoArgentinaOnyama Limba PROPOSAL
Jennifer AmigonSpainStephen Shaw UNQUALIFIED
Wickens NestleBrazilIoni Bowcher RENEWAL
Aditya KuskoBrazilElwin Sharvill RENEWAL
Mujtaba NickaSpainXuxue Feng PROPOSAL
Alejandro PerinRussiaXuxue Feng QUALIFIED
Alejandro PerinItalyOnyama Limba UNQUALIFIED
James ButtSpainOnyama Limba RENEWAL
James ButtJapanIvan Magalhaes 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>