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
Mayumi KolmetzItalyAsiya Javayant NEGOTIATION
Smith GlickIndiaAmy Elsner QUALIFIED
James ButtFranceIoni Bowcher NEW
Cody SaylorsArgentinaAnna Fali UNQUALIFIED
Ivar PaprockiGermanyStephen Shaw UNQUALIFIED
Aruna FigeroaIndiaIvan Magalhaes QUALIFIED
Maria MarrierFranceAmy Elsner NEGOTIATION
Ivar PaprockiAustraliaOnyama Limba PROPOSAL
Darci PoquetteUnited KingdomOnyama Limba UNQUALIFIED
Antonio CaudyUnited KingdomElwin Sharvill NEGOTIATION
Ricardo GauchoJapanAnna Fali NEGOTIATION
Ricardo GauchoUnited KingdomAmy Elsner PROPOSAL
Deepesh ChuiRussiaAnna Fali UNQUALIFIED
Aruna FigeroaFranceOnyama Limba NEGOTIATION
Julie StensethAustraliaBernardo Dominic UNQUALIFIED
Aika InouyeAustraliaIoni Bowcher PROPOSAL
Cody SaylorsCanadaElwin Sharvill RENEWAL
Emily WhobreyGermanyAsiya Javayant RENEWAL
Leja CaldareraBrazilAnna Fali QUALIFIED
Greenwood BologniaBrazilXuxue Feng UNQUALIFIED
Aika InouyeSpainAnna Fali PROPOSAL
Salvatore StockhamUnited KingdomOnyama Limba QUALIFIED
Adams MorascaAustraliaOnyama Limba NEGOTIATION
Kaitlin OstroskyGermanyElwin Sharvill RENEWAL
Adams MorascaCanadaElwin Sharvill QUALIFIED
Jones VocelkaSpainElwin Sharvill QUALIFIED
Emily WhobreyArgentinaAmy Elsner QUALIFIED
Arvin AlbaresItalyOnyama Limba UNQUALIFIED
Kadeem FlosiBrazilOnyama Limba NEW
Arvin AlbaresCanadaStephen Shaw QUALIFIED
Adams MorascaGermanyXuxue Feng NEW
Rodrigues CampainArgentinaAmy Elsner QUALIFIED
Costa DilliardArgentinaXuxue Feng QUALIFIED
Izzy GarufiAustraliaIoni Bowcher PROPOSAL
Kaitlin OstroskyBrazilAnna Fali QUALIFIED
Adams MorascaAustraliaBernardo Dominic PROPOSAL
Smith GlickItalyOnyama Limba RENEWAL
Rodrigues CampainBrazilAmy Elsner QUALIFIED
Jones VocelkaGermanyStephen Shaw RENEWAL
Ivar PaprockiSpainStephen Shaw PROPOSAL
Aditya KuskoIndiaElwin Sharvill NEW
Adams MorascaGermanyAnna Fali QUALIFIED
Maria MarrierArgentinaIvan Magalhaes NEW
Munro FerenczItalyElwin Sharvill NEW
Antonio CaudyItalyOnyama Limba QUALIFIED
Darci PoquetteJapanXuxue Feng NEGOTIATION
Wickens NestleFranceOnyama Limba PROPOSAL
Wickens NestleSpainAsiya Javayant PROPOSAL
Clifford RimSpainIoni Bowcher PROPOSAL
Chavez BriddickIndiaIvan Magalhaes RENEWAL
Horizontal
NameCountryRepresentativeStatus
Ashley DoeBrazilXuxue Feng RENEWAL
Clifford RimAustraliaXuxue Feng QUALIFIED
Mayumi KolmetzBrazilOnyama Limba QUALIFIED
Murillo MaletArgentinaAsiya Javayant UNQUALIFIED
Maisha RulapaughArgentinaOnyama Limba RENEWAL
Francesco ShinkoIndiaXuxue Feng NEGOTIATION
Ivar PaprockiAustraliaBernardo Dominic QUALIFIED
Ashley DoeCanadaIvan Magalhaes NEGOTIATION
Alejandro PerinUnited KingdomOnyama Limba PROPOSAL
Arvin AlbaresAustraliaIoni Bowcher PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Clifford RimAustralia2026-04-14Benton, John B Jr NEGOTIATION31Bernardo Dominic
1001Stacey MacleadGermany2026-04-10Feiner Bros QUALIFIED24Ivan Magalhaes
1002Izzy GarufiFrance2026-04-20Buckley Miller Wright RENEWAL69Amy Elsner
1003Arvin AlbaresAustralia2026-04-03Feltz Printing Service PROPOSAL77Anna Fali
1004Ashley DoeAustralia2026-03-29Commercial Press RENEWAL61Anna Fali
1005Kadeem FlosiJapan2026-04-16Feiner Bros UNQUALIFIED16Elwin Sharvill
1006Aruna FigeroaFrance2026-04-17King, Christopher A Esq UNQUALIFIED64Elwin Sharvill
1007Mayumi KolmetzGermany2026-03-27Chanay, Jeffrey A Esq QUALIFIED8Asiya Javayant
1008Deepesh ChuiItaly2026-03-30Feiner Bros UNQUALIFIED70Anna Fali
1009Tony FollerIndia2026-04-13Dorl, James J Esq UNQUALIFIED49Elwin Sharvill
1010Maisha RulapaughIndia2026-04-21Benton, John B Jr UNQUALIFIED34Bernardo Dominic
1011Claire TollnerItaly2026-04-12Truhlar And Truhlar Attys NEW55Elwin Sharvill
1012Leon OldroydCanada2026-04-21Dorl, James J Esq PROPOSAL34Xuxue Feng
1013Salvatore StockhamFrance2026-04-08Buckley Miller Wright QUALIFIED68Ivan Magalhaes
1014Mujtaba NickaIndia2026-04-21Commercial Press NEW76Ioni Bowcher
1015Maisha RulapaughArgentina2026-03-30Commercial Press NEW16Amy Elsner
1016Clifford RimBrazil2026-04-09Feltz Printing Service PROPOSAL41Stephen Shaw
1017Isabel BowleyAustralia2026-04-11Dorl, James J Esq NEW6Stephen Shaw
1018Morrow RutaGermany2026-04-05Benton, John B Jr PROPOSAL21Elwin Sharvill
1019Isabel BowleyBrazil2026-04-10Chapman, Ross E Esq NEGOTIATION9Ivan Magalhaes
1020Sinclair WaycottItaly2026-04-03Dorl, James J Esq NEGOTIATION55Stephen Shaw
1021Sinclair WaycottItaly2026-04-15Dorl, James J Esq NEW91Onyama Limba
1022Stacey MacleadFrance2026-04-13Chapman, Ross E Esq PROPOSAL73Ivan Magalhaes
1023Wickens NestleFrance2026-04-13Dorl, James J Esq PROPOSAL96Xuxue Feng
1024Nicolas IturbideRussia2026-04-13Chanay, Jeffrey A Esq PROPOSAL57Bernardo Dominic
1025Maria MarrierArgentina2026-04-04King, Christopher A Esq RENEWAL49Elwin Sharvill
1026Johnson SergiSpain2026-03-26Rangoni Of Florence UNQUALIFIED13Stephen Shaw
1027Isabel BowleyGermany2026-04-17Truhlar And Truhlar Attys PROPOSAL32Onyama Limba
1028Munro FerenczCanada2026-04-12Printing Dimensions QUALIFIED28Ioni Bowcher
1029Kadeem FlosiJapan2026-03-24Printing Dimensions UNQUALIFIED35Asiya Javayant
1030Deepesh ChuiJapan2026-04-05Rangoni Of Florence PROPOSAL91Ivan Magalhaes
1031Ricardo GauchoFrance2026-04-14Feltz Printing Service UNQUALIFIED87Elwin Sharvill
1032Antonio CaudySpain2026-04-17Rousseaux, Michael Esq UNQUALIFIED50Onyama Limba
1033Silvio SlusarskiArgentina2026-04-06Printing Dimensions NEGOTIATION79Anna Fali
1034Izzy GarufiCanada2026-03-26King, Christopher A Esq PROPOSAL25Elwin Sharvill
1035Izzy GarufiIndia2026-04-16Chemel, James L Cpa NEW31Stephen Shaw
1036Leon OldroydJapan2026-04-04Commercial Press UNQUALIFIED78Onyama Limba
1037Jefferson SchemmerItaly2026-04-14Morlong Associates PROPOSAL57Bernardo Dominic
1038Murillo MaletArgentina2026-04-19Morlong Associates RENEWAL85Asiya Javayant
1039Morrow RutaBrazil2026-04-21Benton, John B Jr NEGOTIATION81Amy Elsner
1040Maisha RulapaughGermany2026-04-02Dorl, James J Esq PROPOSAL22Bernardo Dominic
1041Rodrigues CampainItaly2026-04-11Morlong Associates UNQUALIFIED36Ivan Magalhaes
1042David DarakjyItaly2026-04-20Morlong Associates PROPOSAL9Amy Elsner
1043Salvatore StockhamItaly2026-04-07Chapman, Ross E Esq UNQUALIFIED66Ivan Magalhaes
1044Jennifer AmigonSpain2026-04-15Dorl, James J Esq RENEWAL24Asiya Javayant
1045James ButtFrance2026-04-09Chemel, James L Cpa QUALIFIED30Onyama Limba
1046Juan WieserFrance2026-04-04Rousseaux, Michael Esq RENEWAL46Bernardo Dominic
1047Aika InouyeIndia2026-04-20Printing Dimensions NEGOTIATION37Elwin Sharvill
1048Ivar PaprockiArgentina2026-04-06Commercial Press NEGOTIATION7Xuxue Feng
1049Aika InouyeBrazil2026-04-07Chemel, James L Cpa QUALIFIED96Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Ivar PaprockiRussiaXuxue Feng NEGOTIATION
James ButtCanadaElwin Sharvill PROPOSAL
Faith GillianFranceIvan Magalhaes PROPOSAL
Morrow RutaArgentinaOnyama Limba UNQUALIFIED
Jones VocelkaIndiaAsiya Javayant UNQUALIFIED
Julie StensethFranceIoni Bowcher UNQUALIFIED
Darci PoquetteCanadaStephen Shaw NEGOTIATION
Tony FollerFranceElwin Sharvill PROPOSAL
Maria MarrierArgentinaIvan Magalhaes NEW
Jones VocelkaSpainStephen Shaw UNQUALIFIED
Claire TollnerCanadaXuxue Feng PROPOSAL
Jefferson SchemmerIndiaAmy Elsner NEW
Jefferson SchemmerSpainXuxue Feng RENEWAL
Faith GillianItalyOnyama Limba NEW
Mujtaba NickaAustraliaAsiya Javayant NEW
Greenwood BologniaIndiaAsiya Javayant NEW
Silvio SlusarskiGermanyAmy Elsner NEGOTIATION
David DarakjyItalyBernardo Dominic RENEWAL
Kadeem FlosiRussiaElwin Sharvill NEGOTIATION
Greenwood BologniaRussiaIvan Magalhaes QUALIFIED
Jeanfrancois VenereUnited KingdomIvan Magalhaes QUALIFIED
Johnson SergiGermanyOnyama Limba PROPOSAL
Smith GlickArgentinaXuxue Feng NEW
Nicolas IturbideGermanyAsiya Javayant QUALIFIED
Arvin AlbaresCanadaAsiya Javayant RENEWAL
Adams MorascaArgentinaStephen Shaw RENEWAL
Ashley DoeJapanElwin Sharvill NEGOTIATION
David DarakjyAustraliaAnna Fali NEGOTIATION
Murillo MaletJapanOnyama Limba QUALIFIED
Arvin AlbaresIndiaElwin Sharvill PROPOSAL
Wickens NestleBrazilIvan Magalhaes UNQUALIFIED
Smith GlickUnited KingdomXuxue Feng QUALIFIED
Deepesh ChuiItalyXuxue Feng RENEWAL
Isabel BowleySpainAsiya Javayant RENEWAL
Ivar PaprockiAustraliaAmy Elsner UNQUALIFIED
Alejandro PerinCanadaOnyama Limba NEGOTIATION
Adams MorascaJapanAnna Fali RENEWAL
Greenwood BologniaJapanXuxue Feng RENEWAL
Emily WhobreyAustraliaAnna Fali PROPOSAL
Aditya KuskoItalyOnyama Limba NEGOTIATION
Costa DilliardCanadaXuxue Feng RENEWAL
Greenwood BologniaBrazilAsiya Javayant PROPOSAL
David DarakjyCanadaElwin Sharvill PROPOSAL
Ricardo GauchoCanadaIoni Bowcher QUALIFIED
Aika InouyeBrazilElwin Sharvill UNQUALIFIED
Emily WhobreyGermanyXuxue Feng QUALIFIED
Leon OldroydAustraliaElwin Sharvill QUALIFIED
Tony FollerJapanBernardo Dominic NEGOTIATION
Salvatore StockhamArgentinaIvan Magalhaes QUALIFIED
Wickens NestleCanadaIoni Bowcher QUALIFIED
Frozen Columns
Name
Salvatore Stockham
Emily Whobrey
Cody Saylors
Jones Vocelka
Octavia Malet
Deepesh Chui
Murillo Malet
Deepesh Chui
Jennifer Amigon
Mayumi Kolmetz
Mujtaba Nicka
Misaki Royster
Aruna Figeroa
Costa Dilliard
Silvio Slusarski
Johnson Sergi
Leja Caldarera
Aruna Figeroa
Sinclair Waycott
Tony Foller
Juan Wieser
Morrow Ruta
Ricardo Gaucho
Emily Whobrey
Jeanfrancois Venere
Kadeem Flosi
Jennifer Amigon
Maisha Rulapaugh
Kaitlin Ostrosky
James Butt
Greenwood Bolognia
Salvatore Stockham
Smith Glick
Julie Stenseth
Ashley Doe
Emily Whobrey
Cody Saylors
Francesco Shinko
Maisha Rulapaugh
Costa Dilliard
Sinclair Waycott
Chavez Briddick
Nicolas Iturbide
Greenwood Bolognia
Rodrigues Campain
Maisha Rulapaugh
Arvin Albares
Silvio Slusarski
Maisha Rulapaugh
Aika Inouye
IdCountryDate
1000United Kingdom2026-03-27
1001United Kingdom2026-03-23
1002Brazil2026-04-07
1003Brazil2026-04-05
1004France2026-04-02
1005Canada2026-04-05
1006United Kingdom2026-03-31
1007France2026-04-07
1008India2026-04-11
1009Russia2026-03-23
1010India2026-04-01
1011Japan2026-04-05
1012Japan2026-03-23
1013Brazil2026-03-30
1014India2026-04-03
1015India2026-04-12
1016Brazil2026-03-30
1017Italy2026-04-21
1018Spain2026-04-12
1019Spain2026-03-26
1020Brazil2026-03-24
1021Germany2026-04-21
1022Russia2026-04-12
1023Spain2026-04-09
1024Australia2026-03-26
1025Brazil2026-04-13
1026Italy2026-03-30
1027Canada2026-04-10
1028Japan2026-04-01
1029Spain2026-04-14
1030United Kingdom2026-04-07
1031Australia2026-04-17
1032Spain2026-04-15
1033Brazil2026-04-18
1034Canada2026-04-09
1035Italy2026-04-01
1036India2026-03-25
1037Argentina2026-04-04
1038Canada2026-04-14
1039France2026-04-08
1040Germany2026-04-20
1041Brazil2026-04-19
1042India2026-04-11
1043Germany2026-04-09
1044Italy2026-04-13
1045Spain2026-04-21
1046Russia2026-04-03
1047Japan2026-04-16
1048Japan2026-04-17
1049India2026-03-28

