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
Murillo MaletRussiaStephen Shaw RENEWAL
Leja CaldareraIndiaXuxue Feng RENEWAL
Munro FerenczItalyAsiya Javayant RENEWAL
Julie StensethIndiaAnna Fali QUALIFIED
Izzy GarufiGermanyAmy Elsner PROPOSAL
Octavia MaletAustraliaElwin Sharvill UNQUALIFIED
Rodrigues CampainBrazilOnyama Limba QUALIFIED
Rodrigues CampainRussiaIvan Magalhaes UNQUALIFIED
Leon OldroydRussiaIvan Magalhaes NEGOTIATION
Mayumi KolmetzFranceXuxue Feng RENEWAL
Stacey MacleadGermanyElwin Sharvill NEGOTIATION
Kadeem FlosiBrazilAnna Fali NEGOTIATION
Costa DilliardBrazilIoni Bowcher NEGOTIATION
Jeanfrancois VenereAustraliaIoni Bowcher NEW
Arvin AlbaresFranceIoni Bowcher PROPOSAL
Smith GlickJapanOnyama Limba NEGOTIATION
Jennifer AmigonBrazilAsiya Javayant UNQUALIFIED
Smith GlickIndiaElwin Sharvill NEW
Clifford RimUnited KingdomIoni Bowcher PROPOSAL
Ricardo GauchoCanadaElwin Sharvill NEGOTIATION
Deepesh ChuiGermanyBernardo Dominic UNQUALIFIED
Jefferson SchemmerUnited KingdomXuxue Feng RENEWAL
Cody SaylorsBrazilXuxue Feng NEGOTIATION
Kaitlin OstroskyIndiaStephen Shaw PROPOSAL
Jefferson SchemmerRussiaOnyama Limba NEW
Ricardo GauchoJapanAnna Fali NEGOTIATION
Murillo MaletFranceOnyama Limba NEW
Rodrigues CampainBrazilIvan Magalhaes RENEWAL
Ashley DoeBrazilOnyama Limba NEW
Rodrigues CampainCanadaAsiya Javayant NEGOTIATION
Salvatore StockhamCanadaOnyama Limba UNQUALIFIED
Antonio CaudyCanadaIoni Bowcher PROPOSAL
Alejandro PerinJapanStephen Shaw PROPOSAL
Maisha RulapaughGermanyElwin Sharvill QUALIFIED
Julie StensethJapanElwin Sharvill NEW
Jeanfrancois VenereItalyAnna Fali NEW
Kadeem FlosiIndiaIoni Bowcher NEGOTIATION
Alejandro PerinItalyXuxue Feng PROPOSAL
Greenwood BologniaJapanElwin Sharvill UNQUALIFIED
Leon OldroydRussiaIvan Magalhaes PROPOSAL
Kaitlin OstroskyBrazilAnna Fali QUALIFIED
Adams MorascaUnited KingdomBernardo Dominic NEW
Emily WhobreyCanadaStephen Shaw NEW
Nicolas IturbideGermanyIvan Magalhaes UNQUALIFIED
Octavia MaletGermanyAsiya Javayant NEGOTIATION
Claire TollnerIndiaElwin Sharvill RENEWAL
Jefferson SchemmerIndiaAnna Fali RENEWAL
Sinclair WaycottSpainAnna Fali PROPOSAL
Maisha RulapaughBrazilIvan Magalhaes UNQUALIFIED
Jennifer AmigonUnited KingdomIvan Magalhaes PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Stacey MacleadUnited KingdomOnyama Limba PROPOSAL
Ivar PaprockiCanadaAsiya Javayant NEW
Aditya KuskoUnited KingdomElwin Sharvill NEW
Izzy GarufiGermanyAsiya Javayant NEW
Deepesh ChuiRussiaIoni Bowcher RENEWAL
Johnson SergiArgentinaXuxue Feng QUALIFIED
Murillo MaletFranceElwin Sharvill RENEWAL
Emily WhobreyFranceElwin Sharvill UNQUALIFIED
Chavez BriddickCanadaXuxue Feng NEGOTIATION
Isabel BowleyGermanyAnna Fali RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Maria MarrierFrance2026-05-16King, Christopher A Esq UNQUALIFIED66Elwin Sharvill
1001Greenwood BologniaUnited Kingdom2026-05-17Chanay, Jeffrey A Esq RENEWAL90Onyama Limba
1002Julie StensethSpain2026-05-01Morlong Associates UNQUALIFIED1Elwin Sharvill
1003Alejandro PerinFrance2026-05-13Chemel, James L Cpa NEW79Ivan Magalhaes
1004Salvatore StockhamSpain2026-05-14Dorl, James J Esq RENEWAL55Onyama Limba
1005Morrow RutaGermany2026-05-19Truhlar And Truhlar Attys UNQUALIFIED60Ivan Magalhaes
1006Leon OldroydItaly2026-05-09Printing Dimensions QUALIFIED81Anna Fali
1007Emily WhobreyCanada2026-05-16Buckley Miller Wright QUALIFIED82Ivan Magalhaes
1008Antonio CaudyFrance2026-05-12Morlong Associates NEW79Xuxue Feng
1009Leja CaldareraFrance2026-05-27Feltz Printing Service UNQUALIFIED33Ioni Bowcher
1010Murillo MaletIndia2026-05-10Morlong Associates NEGOTIATION92Elwin Sharvill
1011Silvio SlusarskiBrazil2026-05-06Printing Dimensions RENEWAL58Onyama Limba
1012Juan WieserSpain2026-04-28Chapman, Ross E Esq NEGOTIATION26Ioni Bowcher
1013Jeanfrancois VenereItaly2026-05-08King, Christopher A Esq UNQUALIFIED56Anna Fali
1014Francesco ShinkoIndia2026-05-26Buckley Miller Wright RENEWAL89Xuxue Feng
1015Murillo MaletAustralia2026-05-20Feltz Printing Service NEW17Onyama Limba
1016Arvin AlbaresArgentina2026-05-08Dorl, James J Esq NEW85Xuxue Feng
1017Cody SaylorsFrance2026-05-16Buckley Miller Wright QUALIFIED70Asiya Javayant
1018Clifford RimFrance2026-05-23Feiner Bros NEGOTIATION50Ioni Bowcher
1019Maria MarrierRussia2026-05-06Feltz Printing Service QUALIFIED65Ivan Magalhaes
1020David DarakjyFrance2026-04-29Feltz Printing Service UNQUALIFIED47Ivan Magalhaes
1021Chavez BriddickJapan2026-05-13Chapman, Ross E Esq PROPOSAL30Anna Fali
1022Isabel BowleyBrazil2026-05-19Printing Dimensions NEGOTIATION16Ioni Bowcher
1023Johnson SergiJapan2026-05-17Chemel, James L Cpa RENEWAL80Asiya Javayant
1024Antonio CaudyCanada2026-05-20Rangoni Of Florence QUALIFIED21Asiya Javayant
1025Nicolas IturbideBrazil2026-05-10Commercial Press PROPOSAL46Elwin Sharvill
1026Salvatore StockhamGermany2026-05-22Morlong Associates RENEWAL11Stephen Shaw
1027Jeanfrancois VenereItaly2026-05-06Feiner Bros RENEWAL85Ivan Magalhaes
1028Ricardo GauchoUnited Kingdom2026-05-11Chemel, James L Cpa UNQUALIFIED35Stephen Shaw
1029Munro FerenczIndia2026-05-15Commercial Press PROPOSAL50Amy Elsner
1030Leja CaldareraBrazil2026-04-30Truhlar And Truhlar Attys RENEWAL19Stephen Shaw
1031Chavez BriddickGermany2026-05-12Chanay, Jeffrey A Esq NEW20Onyama Limba
1032Maisha RulapaughBrazil2026-05-12Commercial Press UNQUALIFIED28Bernardo Dominic
1033Murillo MaletUnited Kingdom2026-05-22Buckley Miller Wright NEGOTIATION91Xuxue Feng
1034Ashley DoeUnited Kingdom2026-05-12Rousseaux, Michael Esq PROPOSAL41Asiya Javayant
1035Jefferson SchemmerUnited Kingdom2026-05-23Chemel, James L Cpa PROPOSAL67Elwin Sharvill
1036Jennifer AmigonBrazil2026-05-24Chemel, James L Cpa NEW50Elwin Sharvill
1037Francesco ShinkoItaly2026-05-17Dorl, James J Esq UNQUALIFIED95Onyama Limba
1038Costa DilliardRussia2026-05-21Feiner Bros QUALIFIED5Amy Elsner
1039Ashley DoeAustralia2026-05-25Printing Dimensions NEGOTIATION50Ivan Magalhaes
1040Mujtaba NickaIndia2026-05-04Printing Dimensions UNQUALIFIED91Asiya Javayant
1041Mujtaba NickaUnited Kingdom2026-05-02Feltz Printing Service NEW45Amy Elsner
1042Morrow RutaRussia2026-05-15Rousseaux, Michael Esq NEW95Elwin Sharvill
1043Kaitlin OstroskyJapan2026-05-02Feltz Printing Service NEW9Anna Fali
1044Kaitlin OstroskyIndia2026-05-02Truhlar And Truhlar Attys RENEWAL95Asiya Javayant
1045Greenwood BologniaIndia2026-05-09Feltz Printing Service QUALIFIED79Elwin Sharvill
1046Jones VocelkaIndia2026-05-27Chemel, James L Cpa RENEWAL15Ivan Magalhaes
1047Murillo MaletGermany2026-05-03Chanay, Jeffrey A Esq RENEWAL73Elwin Sharvill
1048Ashley DoeFrance2026-05-05Printing Dimensions UNQUALIFIED10Ivan Magalhaes
1049Octavia MaletGermany2026-05-18Commercial Press QUALIFIED10Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Antonio CaudySpainStephen Shaw RENEWAL
David DarakjyUnited KingdomAmy Elsner NEGOTIATION
Claire TollnerJapanIoni Bowcher RENEWAL
Aruna FigeroaJapanIvan Magalhaes QUALIFIED
Sinclair WaycottFranceAnna Fali UNQUALIFIED
Salvatore StockhamSpainStephen Shaw PROPOSAL
Jones VocelkaIndiaAmy Elsner RENEWAL
Julie StensethJapanStephen Shaw NEW
Mujtaba NickaFranceXuxue Feng RENEWAL
Izzy GarufiCanadaXuxue Feng NEW
Ashley DoeCanadaXuxue Feng PROPOSAL
Salvatore StockhamArgentinaAnna Fali QUALIFIED
Jeanfrancois VenereItalyAnna Fali UNQUALIFIED
Ricardo GauchoArgentinaXuxue Feng NEGOTIATION
Francesco ShinkoUnited KingdomIoni Bowcher RENEWAL
Stacey MacleadUnited KingdomIvan Magalhaes NEW
Emily WhobreyItalyBernardo Dominic RENEWAL
Francesco ShinkoSpainAnna Fali NEW
Mayumi KolmetzFranceAnna Fali NEGOTIATION
Mujtaba NickaRussiaElwin Sharvill UNQUALIFIED
Wickens NestleUnited KingdomAsiya Javayant UNQUALIFIED
Emily WhobreyBrazilAnna Fali PROPOSAL
Maisha RulapaughFranceAnna Fali QUALIFIED
Emily WhobreyJapanElwin Sharvill NEGOTIATION
Costa DilliardRussiaBernardo Dominic NEW
Jennifer AmigonCanadaAnna Fali QUALIFIED
Jones VocelkaSpainXuxue Feng PROPOSAL
Claire TollnerArgentinaAnna Fali RENEWAL
Octavia MaletArgentinaOnyama Limba NEW
Murillo MaletGermanyAnna Fali RENEWAL
Alejandro PerinUnited KingdomOnyama Limba RENEWAL
Izzy GarufiIndiaIvan Magalhaes RENEWAL
Claire TollnerJapanElwin Sharvill RENEWAL
Maisha RulapaughItalyElwin Sharvill PROPOSAL
Johnson SergiSpainIoni Bowcher QUALIFIED
Greenwood BologniaJapanIvan Magalhaes UNQUALIFIED
Julie StensethUnited KingdomElwin Sharvill NEW
Aruna FigeroaAustraliaIvan Magalhaes UNQUALIFIED
Munro FerenczGermanyElwin Sharvill QUALIFIED
Leja CaldareraCanadaIvan Magalhaes QUALIFIED
David DarakjyGermanyAmy Elsner PROPOSAL
Ivar PaprockiItalyAnna Fali UNQUALIFIED
Greenwood BologniaRussiaAsiya Javayant RENEWAL
Alejandro PerinUnited KingdomAnna Fali NEW
Jones VocelkaAustraliaAmy Elsner NEGOTIATION
Deepesh ChuiJapanAmy Elsner RENEWAL
Leon OldroydAustraliaIoni Bowcher PROPOSAL
Costa DilliardAustraliaElwin Sharvill QUALIFIED
Aruna FigeroaJapanBernardo Dominic QUALIFIED
Aruna FigeroaIndiaStephen Shaw UNQUALIFIED
Frozen Columns
Name
Ivar Paprocki
Costa Dilliard
Rodrigues Campain
Johnson Sergi
Munro Ferencz
Maria Marrier
Clifford Rim
Salvatore Stockham
Jeanfrancois Venere
Aika Inouye
Antonio Caudy
Johnson Sergi
Octavia Malet
Rodrigues Campain
Ashley Doe
Nicolas Iturbide
Jefferson Schemmer
Johnson Sergi
James Butt
Alejandro Perin
Jones Vocelka
Jeanfrancois Venere
Silvio Slusarski
Munro Ferencz
Murillo Malet
Aditya Kusko
Maisha Rulapaugh
Wickens Nestle
Chavez Briddick
Adams Morasca
Isabel Bowley
Jeanfrancois Venere
Ivar Paprocki
Aruna Figeroa
Smith Glick
Cody Saylors
Johnson Sergi
Misaki Royster
Jennifer Amigon
Isabel Bowley
Antonio Caudy
Mujtaba Nicka
Jennifer Amigon
Mujtaba Nicka
Rodrigues Campain
Jefferson Schemmer
Munro Ferencz
Ivar Paprocki
Aika Inouye
Salvatore Stockham
IdCountryDate
1000Australia2026-04-30
1001Japan2026-05-22
1002Spain2026-05-24
1003Russia2026-04-30
1004Spain2026-05-06
1005Spain2026-04-29
1006Russia2026-05-08
1007Argentina2026-04-28
1008Japan2026-04-28
1009Argentina2026-05-20
1010Spain2026-05-06
1011Russia2026-05-24
1012Japan2026-05-23
1013Russia2026-05-16
1014Canada2026-05-25
1015Germany2026-05-15
1016Canada2026-04-29
1017Canada2026-05-02
1018France2026-05-02
1019United Kingdom2026-05-02
1020Canada2026-05-03
1021Brazil2026-05-20
1022Germany2026-05-24
1023Italy2026-05-18
1024Germany2026-05-11
1025Germany2026-05-16
1026Australia2026-05-27
1027Italy2026-05-26
1028Canada2026-05-13
1029Russia2026-05-03
1030Germany2026-05-23
1031Japan2026-05-05
1032Germany2026-05-22
1033Canada2026-05-07
1034Canada2026-05-04
1035Australia2026-05-01
1036Brazil2026-05-22
1037United Kingdom2026-05-02
1038Spain2026-05-24
1039Italy2026-05-24
1040Brazil2026-05-26
1041Australia2026-05-14
1042Canada2026-05-27
1043Japan2026-04-28
1044Canada2026-05-07
1045United Kingdom2026-04-29
1046Japan2026-05-17
1047Argentina2026-05-10
1048Spain2026-05-11
1049Argentina2026-05-07

