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
Juan WieserItalyStephen Shaw QUALIFIED
Silvio SlusarskiJapanAsiya Javayant QUALIFIED
Sinclair WaycottRussiaAmy Elsner NEW
Cody SaylorsSpainIvan Magalhaes RENEWAL
Ricardo GauchoAustraliaIvan Magalhaes NEW
James ButtIndiaIoni Bowcher RENEWAL
Juan WieserUnited KingdomElwin Sharvill QUALIFIED
Claire TollnerArgentinaAmy Elsner QUALIFIED
Emily WhobreyCanadaAmy Elsner PROPOSAL
Jefferson SchemmerRussiaAnna Fali QUALIFIED
Antonio CaudyCanadaAnna Fali QUALIFIED
Johnson SergiIndiaAmy Elsner QUALIFIED
Salvatore StockhamBrazilAsiya Javayant PROPOSAL
Greenwood BologniaFranceBernardo Dominic QUALIFIED
Antonio CaudyFranceElwin Sharvill RENEWAL
Maisha RulapaughFranceAsiya Javayant NEGOTIATION
Salvatore StockhamUnited KingdomOnyama Limba QUALIFIED
Darci PoquetteArgentinaBernardo Dominic QUALIFIED
Ivar PaprockiAustraliaElwin Sharvill UNQUALIFIED
Misaki RoysterAustraliaIoni Bowcher RENEWAL
Maria MarrierRussiaBernardo Dominic NEGOTIATION
Kadeem FlosiItalyIoni Bowcher UNQUALIFIED
Sinclair WaycottJapanAsiya Javayant UNQUALIFIED
Kaitlin OstroskyUnited KingdomStephen Shaw RENEWAL
Cody SaylorsJapanOnyama Limba NEGOTIATION
Arvin AlbaresJapanAnna Fali RENEWAL
Jeanfrancois VenereCanadaIoni Bowcher NEGOTIATION
Adams MorascaBrazilAmy Elsner QUALIFIED
Sinclair WaycottIndiaIvan Magalhaes UNQUALIFIED
Mujtaba NickaAustraliaElwin Sharvill NEW
Mayumi KolmetzSpainElwin Sharvill RENEWAL
Costa DilliardBrazilAnna Fali PROPOSAL
Misaki RoysterCanadaAmy Elsner NEW
Arvin AlbaresAustraliaAmy Elsner PROPOSAL
Francesco ShinkoArgentinaElwin Sharvill NEGOTIATION
Wickens NestleItalyAnna Fali PROPOSAL
Maria MarrierGermanyBernardo Dominic NEW
Munro FerenczItalyAmy Elsner UNQUALIFIED
Mujtaba NickaBrazilIoni Bowcher RENEWAL
Kadeem FlosiJapanXuxue Feng PROPOSAL
Mayumi KolmetzUnited KingdomBernardo Dominic NEGOTIATION
Mayumi KolmetzIndiaAmy Elsner RENEWAL
Juan WieserSpainBernardo Dominic NEW
Julie StensethJapanAsiya Javayant UNQUALIFIED
Greenwood BologniaIndiaBernardo Dominic NEW
Murillo MaletFranceIoni Bowcher UNQUALIFIED
Stacey MacleadItalyBernardo Dominic NEGOTIATION
Deepesh ChuiJapanElwin Sharvill QUALIFIED
Stacey MacleadFranceStephen Shaw UNQUALIFIED
Jones VocelkaBrazilAnna Fali UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Jennifer AmigonArgentinaStephen Shaw QUALIFIED
David DarakjyFranceStephen Shaw NEGOTIATION
Isabel BowleyItalyAnna Fali QUALIFIED
Salvatore StockhamIndiaIvan Magalhaes UNQUALIFIED
Chavez BriddickJapanBernardo Dominic RENEWAL
Johnson SergiBrazilIoni Bowcher NEGOTIATION
Claire TollnerGermanyAmy Elsner UNQUALIFIED
Ivar PaprockiCanadaStephen Shaw NEGOTIATION
Arvin AlbaresSpainElwin Sharvill NEGOTIATION
Jeanfrancois VenereUnited KingdomBernardo Dominic NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Mujtaba NickaArgentina2026-04-28Dorl, James J Esq PROPOSAL14Stephen Shaw
1001Francesco ShinkoIndia2026-04-17Morlong Associates RENEWAL98Anna Fali
1002Julie StensethFrance2026-05-02Truhlar And Truhlar Attys PROPOSAL8Stephen Shaw
1003Leon OldroydCanada2026-04-20Rangoni Of Florence NEW95Bernardo Dominic
1004Salvatore StockhamSpain2026-04-20Commercial Press UNQUALIFIED48Ioni Bowcher
1005Misaki RoysterJapan2026-04-22Chemel, James L Cpa RENEWAL73Anna Fali
1006Murillo MaletGermany2026-04-24Feltz Printing Service RENEWAL90Ioni Bowcher
1007Emily WhobreyJapan2026-05-07King, Christopher A Esq QUALIFIED45Bernardo Dominic
1008Ivar PaprockiGermany2026-04-25Chemel, James L Cpa UNQUALIFIED89Ivan Magalhaes
1009Rodrigues CampainGermany2026-04-24Buckley Miller Wright UNQUALIFIED44Bernardo Dominic
1010David DarakjyIndia2026-04-29Benton, John B Jr UNQUALIFIED28Anna Fali
1011Jennifer AmigonUnited Kingdom2026-04-23Buckley Miller Wright NEW12Bernardo Dominic
1012Murillo MaletBrazil2026-04-30Morlong Associates PROPOSAL0Ioni Bowcher
1013Tony FollerArgentina2026-04-22Chapman, Ross E Esq NEW0Ioni Bowcher
1014Kadeem FlosiCanada2026-04-28Rousseaux, Michael Esq UNQUALIFIED83Asiya Javayant
1015Alejandro PerinCanada2026-05-01Benton, John B Jr PROPOSAL78Ivan Magalhaes
1016Salvatore StockhamAustralia2026-04-25Dorl, James J Esq NEW88Xuxue Feng
1017Jeanfrancois VenereCanada2026-04-15Rousseaux, Michael Esq PROPOSAL51Elwin Sharvill
1018Murillo MaletArgentina2026-05-03Chemel, James L Cpa NEGOTIATION87Amy Elsner
1019Francesco ShinkoFrance2026-04-21Buckley Miller Wright NEW45Bernardo Dominic
1020Kaitlin OstroskySpain2026-04-28Rangoni Of Florence NEGOTIATION63Asiya Javayant
1021Ricardo GauchoRussia2026-04-16Rousseaux, Michael Esq UNQUALIFIED73Stephen Shaw
1022Aditya KuskoBrazil2026-04-21Buckley Miller Wright QUALIFIED75Stephen Shaw
1023Faith GillianAustralia2026-04-14Dorl, James J Esq RENEWAL89Onyama Limba
1024Mujtaba NickaCanada2026-04-17Commercial Press RENEWAL80Xuxue Feng
1025Sinclair WaycottFrance2026-05-09Morlong Associates NEGOTIATION58Elwin Sharvill
1026Chavez BriddickIndia2026-04-17Printing Dimensions NEW46Anna Fali
1027Deepesh ChuiItaly2026-04-18Chapman, Ross E Esq PROPOSAL77Stephen Shaw
1028Julie StensethBrazil2026-04-25Feiner Bros QUALIFIED28Elwin Sharvill
1029Octavia MaletItaly2026-05-06Truhlar And Truhlar Attys PROPOSAL47Amy Elsner
1030Costa DilliardSpain2026-04-17Buckley Miller Wright PROPOSAL30Amy Elsner
1031Stacey MacleadIndia2026-04-18Benton, John B Jr UNQUALIFIED78Onyama Limba
1032Stacey MacleadSpain2026-05-05Chapman, Ross E Esq QUALIFIED29Ioni Bowcher
1033Mayumi KolmetzSpain2026-04-14Chanay, Jeffrey A Esq PROPOSAL99Elwin Sharvill
1034Cody SaylorsItaly2026-04-12Buckley Miller Wright QUALIFIED81Amy Elsner
1035Wickens NestleJapan2026-05-04Rousseaux, Michael Esq PROPOSAL95Anna Fali
1036Mayumi KolmetzItaly2026-04-13Rangoni Of Florence PROPOSAL89Asiya Javayant
1037Francesco ShinkoIndia2026-05-09Commercial Press NEW89Stephen Shaw
1038Chavez BriddickGermany2026-04-28King, Christopher A Esq PROPOSAL92Stephen Shaw
1039Claire TollnerArgentina2026-04-11Buckley Miller Wright PROPOSAL27Xuxue Feng
1040Jeanfrancois VenereSpain2026-04-15Printing Dimensions NEGOTIATION22Ioni Bowcher
1041Emily WhobreyJapan2026-04-25Feltz Printing Service UNQUALIFIED5Xuxue Feng
1042Munro FerenczGermany2026-05-09Dorl, James J Esq NEGOTIATION51Ioni Bowcher
1043Faith GillianUnited Kingdom2026-05-02Chanay, Jeffrey A Esq NEGOTIATION10Ioni Bowcher
1044Johnson SergiAustralia2026-04-17Chanay, Jeffrey A Esq NEGOTIATION45Onyama Limba
1045Faith GillianSpain2026-04-10Benton, John B Jr QUALIFIED91Amy Elsner
1046Jefferson SchemmerIndia2026-04-26Rangoni Of Florence NEGOTIATION69Bernardo Dominic
1047Aruna FigeroaGermany2026-04-10Rangoni Of Florence RENEWAL56Stephen Shaw
1048Maria MarrierRussia2026-04-17King, Christopher A Esq NEGOTIATION37Ivan Magalhaes
1049Maisha RulapaughArgentina2026-04-22Rousseaux, Michael Esq NEW47Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
David DarakjyIndiaAnna Fali NEW
Tony FollerRussiaAsiya Javayant NEW
Aditya KuskoJapanStephen Shaw PROPOSAL
Leon OldroydAustraliaAsiya Javayant PROPOSAL
Maisha RulapaughUnited KingdomXuxue Feng RENEWAL
Maisha RulapaughItalyXuxue Feng PROPOSAL
Salvatore StockhamGermanyIvan Magalhaes PROPOSAL
Alejandro PerinFranceStephen Shaw UNQUALIFIED
Murillo MaletJapanElwin Sharvill PROPOSAL
Jeanfrancois VenereAustraliaXuxue Feng PROPOSAL
Mayumi KolmetzIndiaStephen Shaw NEGOTIATION
Claire TollnerArgentinaBernardo Dominic QUALIFIED
Julie StensethUnited KingdomElwin Sharvill UNQUALIFIED
Ivar PaprockiBrazilIvan Magalhaes PROPOSAL
Maria MarrierRussiaElwin Sharvill RENEWAL
Aika InouyeGermanyStephen Shaw NEW
Sinclair WaycottIndiaBernardo Dominic PROPOSAL
Cody SaylorsSpainStephen Shaw RENEWAL
Kadeem FlosiItalyIoni Bowcher RENEWAL
Misaki RoysterCanadaIoni Bowcher UNQUALIFIED
Murillo MaletGermanyElwin Sharvill RENEWAL
David DarakjyGermanyXuxue Feng NEGOTIATION
Jeanfrancois VenereArgentinaStephen Shaw NEGOTIATION
Octavia MaletAustraliaXuxue Feng NEGOTIATION
Arvin AlbaresUnited KingdomIvan Magalhaes PROPOSAL
Adams MorascaBrazilXuxue Feng NEGOTIATION
Munro FerenczCanadaBernardo Dominic NEW
Maisha RulapaughItalyXuxue Feng UNQUALIFIED
Maisha RulapaughUnited KingdomIvan Magalhaes NEW
Morrow RutaJapanIoni Bowcher NEW
Rodrigues CampainUnited KingdomElwin Sharvill UNQUALIFIED
Francesco ShinkoAustraliaBernardo Dominic RENEWAL
Wickens NestleBrazilAnna Fali QUALIFIED
Munro FerenczBrazilXuxue Feng RENEWAL
Ashley DoeAustraliaIvan Magalhaes RENEWAL
Johnson SergiSpainAmy Elsner NEW
Wickens NestleFranceStephen Shaw UNQUALIFIED
Aruna FigeroaIndiaAnna Fali UNQUALIFIED
Aika InouyeBrazilAnna Fali PROPOSAL
Alejandro PerinAustraliaAmy Elsner NEGOTIATION
Silvio SlusarskiFranceBernardo Dominic NEGOTIATION
Misaki RoysterFranceAsiya Javayant QUALIFIED
Faith GillianFranceStephen Shaw NEW
Maria MarrierRussiaBernardo Dominic RENEWAL
Claire TollnerBrazilAsiya Javayant NEGOTIATION
Ricardo GauchoItalyAmy Elsner QUALIFIED
Greenwood BologniaUnited KingdomBernardo Dominic UNQUALIFIED
Tony FollerFranceAsiya Javayant NEGOTIATION
Francesco ShinkoGermanyIvan Magalhaes QUALIFIED
Munro FerenczIndiaBernardo Dominic PROPOSAL
Frozen Columns
Name
Aika Inouye
Alejandro Perin
Morrow Ruta
James Butt
Darci Poquette
Costa Dilliard
Aruna Figeroa
Wickens Nestle
Tony Foller
Sinclair Waycott
Francesco Shinko
Wickens Nestle
Jennifer Amigon
Morrow Ruta
Izzy Garufi
Cody Saylors
Francesco Shinko
Aika Inouye
Chavez Briddick
Sinclair Waycott
Adams Morasca
Antonio Caudy
Chavez Briddick
Salvatore Stockham
Tony Foller
Kadeem Flosi
Jennifer Amigon
Maria Marrier
Isabel Bowley
Ashley Doe
Munro Ferencz
Maria Marrier
Greenwood Bolognia
Tony Foller
Isabel Bowley
Aditya Kusko
Costa Dilliard
Nicolas Iturbide
Ivar Paprocki
Juan Wieser
Aditya Kusko
Aika Inouye
Ashley Doe
Mujtaba Nicka
Ivar Paprocki
Aditya Kusko
Leon Oldroyd
Tony Foller
Francesco Shinko
Cody Saylors
IdCountryDate
1000Australia2026-04-19
1001Brazil2026-04-15
1002Spain2026-04-14
1003Spain2026-05-06
1004Italy2026-04-18
1005Argentina2026-04-29
1006India2026-04-25
1007Russia2026-04-26
1008Brazil2026-04-17
1009Japan2026-04-13
1010Japan2026-04-19
1011Canada2026-05-01
1012Argentina2026-04-14
1013Brazil2026-05-09
1014France2026-04-21
1015Australia2026-04-21
1016Argentina2026-04-17
1017Canada2026-04-10
1018France2026-04-14
1019Australia2026-04-25
1020United Kingdom2026-05-02
1021Russia2026-04-24
1022Brazil2026-04-18
1023Japan2026-04-10
1024Brazil2026-04-15
1025Spain2026-04-12
1026Brazil2026-04-28
1027Russia2026-04-23
1028Spain2026-05-07
1029Spain2026-05-03
1030Japan2026-04-20
1031Australia2026-05-05
1032Russia2026-04-22
1033Argentina2026-05-07
1034Brazil2026-04-22
1035Australia2026-04-11
1036Australia2026-04-27
1037Canada2026-05-06
1038Brazil2026-04-22
1039Brazil2026-05-09
1040Argentina2026-04-23
1041United Kingdom2026-05-09
1042Spain2026-05-03
1043Brazil2026-04-16
1044Spain2026-04-24
1045United Kingdom2026-04-25
1046Canada2026-05-05
1047Canada2026-04-19
1048Spain2026-04-17
1049Argentina2026-05-09