On-Demand Data

NameIdCountryDate
Nicolas Iturbide1000Canada2026-04-11
Wickens Nestle1001Russia2026-03-25
Arvin Albares1002Russia2026-04-08
Aditya Kusko1003Italy2026-03-27
Adams Morasca1004Russia2026-03-30
Kaitlin Ostrosky1005Japan2026-03-29
Antonio Caudy1006Japan2026-04-10
Mujtaba Nicka1007Canada2026-04-02
Francesco Shinko1008Spain2026-04-02
Sinclair Waycott1009France2026-03-25
Sinclair Waycott1010Spain2026-04-10
Greenwood Bolognia1011United Kingdom2026-04-17
Costa Dilliard1012Germany2026-04-18
Julie Stenseth1013France2026-04-08
Jefferson Schemmer1014Spain2026-04-16
Arvin Albares1015Brazil2026-04-09
Jennifer Amigon1016Spain2026-03-30
Clifford Rim1017Canada2026-04-21
Deepesh Chui1018Russia2026-04-21
Ivar Paprocki1019Canada2026-04-18
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jefferson SchemmerAustraliaOnyama Limba QUALIFIED
Tony FollerCanadaStephen Shaw UNQUALIFIED
Arvin AlbaresUnited KingdomAmy Elsner UNQUALIFIED
Darci PoquetteJapanIoni Bowcher PROPOSAL
Greenwood BologniaAustraliaIvan Magalhaes RENEWAL
Leja CaldareraBrazilIoni Bowcher RENEWAL
Darci PoquetteGermanyAnna Fali UNQUALIFIED
Mujtaba NickaBrazilAsiya Javayant QUALIFIED
Cody SaylorsRussiaBernardo Dominic PROPOSAL
Maria MarrierBrazilAmy Elsner RENEWAL
Claire TollnerAustraliaBernardo Dominic PROPOSAL
Jefferson SchemmerIndiaAsiya Javayant RENEWAL
Izzy GarufiIndiaAsiya Javayant NEGOTIATION
Maisha RulapaughCanadaOnyama Limba NEW
Wickens NestleUnited KingdomXuxue Feng QUALIFIED
James ButtUnited KingdomAmy Elsner RENEWAL
Aditya KuskoGermanyStephen Shaw NEGOTIATION
Jennifer AmigonJapanIvan Magalhaes UNQUALIFIED
Arvin AlbaresSpainBernardo Dominic UNQUALIFIED
Aditya KuskoAustraliaAsiya Javayant PROPOSAL
Ivar PaprockiSpainOnyama Limba PROPOSAL
Salvatore StockhamItalyOnyama Limba NEW
Tony FollerItalyOnyama Limba NEW
Darci PoquetteGermanyOnyama Limba PROPOSAL
Maria MarrierRussiaXuxue Feng NEGOTIATION
Juan WieserCanadaXuxue Feng UNQUALIFIED
Rodrigues CampainArgentinaAsiya Javayant QUALIFIED
Clifford RimGermanyAmy Elsner UNQUALIFIED
Julie StensethGermanyIoni Bowcher PROPOSAL
Mujtaba NickaAustraliaIvan Magalhaes PROPOSAL
Johnson SergiRussiaIoni Bowcher UNQUALIFIED
Aruna FigeroaAustraliaIoni Bowcher QUALIFIED
Isabel BowleyCanadaAmy Elsner QUALIFIED
Adams MorascaIndiaAmy Elsner UNQUALIFIED
Salvatore StockhamUnited KingdomIoni Bowcher QUALIFIED
Nicolas IturbideBrazilStephen Shaw UNQUALIFIED
Faith GillianIndiaBernardo Dominic QUALIFIED
Rodrigues CampainArgentinaXuxue Feng NEGOTIATION
Tony FollerJapanAnna Fali PROPOSAL
Kadeem FlosiUnited KingdomIoni Bowcher RENEWAL

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