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
Emily WhobreySpainAmy Elsner UNQUALIFIED
Adams MorascaJapanIvan Magalhaes NEW
Greenwood BologniaJapanXuxue Feng UNQUALIFIED
Darci PoquetteItalyXuxue Feng NEW
Misaki RoysterBrazilIvan Magalhaes UNQUALIFIED
Francesco ShinkoJapanAnna Fali PROPOSAL
Mujtaba NickaAustraliaIvan Magalhaes PROPOSAL
Sinclair WaycottBrazilIvan Magalhaes PROPOSAL
Emily WhobreyGermanyAmy Elsner PROPOSAL
Ashley DoeJapanBernardo Dominic NEW
Chavez BriddickAustraliaAsiya Javayant QUALIFIED
Aditya KuskoIndiaStephen Shaw NEGOTIATION
Deepesh ChuiAustraliaStephen Shaw UNQUALIFIED
Julie StensethSpainIoni Bowcher NEGOTIATION
Rodrigues CampainRussiaIoni Bowcher NEGOTIATION
Francesco ShinkoRussiaAmy Elsner RENEWAL
James ButtArgentinaIvan Magalhaes UNQUALIFIED
Costa DilliardAustraliaAmy Elsner QUALIFIED
Francesco ShinkoIndiaAsiya Javayant NEGOTIATION
Adams MorascaRussiaBernardo Dominic UNQUALIFIED
Darci PoquetteCanadaIvan Magalhaes NEW
Misaki RoysterCanadaBernardo Dominic QUALIFIED
Morrow RutaCanadaAsiya Javayant RENEWAL
Faith GillianArgentinaOnyama Limba QUALIFIED
Smith GlickCanadaStephen Shaw UNQUALIFIED
Aditya KuskoSpainXuxue Feng NEGOTIATION
Darci PoquetteArgentinaIvan Magalhaes NEGOTIATION
Arvin AlbaresItalyBernardo Dominic NEGOTIATION
Alejandro PerinAustraliaAsiya Javayant NEGOTIATION
Chavez BriddickGermanyIvan Magalhaes RENEWAL
Octavia MaletGermanyAsiya Javayant NEGOTIATION
Mujtaba NickaJapanAsiya Javayant RENEWAL
Aruna FigeroaAustraliaElwin Sharvill NEW
Ivar PaprockiSpainIvan Magalhaes QUALIFIED
Salvatore StockhamArgentinaOnyama Limba PROPOSAL
Izzy GarufiJapanIoni Bowcher UNQUALIFIED
Antonio CaudyBrazilAsiya Javayant NEW
Jeanfrancois VenereGermanyElwin Sharvill NEGOTIATION
Sinclair WaycottItalyAnna Fali RENEWAL
Octavia MaletJapanElwin Sharvill NEGOTIATION
Jones VocelkaJapanAmy Elsner PROPOSAL
Emily WhobreyIndiaElwin Sharvill NEW
Leja CaldareraIndiaStephen Shaw PROPOSAL
Cody SaylorsAustraliaAnna Fali UNQUALIFIED
James ButtRussiaXuxue Feng QUALIFIED
Alejandro PerinCanadaAmy Elsner NEGOTIATION
Wickens NestleJapanAnna Fali UNQUALIFIED
Deepesh ChuiRussiaAsiya Javayant QUALIFIED
Nicolas IturbideFranceIvan Magalhaes NEW
Ivar PaprockiSpainXuxue Feng QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Kadeem FlosiIndiaStephen Shaw PROPOSAL
Adams MorascaGermanyXuxue Feng NEW
Isabel BowleyFranceAsiya Javayant UNQUALIFIED
Misaki RoysterAustraliaIvan Magalhaes QUALIFIED
Wickens NestleGermanyBernardo Dominic RENEWAL
David DarakjyBrazilXuxue Feng QUALIFIED
Adams MorascaFranceIoni Bowcher PROPOSAL
Deepesh ChuiItalyElwin Sharvill PROPOSAL
Jennifer AmigonBrazilIoni Bowcher RENEWAL
Izzy GarufiJapanIvan Magalhaes UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Leon OldroydCanada2026-05-31Chemel, James L Cpa NEGOTIATION48Bernardo Dominic
1001Aditya KuskoBrazil2026-06-07Chemel, James L Cpa NEGOTIATION91Asiya Javayant
1002Misaki RoysterBrazil2026-05-26Printing Dimensions QUALIFIED42Asiya Javayant
1003Claire TollnerGermany2026-05-20King, Christopher A Esq UNQUALIFIED41Amy Elsner
1004Mayumi KolmetzCanada2026-05-11Feltz Printing Service QUALIFIED49Asiya Javayant
1005Leja CaldareraArgentina2026-05-16Dorl, James J Esq UNQUALIFIED52Bernardo Dominic
1006Misaki RoysterAustralia2026-05-14Rangoni Of Florence QUALIFIED70Ioni Bowcher
1007Ricardo GauchoItaly2026-06-02Chanay, Jeffrey A Esq PROPOSAL6Elwin Sharvill
1008Antonio CaudyCanada2026-06-07Rangoni Of Florence PROPOSAL42Xuxue Feng
1009Cody SaylorsRussia2026-05-25Truhlar And Truhlar Attys PROPOSAL18Asiya Javayant
1010Isabel BowleyGermany2026-05-13Rousseaux, Michael Esq PROPOSAL51Asiya Javayant
1011Morrow RutaArgentina2026-05-13Chapman, Ross E Esq PROPOSAL24Ioni Bowcher
1012Kaitlin OstroskyArgentina2026-05-14Feiner Bros PROPOSAL1Ivan Magalhaes
1013Maria MarrierArgentina2026-05-22Feiner Bros NEGOTIATION58Anna Fali
1014Jeanfrancois VenereBrazil2026-05-25Feltz Printing Service NEGOTIATION66Anna Fali
1015Jefferson SchemmerSpain2026-06-02Buckley Miller Wright NEW16Bernardo Dominic
1016Jefferson SchemmerCanada2026-05-16King, Christopher A Esq PROPOSAL14Xuxue Feng
1017Murillo MaletCanada2026-06-05Rangoni Of Florence QUALIFIED79Stephen Shaw
1018Faith GillianBrazil2026-05-15Benton, John B Jr NEW47Onyama Limba
1019Leon OldroydAustralia2026-05-30Printing Dimensions PROPOSAL73Asiya Javayant
1020Leon OldroydJapan2026-06-09Rangoni Of Florence PROPOSAL65Xuxue Feng
1021Isabel BowleyIndia2026-06-03Printing Dimensions NEGOTIATION45Amy Elsner
1022Mayumi KolmetzJapan2026-05-28Benton, John B Jr PROPOSAL90Bernardo Dominic
1023Octavia MaletItaly2026-05-23Chapman, Ross E Esq PROPOSAL76Asiya Javayant
1024Julie StensethIndia2026-05-26Feiner Bros RENEWAL44Stephen Shaw
1025Mayumi KolmetzItaly2026-05-26Commercial Press NEGOTIATION40Onyama Limba
1026Nicolas IturbideAustralia2026-05-26Printing Dimensions QUALIFIED65Amy Elsner
1027Arvin AlbaresIndia2026-05-19Buckley Miller Wright UNQUALIFIED19Asiya Javayant
1028Kaitlin OstroskyJapan2026-05-24King, Christopher A Esq NEGOTIATION87Amy Elsner
1029Izzy GarufiFrance2026-05-15Printing Dimensions QUALIFIED91Ioni Bowcher
1030Nicolas IturbideAustralia2026-05-12Benton, John B Jr QUALIFIED66Ioni Bowcher
1031Aditya KuskoAustralia2026-05-16Rangoni Of Florence RENEWAL50Elwin Sharvill
1032Emily WhobreyUnited Kingdom2026-05-17Dorl, James J Esq NEW90Elwin Sharvill
1033Silvio SlusarskiItaly2026-05-14Printing Dimensions PROPOSAL71Onyama Limba
1034Aditya KuskoAustralia2026-05-26Rangoni Of Florence QUALIFIED24Amy Elsner
1035James ButtArgentina2026-05-22Rangoni Of Florence UNQUALIFIED3Ivan Magalhaes
1036Jefferson SchemmerCanada2026-05-11Feltz Printing Service NEGOTIATION28Amy Elsner
1037Greenwood BologniaFrance2026-05-13Chapman, Ross E Esq NEW31Ioni Bowcher
1038Claire TollnerAustralia2026-06-04King, Christopher A Esq UNQUALIFIED31Amy Elsner
1039Adams MorascaRussia2026-06-08Truhlar And Truhlar Attys RENEWAL39Ivan Magalhaes
1040Murillo MaletFrance2026-05-23Truhlar And Truhlar Attys QUALIFIED16Ivan Magalhaes
1041Misaki RoysterRussia2026-05-16Feiner Bros NEGOTIATION24Elwin Sharvill
1042Julie StensethFrance2026-06-08Feltz Printing Service PROPOSAL59Ioni Bowcher
1043Leja CaldareraItaly2026-05-16King, Christopher A Esq QUALIFIED44Stephen Shaw
1044Adams MorascaFrance2026-05-27Feltz Printing Service PROPOSAL81Ivan Magalhaes
1045Rodrigues CampainIndia2026-06-08Morlong Associates NEW19Ivan Magalhaes
1046Aika InouyeAustralia2026-06-04Morlong Associates PROPOSAL46Amy Elsner
1047Alejandro PerinIndia2026-05-14King, Christopher A Esq QUALIFIED38Ivan Magalhaes
1048Cody SaylorsBrazil2026-05-18King, Christopher A Esq QUALIFIED67Anna Fali
1049Silvio SlusarskiAustralia2026-05-18Feiner Bros RENEWAL30Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
David DarakjyJapanAsiya Javayant QUALIFIED
Ivar PaprockiGermanyBernardo Dominic PROPOSAL
Jeanfrancois VenereFranceStephen Shaw NEW
Nicolas IturbideGermanyOnyama Limba PROPOSAL
Maria MarrierSpainIvan Magalhaes NEGOTIATION
Stacey MacleadRussiaAnna Fali RENEWAL
Juan WieserGermanyXuxue Feng PROPOSAL
Salvatore StockhamGermanyIvan Magalhaes PROPOSAL
Leja CaldareraItalyIoni Bowcher PROPOSAL
Emily WhobreyCanadaBernardo Dominic UNQUALIFIED
Ricardo GauchoGermanyOnyama Limba NEGOTIATION
Munro FerenczBrazilElwin Sharvill PROPOSAL
David DarakjyBrazilIoni Bowcher RENEWAL
Aditya KuskoBrazilIvan Magalhaes PROPOSAL
Cody SaylorsIndiaIoni Bowcher QUALIFIED
David DarakjyIndiaXuxue Feng NEGOTIATION
Ashley DoeCanadaXuxue Feng RENEWAL
Mayumi KolmetzFranceAsiya Javayant PROPOSAL
Murillo MaletRussiaBernardo Dominic UNQUALIFIED
Deepesh ChuiJapanOnyama Limba NEW
Salvatore StockhamGermanyIvan Magalhaes UNQUALIFIED
Mujtaba NickaCanadaIvan Magalhaes RENEWAL
Clifford RimAustraliaIvan Magalhaes NEW
Ivar PaprockiJapanStephen Shaw PROPOSAL
Johnson SergiCanadaBernardo Dominic QUALIFIED
Kaitlin OstroskyCanadaOnyama Limba NEGOTIATION
Johnson SergiJapanIvan Magalhaes RENEWAL
Octavia MaletAustraliaBernardo Dominic NEW
Chavez BriddickUnited KingdomElwin Sharvill PROPOSAL
Leja CaldareraFranceIoni Bowcher NEGOTIATION
Darci PoquetteGermanyElwin Sharvill PROPOSAL
Ricardo GauchoFranceOnyama Limba UNQUALIFIED
Rodrigues CampainFranceIoni Bowcher NEGOTIATION
Leon OldroydBrazilStephen Shaw NEGOTIATION
Greenwood BologniaCanadaAmy Elsner PROPOSAL
David DarakjyIndiaOnyama Limba QUALIFIED
Wickens NestleIndiaIvan Magalhaes UNQUALIFIED
Wickens NestleArgentinaIoni Bowcher RENEWAL
Julie StensethGermanyOnyama Limba QUALIFIED
Leon OldroydFranceXuxue Feng UNQUALIFIED
Faith GillianUnited KingdomXuxue Feng PROPOSAL
Clifford RimCanadaIvan Magalhaes UNQUALIFIED
Kadeem FlosiIndiaAsiya Javayant QUALIFIED
Maria MarrierUnited KingdomIoni Bowcher PROPOSAL
Julie StensethJapanAnna Fali QUALIFIED
Alejandro PerinCanadaIvan Magalhaes NEGOTIATION
Francesco ShinkoUnited KingdomIoni Bowcher PROPOSAL
Jefferson SchemmerBrazilXuxue Feng QUALIFIED
Johnson SergiBrazilOnyama Limba PROPOSAL
Munro FerenczBrazilBernardo Dominic QUALIFIED
Frozen Columns
Name
Ashley Doe
Octavia Malet
Emily Whobrey
Deepesh Chui
James Butt
Mujtaba Nicka
Aditya Kusko
Wickens Nestle
Isabel Bowley
Tony Foller
Jefferson Schemmer
Arvin Albares
Munro Ferencz
Arvin Albares
Izzy Garufi
Aditya Kusko
Adams Morasca
Misaki Royster
David Darakjy
Maisha Rulapaugh
Mujtaba Nicka
Maisha Rulapaugh
Izzy Garufi
Sinclair Waycott
Nicolas Iturbide
Leon Oldroyd
Ivar Paprocki
Jefferson Schemmer
Greenwood Bolognia
Jones Vocelka
Silvio Slusarski
Adams Morasca
Jones Vocelka
Francesco Shinko
Wickens Nestle
Ivar Paprocki
Kaitlin Ostrosky
Nicolas Iturbide
Adams Morasca
Tony Foller
Kaitlin Ostrosky
Misaki Royster
Murillo Malet
Chavez Briddick
Costa Dilliard
Francesco Shinko
Jennifer Amigon
Aika Inouye
Cody Saylors
Ashley Doe
IdCountryDate
1000Australia2026-05-21
1001Spain2026-05-12
1002Argentina2026-05-13
1003Spain2026-05-23
1004Germany2026-05-16
1005Spain2026-06-03
1006Canada2026-05-28
1007Germany2026-05-24
1008Russia2026-05-16
1009Italy2026-05-30
1010France2026-06-02
1011Italy2026-06-05
1012Brazil2026-05-11
1013Japan2026-05-11
1014Brazil2026-05-25
1015United Kingdom2026-06-05
1016India2026-06-07
1017Australia2026-06-01
1018France2026-05-28
1019United Kingdom2026-06-09
1020Australia2026-05-20
1021Spain2026-06-04
1022Argentina2026-05-14
1023Japan2026-05-31
1024Australia2026-06-09
1025India2026-05-13
1026Brazil2026-06-09
1027Italy2026-05-26
1028Australia2026-05-28
1029Argentina2026-05-28
1030Australia2026-05-15
1031France2026-05-11
1032India2026-05-28
1033Japan2026-05-21
1034Japan2026-05-29
1035India2026-05-11
1036Italy2026-06-05
1037United Kingdom2026-05-24
1038Russia2026-05-19
1039Italy2026-05-19
1040Australia2026-05-29
1041Germany2026-05-20
1042Australia2026-05-23
1043Italy2026-05-26
1044Italy2026-05-27
1045Spain2026-06-08
1046Italy2026-05-19
1047Italy2026-05-23
1048Brazil2026-05-26
1049India2026-05-30