On-Demand Data

NameIdCountryDate
Mujtaba Nicka1000Canada2026-04-24
Leon Oldroyd1001India2026-05-05
Misaki Royster1002Russia2026-04-12
Claire Tollner1003Italy2026-05-07
Aditya Kusko1004India2026-04-29
Salvatore Stockham1005United Kingdom2026-04-16
Deepesh Chui1006United Kingdom2026-04-15
Aditya Kusko1007Italy2026-04-20
Emily Whobrey1008United Kingdom2026-04-20
Cody Saylors1009Russia2026-05-09
Kadeem Flosi1010India2026-04-19
Leja Caldarera1011India2026-04-30
Jones Vocelka1012Argentina2026-04-24
Aruna Figeroa1013Germany2026-05-05
Jones Vocelka1014Canada2026-04-25
Tony Foller1015Italy2026-05-08
Kaitlin Ostrosky1016India2026-05-06
Smith Glick1017Russia2026-04-27
Tony Foller1018France2026-05-06
James Butt1019France2026-04-13
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Stacey MacleadArgentinaIvan Magalhaes RENEWAL
David DarakjyIndiaAmy Elsner RENEWAL
Johnson SergiArgentinaAmy Elsner RENEWAL
Stacey MacleadItalyXuxue Feng QUALIFIED
Munro FerenczAustraliaAsiya Javayant PROPOSAL
Emily WhobreyArgentinaXuxue Feng RENEWAL
Mujtaba NickaBrazilIvan Magalhaes UNQUALIFIED
Kadeem FlosiGermanyIvan Magalhaes UNQUALIFIED
Ricardo GauchoBrazilOnyama Limba QUALIFIED
Arvin AlbaresGermanyElwin Sharvill UNQUALIFIED
Adams MorascaAustraliaAsiya Javayant NEGOTIATION
Claire TollnerCanadaAmy Elsner UNQUALIFIED
Kaitlin OstroskyArgentinaIvan Magalhaes NEGOTIATION
Maria MarrierAustraliaXuxue Feng QUALIFIED
Aruna FigeroaRussiaOnyama Limba UNQUALIFIED
Kadeem FlosiIndiaXuxue Feng NEGOTIATION
Tony FollerJapanAmy Elsner NEW
Ivar PaprockiUnited KingdomXuxue Feng UNQUALIFIED
Antonio CaudyArgentinaAnna Fali NEGOTIATION
Maisha RulapaughRussiaIoni Bowcher QUALIFIED
Smith GlickUnited KingdomStephen Shaw PROPOSAL
Deepesh ChuiFranceBernardo Dominic PROPOSAL
Morrow RutaBrazilIvan Magalhaes RENEWAL
Aruna FigeroaItalyBernardo Dominic QUALIFIED
Octavia MaletSpainIvan Magalhaes PROPOSAL
Francesco ShinkoArgentinaBernardo Dominic UNQUALIFIED
Adams MorascaAustraliaAsiya Javayant QUALIFIED
Mujtaba NickaJapanXuxue Feng RENEWAL
Munro FerenczRussiaOnyama Limba RENEWAL
Johnson SergiBrazilIoni Bowcher NEW
Emily WhobreyUnited KingdomElwin Sharvill PROPOSAL
Munro FerenczCanadaAsiya Javayant QUALIFIED
Alejandro PerinFranceBernardo Dominic UNQUALIFIED
Smith GlickIndiaBernardo Dominic PROPOSAL
Salvatore StockhamJapanAmy Elsner QUALIFIED
Arvin AlbaresFranceAnna Fali UNQUALIFIED
Greenwood BologniaJapanIoni Bowcher NEGOTIATION
Arvin AlbaresFranceIvan Magalhaes QUALIFIED
Juan WieserJapanAnna Fali QUALIFIED
Emily WhobreyItalyAmy Elsner 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>