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
James ButtUnited KingdomAmy Elsner NEGOTIATION
Aruna FigeroaItalyIoni Bowcher NEGOTIATION
Smith GlickCanadaIoni Bowcher NEGOTIATION
Salvatore StockhamFranceElwin Sharvill NEW
Kaitlin OstroskyBrazilElwin Sharvill UNQUALIFIED
Mayumi KolmetzJapanXuxue Feng QUALIFIED
Leja CaldareraSpainAnna Fali NEW
Smith GlickArgentinaIoni Bowcher NEW
Chavez BriddickJapanIoni Bowcher NEW
David DarakjyRussiaStephen Shaw PROPOSAL
Jeanfrancois VenereCanadaXuxue Feng QUALIFIED
Leon OldroydItalyBernardo Dominic UNQUALIFIED
Leon OldroydBrazilXuxue Feng RENEWAL
Isabel BowleyJapanAnna Fali NEW
Jeanfrancois VenereItalyAnna Fali UNQUALIFIED
Maisha RulapaughArgentinaIoni Bowcher PROPOSAL
Wickens NestleGermanyIoni Bowcher QUALIFIED
Izzy GarufiGermanyBernardo Dominic QUALIFIED
Mujtaba NickaBrazilOnyama Limba QUALIFIED
Emily WhobreyArgentinaOnyama Limba NEW
James ButtItalyIvan Magalhaes RENEWAL
Kaitlin OstroskyArgentinaIvan Magalhaes UNQUALIFIED
Julie StensethUnited KingdomStephen Shaw PROPOSAL
Greenwood BologniaArgentinaOnyama Limba NEGOTIATION
Isabel BowleyJapanIoni Bowcher NEW
Faith GillianFranceElwin Sharvill RENEWAL
Faith GillianItalyIvan Magalhaes NEGOTIATION
Faith GillianFranceAsiya Javayant RENEWAL
Adams MorascaAustraliaAsiya Javayant NEGOTIATION
Costa DilliardItalyAnna Fali NEW
Clifford RimUnited KingdomAsiya Javayant QUALIFIED
Julie StensethAustraliaStephen Shaw QUALIFIED
Leja CaldareraJapanBernardo Dominic PROPOSAL
Stacey MacleadArgentinaAsiya Javayant NEW
Munro FerenczIndiaBernardo Dominic NEW
Leja CaldareraSpainAmy Elsner PROPOSAL
Kaitlin OstroskyArgentinaXuxue Feng QUALIFIED
Clifford RimUnited KingdomAnna Fali UNQUALIFIED
Maisha RulapaughUnited KingdomBernardo Dominic RENEWAL
Wickens NestleAustraliaAmy Elsner NEW
Darci PoquetteUnited KingdomBernardo Dominic UNQUALIFIED
Cody SaylorsJapanStephen Shaw NEW
Ivar PaprockiJapanElwin Sharvill RENEWAL
Ricardo GauchoUnited KingdomAsiya Javayant UNQUALIFIED
Leon OldroydBrazilElwin Sharvill RENEWAL
Morrow RutaArgentinaIoni Bowcher NEW
Jefferson SchemmerAustraliaStephen Shaw RENEWAL
Emily WhobreySpainAsiya Javayant QUALIFIED
Alejandro PerinCanadaIoni Bowcher NEGOTIATION
Cody SaylorsCanadaStephen Shaw NEW
Horizontal
NameCountryRepresentativeStatus
Cody SaylorsAustraliaBernardo Dominic QUALIFIED
Darci PoquetteBrazilOnyama Limba UNQUALIFIED
Aruna FigeroaIndiaOnyama Limba PROPOSAL
Deepesh ChuiIndiaIoni Bowcher QUALIFIED
Aruna FigeroaJapanStephen Shaw UNQUALIFIED
Misaki RoysterBrazilIoni Bowcher QUALIFIED
Maria MarrierItalyBernardo Dominic UNQUALIFIED
Murillo MaletUnited KingdomAmy Elsner UNQUALIFIED
Tony FollerIndiaIvan Magalhaes QUALIFIED
Chavez BriddickSpainBernardo Dominic RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Tony FollerGermany2026-05-21Commercial Press UNQUALIFIED28Anna Fali
1001Kaitlin OstroskyIndia2026-05-26Benton, John B Jr UNQUALIFIED49Asiya Javayant
1002Aditya KuskoUnited Kingdom2026-05-17Dorl, James J Esq QUALIFIED43Amy Elsner
1003Rodrigues CampainGermany2026-05-03Rousseaux, Michael Esq NEGOTIATION2Stephen Shaw
1004Aruna FigeroaBrazil2026-05-16Chapman, Ross E Esq NEW2Elwin Sharvill
1005Octavia MaletGermany2026-05-03Chemel, James L Cpa UNQUALIFIED13Amy Elsner
1006Maisha RulapaughAustralia2026-05-01Buckley Miller Wright UNQUALIFIED36Xuxue Feng
1007Sinclair WaycottFrance2026-05-13Rangoni Of Florence RENEWAL18Anna Fali
1008Greenwood BologniaCanada2026-05-15Truhlar And Truhlar Attys NEGOTIATION48Elwin Sharvill
1009Maisha RulapaughSpain2026-05-03Chanay, Jeffrey A Esq NEGOTIATION5Elwin Sharvill
1010Cody SaylorsCanada2026-05-07Morlong Associates RENEWAL66Asiya Javayant
1011Jeanfrancois VenereSpain2026-05-18Morlong Associates RENEWAL85Ioni Bowcher
1012Mayumi KolmetzGermany2026-05-12Chanay, Jeffrey A Esq QUALIFIED26Stephen Shaw
1013Leon OldroydItaly2026-05-29Chemel, James L Cpa NEGOTIATION61Anna Fali
1014Sinclair WaycottCanada2026-05-12Chapman, Ross E Esq UNQUALIFIED9Amy Elsner
1015Aika InouyeIndia2026-05-09Morlong Associates QUALIFIED31Ioni Bowcher
1016Mayumi KolmetzJapan2026-05-13Printing Dimensions RENEWAL35Ivan Magalhaes
1017Misaki RoysterAustralia2026-05-13King, Christopher A Esq UNQUALIFIED54Elwin Sharvill
1018Aditya KuskoArgentina2026-05-11Chapman, Ross E Esq RENEWAL70Ioni Bowcher
1019Johnson SergiJapan2026-05-10Morlong Associates UNQUALIFIED84Amy Elsner
1020Maisha RulapaughJapan2026-05-28Dorl, James J Esq UNQUALIFIED25Elwin Sharvill
1021Salvatore StockhamCanada2026-05-22King, Christopher A Esq NEGOTIATION3Ivan Magalhaes
1022Arvin AlbaresArgentina2026-05-28Chapman, Ross E Esq NEW96Ivan Magalhaes
1023Aruna FigeroaCanada2026-05-07Feltz Printing Service PROPOSAL28Amy Elsner
1024Smith GlickSpain2026-05-28Commercial Press NEGOTIATION10Onyama Limba
1025Emily WhobreyGermany2026-05-11Printing Dimensions UNQUALIFIED22Asiya Javayant
1026Leon OldroydBrazil2026-05-06Morlong Associates QUALIFIED83Ivan Magalhaes
1027Mayumi KolmetzGermany2026-05-24Chapman, Ross E Esq UNQUALIFIED71Amy Elsner
1028Salvatore StockhamArgentina2026-05-14Chemel, James L Cpa NEGOTIATION42Ivan Magalhaes
1029Kaitlin OstroskySpain2026-05-21Truhlar And Truhlar Attys NEW95Amy Elsner
1030Juan WieserFrance2026-05-29Feiner Bros NEGOTIATION52Stephen Shaw
1031Darci PoquetteAustralia2026-05-03Benton, John B Jr UNQUALIFIED90Asiya Javayant
1032James ButtGermany2026-05-14Rousseaux, Michael Esq QUALIFIED19Asiya Javayant
1033Johnson SergiSpain2026-05-18Commercial Press UNQUALIFIED89Stephen Shaw
1034Clifford RimAustralia2026-05-22Buckley Miller Wright NEW44Asiya Javayant
1035Jeanfrancois VenereGermany2026-05-16Rousseaux, Michael Esq NEGOTIATION23Bernardo Dominic
1036Francesco ShinkoJapan2026-05-11Dorl, James J Esq UNQUALIFIED2Ioni Bowcher
1037David DarakjyArgentina2026-05-26Feltz Printing Service RENEWAL27Elwin Sharvill
1038Maisha RulapaughIndia2026-05-13Morlong Associates NEW43Stephen Shaw
1039Aika InouyeArgentina2026-05-05Chemel, James L Cpa NEGOTIATION10Ioni Bowcher
1040Ricardo GauchoRussia2026-05-14Dorl, James J Esq NEGOTIATION37Ivan Magalhaes
1041Johnson SergiSpain2026-05-04Rousseaux, Michael Esq PROPOSAL39Bernardo Dominic
1042Murillo MaletFrance2026-05-24Dorl, James J Esq QUALIFIED11Elwin Sharvill
1043Sinclair WaycottIndia2026-04-30Chapman, Ross E Esq QUALIFIED50Asiya Javayant
1044David DarakjyFrance2026-05-27Truhlar And Truhlar Attys RENEWAL67Asiya Javayant
1045Kadeem FlosiGermany2026-05-22Rousseaux, Michael Esq NEW25Asiya Javayant
1046Munro FerenczUnited Kingdom2026-05-26Chemel, James L Cpa RENEWAL1Asiya Javayant
1047Kadeem FlosiRussia2026-05-04Buckley Miller Wright QUALIFIED47Asiya Javayant
1048Tony FollerFrance2026-05-23Chanay, Jeffrey A Esq NEGOTIATION58Anna Fali
1049Wickens NestleUnited Kingdom2026-05-11Chanay, Jeffrey A Esq PROPOSAL22Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Chavez BriddickIndiaIvan Magalhaes PROPOSAL
Smith GlickBrazilXuxue Feng RENEWAL
Antonio CaudyBrazilStephen Shaw PROPOSAL
Emily WhobreyJapanElwin Sharvill NEW
Darci PoquetteAustraliaIvan Magalhaes RENEWAL
Silvio SlusarskiGermanyAmy Elsner QUALIFIED
Jennifer AmigonItalyAnna Fali QUALIFIED
Isabel BowleyCanadaAmy Elsner PROPOSAL
Francesco ShinkoFranceIoni Bowcher UNQUALIFIED
Maria MarrierSpainAsiya Javayant NEW
Rodrigues CampainItalyOnyama Limba NEW
Claire TollnerArgentinaElwin Sharvill UNQUALIFIED
Kadeem FlosiIndiaStephen Shaw PROPOSAL
Jefferson SchemmerItalyBernardo Dominic PROPOSAL
Maisha RulapaughItalyXuxue Feng PROPOSAL
Cody SaylorsFranceStephen Shaw RENEWAL
Jones VocelkaFranceXuxue Feng NEW
Claire TollnerUnited KingdomAnna Fali NEGOTIATION
Jennifer AmigonAustraliaStephen Shaw NEGOTIATION
James ButtSpainElwin Sharvill PROPOSAL
Izzy GarufiItalyAnna Fali NEGOTIATION
Smith GlickCanadaAmy Elsner RENEWAL
Francesco ShinkoIndiaElwin Sharvill NEW
Morrow RutaIndiaElwin Sharvill UNQUALIFIED
Morrow RutaArgentinaAmy Elsner UNQUALIFIED
Juan WieserIndiaBernardo Dominic UNQUALIFIED
Alejandro PerinJapanOnyama Limba PROPOSAL
Deepesh ChuiIndiaOnyama Limba QUALIFIED
Darci PoquetteItalyStephen Shaw RENEWAL
Ivar PaprockiJapanAmy Elsner UNQUALIFIED
Ivar PaprockiJapanElwin Sharvill UNQUALIFIED
Isabel BowleyArgentinaIoni Bowcher RENEWAL
Costa DilliardSpainIvan Magalhaes RENEWAL
Adams MorascaArgentinaIoni Bowcher QUALIFIED
Stacey MacleadIndiaIoni Bowcher RENEWAL
Alejandro PerinArgentinaBernardo Dominic RENEWAL
Adams MorascaFranceAnna Fali NEGOTIATION
Salvatore StockhamCanadaAnna Fali UNQUALIFIED
Morrow RutaSpainAmy Elsner PROPOSAL
Antonio CaudyBrazilAsiya Javayant PROPOSAL
Greenwood BologniaAustraliaBernardo Dominic NEW
Misaki RoysterItalyBernardo Dominic RENEWAL
Isabel BowleyItalyXuxue Feng UNQUALIFIED
Munro FerenczBrazilAnna Fali UNQUALIFIED
Jeanfrancois VenereSpainXuxue Feng NEGOTIATION
Izzy GarufiCanadaAnna Fali NEW
Jefferson SchemmerIndiaOnyama Limba QUALIFIED
Darci PoquetteJapanAnna Fali NEGOTIATION
Johnson SergiRussiaStephen Shaw PROPOSAL
Maisha RulapaughBrazilAsiya Javayant UNQUALIFIED
Frozen Columns
Name
Alejandro Perin
Munro Ferencz
Silvio Slusarski
Cody Saylors
Greenwood Bolognia
Kaitlin Ostrosky
Sinclair Waycott
Leon Oldroyd
Rodrigues Campain
Aditya Kusko
Nicolas Iturbide
Arvin Albares
Leja Caldarera
Julie Stenseth
Morrow Ruta
Chavez Briddick
Cody Saylors
Mayumi Kolmetz
Kaitlin Ostrosky
Emily Whobrey
Aika Inouye
Smith Glick
Ricardo Gaucho
Jones Vocelka
Arvin Albares
Jefferson Schemmer
Julie Stenseth
Emily Whobrey
Jennifer Amigon
Leja Caldarera
Antonio Caudy
Ricardo Gaucho
Darci Poquette
Julie Stenseth
Misaki Royster
Johnson Sergi
Maisha Rulapaugh
Costa Dilliard
Arvin Albares
Darci Poquette
Rodrigues Campain
Rodrigues Campain
Aditya Kusko
Leja Caldarera
Smith Glick
Johnson Sergi
Jeanfrancois Venere
Juan Wieser
Juan Wieser
Emily Whobrey
IdCountryDate
1000Russia2026-05-06
1001Russia2026-05-20
1002Germany2026-05-28
1003Brazil2026-05-13
1004Canada2026-05-01
1005Japan2026-05-07
1006India2026-05-13
1007Germany2026-04-30
1008Brazil2026-05-15
1009Australia2026-05-20
1010India2026-05-06
1011United Kingdom2026-05-23
1012United Kingdom2026-05-18
1013Canada2026-05-04
1014Russia2026-05-16
1015Canada2026-05-01
1016Brazil2026-05-08
1017Japan2026-05-23
1018Japan2026-05-26
1019Canada2026-05-27
1020Russia2026-05-23
1021United Kingdom2026-05-10
1022Japan2026-05-19
1023Germany2026-05-28
1024Australia2026-05-12
1025United Kingdom2026-05-18
1026France2026-05-25
1027Italy2026-05-04
1028Argentina2026-05-21
1029Spain2026-05-20
1030Germany2026-05-08
1031Japan2026-05-29
1032Russia2026-05-18
1033Brazil2026-05-26
1034India2026-05-10
1035France2026-05-01
1036Germany2026-05-17
1037Argentina2026-05-04
1038Brazil2026-05-12
1039Brazil2026-05-23
1040France2026-05-27
1041Japan2026-05-20
1042Spain2026-05-02
1043Australia2026-05-04
1044Russia2026-05-12
1045Russia2026-05-23
1046Australia2026-05-06
1047Canada2026-04-30
1048United Kingdom2026-05-10
1049Spain2026-05-24