On-Demand Data

NameIdCountryDate
Maria Marrier1000France2026-06-02
Greenwood Bolognia1001Japan2026-05-11
Sinclair Waycott1002India2026-05-24
Francesco Shinko1003France2026-05-17
Aika Inouye1004Brazil2026-06-04
Maria Marrier1005Germany2026-05-27
Leon Oldroyd1006India2026-05-29
Jefferson Schemmer1007Canada2026-05-16
Nicolas Iturbide1008Australia2026-05-23
Ashley Doe1009Russia2026-05-12
Leja Caldarera1010United Kingdom2026-06-02
Jeanfrancois Venere1011Japan2026-06-02
Jennifer Amigon1012Canada2026-06-07
Morrow Ruta1013United Kingdom2026-05-25
Antonio Caudy1014United Kingdom2026-06-02
Juan Wieser1015Brazil2026-05-31
Aditya Kusko1016Italy2026-05-13
David Darakjy1017United Kingdom2026-06-01
Kaitlin Ostrosky1018Australia2026-05-25
Chavez Briddick1019Argentina2026-06-03
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Maisha RulapaughBrazilAsiya Javayant UNQUALIFIED
Izzy GarufiFranceStephen Shaw UNQUALIFIED
Jeanfrancois VenereJapanElwin Sharvill UNQUALIFIED
Maria MarrierItalyElwin Sharvill QUALIFIED
Jefferson SchemmerRussiaOnyama Limba QUALIFIED
Aruna FigeroaBrazilBernardo Dominic UNQUALIFIED
Rodrigues CampainArgentinaIvan Magalhaes QUALIFIED
Murillo MaletGermanyStephen Shaw NEW
Isabel BowleyIndiaIoni Bowcher PROPOSAL
Jefferson SchemmerGermanyAnna Fali NEW
Nicolas IturbideIndiaElwin Sharvill NEW
Kadeem FlosiFranceAnna Fali UNQUALIFIED
Jefferson SchemmerSpainIvan Magalhaes UNQUALIFIED
Munro FerenczBrazilAnna Fali NEW
Jennifer AmigonAustraliaAmy Elsner NEGOTIATION
Adams MorascaItalyAmy Elsner PROPOSAL
Sinclair WaycottGermanyAmy Elsner NEGOTIATION
David DarakjyFranceBernardo Dominic QUALIFIED
Aika InouyeSpainXuxue Feng UNQUALIFIED
Aika InouyeSpainAsiya Javayant RENEWAL
Kaitlin OstroskyBrazilElwin Sharvill NEGOTIATION
Cody SaylorsItalyIoni Bowcher PROPOSAL
Jeanfrancois VenereUnited KingdomStephen Shaw UNQUALIFIED
Maisha RulapaughBrazilIvan Magalhaes NEGOTIATION
Johnson SergiRussiaAmy Elsner UNQUALIFIED
Aditya KuskoJapanIoni Bowcher UNQUALIFIED
Claire TollnerRussiaStephen Shaw UNQUALIFIED
Misaki RoysterFranceIvan Magalhaes PROPOSAL
Ricardo GauchoItalyAmy Elsner QUALIFIED
Maria MarrierFranceAsiya Javayant QUALIFIED
Kaitlin OstroskyArgentinaStephen Shaw NEW
Darci PoquetteJapanIvan Magalhaes QUALIFIED
Sinclair WaycottCanadaBernardo Dominic NEW
Arvin AlbaresAustraliaIvan Magalhaes RENEWAL
Kadeem FlosiRussiaAnna Fali QUALIFIED
Isabel BowleyFranceBernardo Dominic UNQUALIFIED
Stacey MacleadIndiaAnna Fali RENEWAL
David DarakjyCanadaElwin Sharvill UNQUALIFIED
Chavez BriddickSpainIoni Bowcher RENEWAL
Wickens NestleIndiaIoni Bowcher QUALIFIED

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