On-Demand Data

NameIdCountryDate
Izzy Garufi1000Germany2026-04-29
Maisha Rulapaugh1001India2026-04-29
David Darakjy1002Argentina2026-05-19
Jeanfrancois Venere1003Brazil2026-05-12
Tony Foller1004United Kingdom2026-05-10
Rodrigues Campain1005Spain2026-04-29
Ricardo Gaucho1006Canada2026-05-01
Antonio Caudy1007India2026-05-08
Jones Vocelka1008Spain2026-05-17
Antonio Caudy1009Germany2026-05-14
Claire Tollner1010Australia2026-05-23
James Butt1011Japan2026-05-26
Kaitlin Ostrosky1012Russia2026-05-09
Aika Inouye1013Brazil2026-05-17
Antonio Caudy1014India2026-05-16
Deepesh Chui1015Australia2026-05-09
Clifford Rim1016United Kingdom2026-05-21
Ivar Paprocki1017Russia2026-05-10
Jeanfrancois Venere1018Germany2026-05-17
Costa Dilliard1019Germany2026-05-23
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Izzy GarufiAustraliaIvan Magalhaes RENEWAL
Juan WieserUnited KingdomIvan Magalhaes UNQUALIFIED
Sinclair WaycottGermanyXuxue Feng NEW
Faith GillianCanadaIoni Bowcher QUALIFIED
Isabel BowleyArgentinaIvan Magalhaes NEGOTIATION
Chavez BriddickIndiaOnyama Limba NEGOTIATION
Chavez BriddickAustraliaXuxue Feng QUALIFIED
Rodrigues CampainRussiaElwin Sharvill QUALIFIED
Wickens NestleUnited KingdomXuxue Feng QUALIFIED
Emily WhobreyRussiaIoni Bowcher UNQUALIFIED
Jones VocelkaItalyIvan Magalhaes NEW
Adams MorascaGermanyBernardo Dominic UNQUALIFIED
Arvin AlbaresGermanyIvan Magalhaes QUALIFIED
Costa DilliardUnited KingdomIvan Magalhaes NEW
Kadeem FlosiJapanIvan Magalhaes RENEWAL
Leon OldroydGermanyAsiya Javayant PROPOSAL
Ricardo GauchoUnited KingdomIvan Magalhaes NEW
Morrow RutaArgentinaXuxue Feng PROPOSAL
Octavia MaletJapanStephen Shaw QUALIFIED
James ButtItalyAnna Fali PROPOSAL
Mujtaba NickaUnited KingdomAsiya Javayant NEW
Aika InouyeItalyOnyama Limba QUALIFIED
Emily WhobreyItalyStephen Shaw RENEWAL
Julie StensethJapanStephen Shaw PROPOSAL
Salvatore StockhamGermanyElwin Sharvill NEGOTIATION
Leon OldroydAustraliaIoni Bowcher UNQUALIFIED
Izzy GarufiJapanAnna Fali RENEWAL
Claire TollnerCanadaAmy Elsner RENEWAL
Greenwood BologniaIndiaStephen Shaw PROPOSAL
David DarakjyAustraliaAsiya Javayant RENEWAL
Mujtaba NickaCanadaIoni Bowcher NEW
Nicolas IturbideSpainXuxue Feng QUALIFIED
Kaitlin OstroskyArgentinaElwin Sharvill NEGOTIATION
Greenwood BologniaAustraliaAnna Fali NEGOTIATION
Rodrigues CampainIndiaElwin Sharvill NEGOTIATION
Jeanfrancois VenereJapanIvan Magalhaes UNQUALIFIED
Greenwood BologniaRussiaStephen Shaw PROPOSAL
Salvatore StockhamUnited KingdomIvan Magalhaes QUALIFIED
Octavia MaletArgentinaAnna Fali NEW
Ricardo GauchoIndiaBernardo Dominic 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>