On-Demand Data

NameIdCountryDate
Jeanfrancois Venere1000France2026-05-15
Nicolas Iturbide1001Germany2026-05-24
David Darakjy1002India2026-05-22
Misaki Royster1003Italy2026-05-18
Izzy Garufi1004Australia2026-05-12
Kaitlin Ostrosky1005Russia2026-05-06
Leja Caldarera1006Japan2026-05-12
Clifford Rim1007Japan2026-05-05
Izzy Garufi1008Italy2026-05-29
Kaitlin Ostrosky1009Brazil2026-05-22
Morrow Ruta1010Spain2026-05-22
Cody Saylors1011United Kingdom2026-05-16
Greenwood Bolognia1012United Kingdom2026-05-22
Ricardo Gaucho1013Spain2026-05-11
Costa Dilliard1014Australia2026-05-02
Smith Glick1015France2026-05-19
Johnson Sergi1016France2026-05-16
Chavez Briddick1017Brazil2026-05-27
Salvatore Stockham1018Russia2026-05-17
Adams Morasca1019France2026-05-10
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Mayumi KolmetzSpainElwin Sharvill NEGOTIATION
Morrow RutaUnited KingdomOnyama Limba NEW
Alejandro PerinGermanyIoni Bowcher UNQUALIFIED
Octavia MaletAustraliaXuxue Feng PROPOSAL
Izzy GarufiJapanStephen Shaw NEW
Murillo MaletJapanAnna Fali UNQUALIFIED
Kadeem FlosiGermanyIoni Bowcher NEGOTIATION
James ButtGermanyIoni Bowcher QUALIFIED
Costa DilliardFranceAsiya Javayant QUALIFIED
Jeanfrancois VenereJapanAsiya Javayant NEGOTIATION
Aruna FigeroaArgentinaAmy Elsner NEW
Claire TollnerSpainIvan Magalhaes PROPOSAL
Silvio SlusarskiBrazilStephen Shaw NEW
David DarakjyUnited KingdomBernardo Dominic NEW
Aruna FigeroaRussiaBernardo Dominic UNQUALIFIED
Sinclair WaycottCanadaOnyama Limba UNQUALIFIED
Cody SaylorsRussiaAmy Elsner NEW
Claire TollnerUnited KingdomAsiya Javayant NEGOTIATION
Mujtaba NickaCanadaXuxue Feng RENEWAL
Alejandro PerinBrazilAnna Fali QUALIFIED
James ButtCanadaAnna Fali NEW
Wickens NestleGermanyIvan Magalhaes NEGOTIATION
Jeanfrancois VenereSpainStephen Shaw PROPOSAL
Jefferson SchemmerJapanOnyama Limba NEGOTIATION
Kaitlin OstroskyUnited KingdomIoni Bowcher NEW
Smith GlickRussiaXuxue Feng UNQUALIFIED
Munro FerenczIndiaAmy Elsner NEW
Chavez BriddickRussiaStephen Shaw UNQUALIFIED
Maria MarrierRussiaAmy Elsner UNQUALIFIED
David DarakjyBrazilOnyama Limba QUALIFIED
Jeanfrancois VenereBrazilAnna Fali NEGOTIATION
Leja CaldareraSpainAmy Elsner QUALIFIED
Nicolas IturbideAustraliaIoni Bowcher NEW
Ivar PaprockiJapanStephen Shaw UNQUALIFIED
Leon OldroydBrazilIvan Magalhaes QUALIFIED
Nicolas IturbideUnited KingdomIoni Bowcher QUALIFIED
Mayumi KolmetzUnited KingdomElwin Sharvill RENEWAL
Mayumi KolmetzBrazilOnyama Limba NEW
Mayumi KolmetzUnited KingdomStephen Shaw UNQUALIFIED
Wickens NestleBrazilBernardo Dominic 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>