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
Ivar PaprockiRussiaBernardo Dominic UNQUALIFIED
Rodrigues CampainArgentinaXuxue Feng RENEWAL
James ButtFranceIoni Bowcher UNQUALIFIED
Juan WieserItalyAsiya Javayant NEGOTIATION
Jefferson SchemmerJapanStephen Shaw UNQUALIFIED
Rodrigues CampainBrazilAmy Elsner NEGOTIATION
Leon OldroydGermanyAsiya Javayant RENEWAL
Francesco ShinkoCanadaXuxue Feng RENEWAL
Ashley DoeJapanStephen Shaw UNQUALIFIED
Faith GillianBrazilAnna Fali NEW
Izzy GarufiJapanIoni Bowcher PROPOSAL
Sinclair WaycottCanadaOnyama Limba NEGOTIATION
Faith GillianAustraliaIoni Bowcher UNQUALIFIED
Francesco ShinkoSpainStephen Shaw QUALIFIED
Deepesh ChuiSpainIvan Magalhaes RENEWAL
David DarakjyBrazilAnna Fali RENEWAL
Adams MorascaRussiaStephen Shaw NEGOTIATION
Jefferson SchemmerItalyBernardo Dominic NEW
Jeanfrancois VenereGermanyBernardo Dominic NEGOTIATION
Jefferson SchemmerBrazilIvan Magalhaes PROPOSAL
Greenwood BologniaArgentinaXuxue Feng UNQUALIFIED
Adams MorascaUnited KingdomIvan Magalhaes QUALIFIED
Chavez BriddickArgentinaAsiya Javayant UNQUALIFIED
Mayumi KolmetzArgentinaElwin Sharvill QUALIFIED
Faith GillianJapanStephen Shaw RENEWAL
Sinclair WaycottJapanIoni Bowcher PROPOSAL
Mujtaba NickaItalyElwin Sharvill RENEWAL
Wickens NestleItalyIoni Bowcher NEGOTIATION
Maria MarrierArgentinaBernardo Dominic NEW
Morrow RutaAustraliaAnna Fali NEW
Izzy GarufiJapanOnyama Limba UNQUALIFIED
Arvin AlbaresArgentinaElwin Sharvill UNQUALIFIED
Jones VocelkaFranceOnyama Limba PROPOSAL
Morrow RutaSpainBernardo Dominic UNQUALIFIED
Misaki RoysterJapanAsiya Javayant UNQUALIFIED
Greenwood BologniaIndiaIoni Bowcher NEW
David DarakjyJapanElwin Sharvill NEW
Clifford RimAustraliaOnyama Limba RENEWAL
Emily WhobreyRussiaAsiya Javayant NEW
Wickens NestleSpainIoni Bowcher PROPOSAL
Cody SaylorsRussiaAmy Elsner RENEWAL
Alejandro PerinRussiaBernardo Dominic NEW
Smith GlickArgentinaAsiya Javayant NEGOTIATION
Mayumi KolmetzAustraliaOnyama Limba QUALIFIED
Morrow RutaCanadaAnna Fali RENEWAL
Morrow RutaGermanyXuxue Feng QUALIFIED
Izzy GarufiSpainAmy Elsner PROPOSAL
Mayumi KolmetzFranceAnna Fali UNQUALIFIED
Izzy GarufiAustraliaAnna Fali RENEWAL
Darci PoquetteBrazilXuxue Feng UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Francesco ShinkoFranceXuxue Feng NEGOTIATION
Wickens NestleAustraliaStephen Shaw QUALIFIED
Clifford RimArgentinaXuxue Feng NEW
Antonio CaudyFranceIvan Magalhaes RENEWAL
Aika InouyeSpainXuxue Feng UNQUALIFIED
Mujtaba NickaIndiaStephen Shaw NEGOTIATION
Munro FerenczJapanBernardo Dominic QUALIFIED
Deepesh ChuiJapanBernardo Dominic QUALIFIED
Sinclair WaycottSpainXuxue Feng UNQUALIFIED
Greenwood BologniaIndiaOnyama Limba NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Sinclair WaycottAustralia2026-05-17Chanay, Jeffrey A Esq PROPOSAL12Ivan Magalhaes
1001Aruna FigeroaCanada2026-05-31Rangoni Of Florence RENEWAL94Xuxue Feng
1002Mujtaba NickaCanada2026-05-28Chapman, Ross E Esq QUALIFIED87Asiya Javayant
1003Murillo MaletAustralia2026-05-21Commercial Press RENEWAL85Anna Fali
1004Costa DilliardBrazil2026-05-21Rangoni Of Florence RENEWAL62Xuxue Feng
1005Jeanfrancois VenereBrazil2026-05-23King, Christopher A Esq PROPOSAL92Xuxue Feng
1006Emily WhobreyItaly2026-06-05Rangoni Of Florence NEW65Ivan Magalhaes
1007Julie StensethIndia2026-06-03Printing Dimensions NEGOTIATION70Anna Fali
1008Aika InouyeUnited Kingdom2026-05-24Feltz Printing Service PROPOSAL95Amy Elsner
1009Murillo MaletAustralia2026-06-06Buckley Miller Wright PROPOSAL50Amy Elsner
1010Tony FollerGermany2026-05-20Feltz Printing Service UNQUALIFIED46Stephen Shaw
1011Mujtaba NickaRussia2026-06-06Chanay, Jeffrey A Esq NEW49Elwin Sharvill
1012Costa DilliardGermany2026-05-28Feiner Bros NEW38Bernardo Dominic
1013Silvio SlusarskiItaly2026-05-20Rousseaux, Michael Esq NEW51Xuxue Feng
1014Morrow RutaAustralia2026-05-11Morlong Associates RENEWAL13Xuxue Feng
1015Silvio SlusarskiUnited Kingdom2026-05-24King, Christopher A Esq UNQUALIFIED16Asiya Javayant
1016Sinclair WaycottGermany2026-05-14Feiner Bros QUALIFIED57Ioni Bowcher
1017Costa DilliardRussia2026-05-20Feiner Bros UNQUALIFIED54Asiya Javayant
1018Silvio SlusarskiGermany2026-05-14Rangoni Of Florence UNQUALIFIED61Amy Elsner
1019James ButtIndia2026-05-16Morlong Associates NEGOTIATION80Onyama Limba
1020Arvin AlbaresSpain2026-06-04Morlong Associates NEW52Amy Elsner
1021Tony FollerFrance2026-06-01Feiner Bros NEGOTIATION83Onyama Limba
1022Leon OldroydGermany2026-05-19Chemel, James L Cpa NEW75Amy Elsner
1023Faith GillianRussia2026-06-06Rousseaux, Michael Esq NEW89Elwin Sharvill
1024Silvio SlusarskiRussia2026-05-25Benton, John B Jr NEGOTIATION52Anna Fali
1025Jefferson SchemmerBrazil2026-05-27Chanay, Jeffrey A Esq QUALIFIED57Elwin Sharvill
1026Maisha RulapaughCanada2026-05-17Truhlar And Truhlar Attys NEW70Ivan Magalhaes
1027Kaitlin OstroskyGermany2026-05-16Chapman, Ross E Esq QUALIFIED77Stephen Shaw
1028Ashley DoeAustralia2026-06-08Dorl, James J Esq NEGOTIATION71Ioni Bowcher
1029Faith GillianUnited Kingdom2026-05-28Rangoni Of Florence PROPOSAL44Anna Fali
1030Stacey MacleadCanada2026-05-28Printing Dimensions NEW54Ivan Magalhaes
1031Kaitlin OstroskyJapan2026-05-16Rangoni Of Florence NEW32Asiya Javayant
1032Octavia MaletUnited Kingdom2026-06-06Chapman, Ross E Esq QUALIFIED49Ioni Bowcher
1033Wickens NestleGermany2026-05-28Printing Dimensions QUALIFIED44Bernardo Dominic
1034Wickens NestleUnited Kingdom2026-06-09Printing Dimensions PROPOSAL70Anna Fali
1035Rodrigues CampainCanada2026-05-16Buckley Miller Wright PROPOSAL60Ivan Magalhaes
1036Jennifer AmigonJapan2026-06-09Chemel, James L Cpa RENEWAL8Elwin Sharvill
1037Leon OldroydUnited Kingdom2026-05-24Chemel, James L Cpa PROPOSAL88Onyama Limba
1038Maria MarrierGermany2026-06-08King, Christopher A Esq NEW8Xuxue Feng
1039Jeanfrancois VenereCanada2026-05-23Chanay, Jeffrey A Esq UNQUALIFIED42Asiya Javayant
1040Costa DilliardCanada2026-05-20Chanay, Jeffrey A Esq RENEWAL74Elwin Sharvill
1041Silvio SlusarskiFrance2026-05-21Feltz Printing Service UNQUALIFIED58Asiya Javayant
1042Maisha RulapaughJapan2026-05-15Chanay, Jeffrey A Esq PROPOSAL55Stephen Shaw
1043Cody SaylorsJapan2026-05-12Chemel, James L Cpa RENEWAL72Ioni Bowcher
1044David DarakjyGermany2026-06-04King, Christopher A Esq NEGOTIATION71Ioni Bowcher
1045Rodrigues CampainIndia2026-06-03King, Christopher A Esq RENEWAL34Xuxue Feng
1046Alejandro PerinGermany2026-05-14Buckley Miller Wright UNQUALIFIED13Asiya Javayant
1047Maria MarrierJapan2026-06-06Feltz Printing Service QUALIFIED61Bernardo Dominic
1048Ashley DoeSpain2026-05-14Benton, John B Jr RENEWAL53Xuxue Feng
1049Antonio CaudyJapan2026-05-19Rousseaux, Michael Esq NEW64Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Darci PoquetteUnited KingdomOnyama Limba QUALIFIED
Leon OldroydIndiaAnna Fali NEGOTIATION
Silvio SlusarskiBrazilStephen Shaw PROPOSAL
Emily WhobreyGermanyAnna Fali PROPOSAL
Faith GillianCanadaBernardo Dominic NEW
Francesco ShinkoItalyElwin Sharvill QUALIFIED
Kaitlin OstroskyCanadaAmy Elsner NEW
Mayumi KolmetzFranceIoni Bowcher RENEWAL
Julie StensethJapanIoni Bowcher NEGOTIATION
Kaitlin OstroskyIndiaIvan Magalhaes UNQUALIFIED
Chavez BriddickAustraliaBernardo Dominic NEW
James ButtRussiaAsiya Javayant NEGOTIATION
David DarakjyAustraliaIvan Magalhaes NEGOTIATION
Arvin AlbaresFranceAmy Elsner RENEWAL
Kaitlin OstroskyItalyStephen Shaw NEW
Jennifer AmigonJapanStephen Shaw PROPOSAL
Misaki RoysterUnited KingdomElwin Sharvill UNQUALIFIED
Aditya KuskoItalyAsiya Javayant NEW
Tony FollerGermanyIvan Magalhaes NEW
Claire TollnerArgentinaStephen Shaw RENEWAL
Antonio CaudyGermanyElwin Sharvill QUALIFIED
Misaki RoysterAustraliaAsiya Javayant NEW
Antonio CaudyIndiaIoni Bowcher RENEWAL
Mujtaba NickaUnited KingdomStephen Shaw RENEWAL
Smith GlickIndiaElwin Sharvill PROPOSAL
Izzy GarufiGermanyBernardo Dominic NEGOTIATION
Alejandro PerinFranceBernardo Dominic PROPOSAL
Antonio CaudyRussiaXuxue Feng NEW
Octavia MaletItalyXuxue Feng RENEWAL
Misaki RoysterRussiaBernardo Dominic RENEWAL
Maisha RulapaughArgentinaAsiya Javayant RENEWAL
Leja CaldareraRussiaStephen Shaw UNQUALIFIED
Chavez BriddickAustraliaElwin Sharvill RENEWAL
Wickens NestleRussiaElwin Sharvill QUALIFIED
Jones VocelkaCanadaAnna Fali PROPOSAL
David DarakjyFranceElwin Sharvill NEW
Sinclair WaycottRussiaIoni Bowcher NEGOTIATION
Nicolas IturbideBrazilAsiya Javayant RENEWAL
Murillo MaletJapanAsiya Javayant NEW
Isabel BowleySpainXuxue Feng UNQUALIFIED
Aruna FigeroaUnited KingdomBernardo Dominic PROPOSAL
Nicolas IturbideSpainIvan Magalhaes QUALIFIED
Leja CaldareraItalyAnna Fali PROPOSAL
Wickens NestleAustraliaElwin Sharvill PROPOSAL
James ButtFranceElwin Sharvill RENEWAL
Francesco ShinkoBrazilAnna Fali QUALIFIED
Mayumi KolmetzCanadaXuxue Feng PROPOSAL
Salvatore StockhamIndiaIoni Bowcher RENEWAL
Clifford RimCanadaXuxue Feng NEW
Clifford RimJapanIoni Bowcher RENEWAL
Frozen Columns
Name
Wickens Nestle
Faith Gillian
Adams Morasca
Mayumi Kolmetz
Darci Poquette
Chavez Briddick
Morrow Ruta
Murillo Malet
Leja Caldarera
Smith Glick
Deepesh Chui
Ashley Doe
Misaki Royster
Maisha Rulapaugh
Ivar Paprocki
Leja Caldarera
Claire Tollner
Isabel Bowley
Jennifer Amigon
Francesco Shinko
Aditya Kusko
Isabel Bowley
Jeanfrancois Venere
Jefferson Schemmer
Murillo Malet
Clifford Rim
Rodrigues Campain
Emily Whobrey
Clifford Rim
Juan Wieser
Octavia Malet
Arvin Albares
Juan Wieser
Ashley Doe
Tony Foller
Jones Vocelka
Greenwood Bolognia
Greenwood Bolognia
Costa Dilliard
Smith Glick
David Darakjy
Greenwood Bolognia
Misaki Royster
Jones Vocelka
Nicolas Iturbide
Maria Marrier
Faith Gillian
Julie Stenseth
Izzy Garufi
Izzy Garufi
IdCountryDate
1000United Kingdom2026-06-07
1001Germany2026-05-12
1002India2026-06-02
1003Argentina2026-05-28
1004Spain2026-05-28
1005India2026-05-17
1006Brazil2026-06-01
1007Japan2026-05-25
1008Italy2026-06-07
1009Japan2026-05-16
1010Japan2026-06-09
1011Spain2026-05-14
1012Japan2026-06-02
1013France2026-05-24
1014Spain2026-06-03
1015Brazil2026-05-23
1016Canada2026-06-02
1017Argentina2026-05-14
1018Argentina2026-06-08
1019Russia2026-05-20
1020India2026-05-26
1021Argentina2026-06-08
1022Germany2026-05-31
1023Argentina2026-05-17
1024Brazil2026-05-30
1025Brazil2026-05-21
1026Russia2026-05-25
1027Argentina2026-06-02
1028Italy2026-05-20
1029Canada2026-06-03
1030Japan2026-06-02
1031Brazil2026-06-03
1032Spain2026-05-18
1033India2026-05-15
1034Canada2026-06-03
1035Germany2026-05-21
1036Australia2026-06-08
1037Brazil2026-06-05
1038Italy2026-05-16
1039Germany2026-06-02
1040Australia2026-06-09
1041Italy2026-05-30
1042Brazil2026-05-21
1043Australia2026-05-20
1044Japan2026-05-22
1045Canada2026-05-15
1046Italy2026-05-17
1047Russia2026-05-29
1048Japan2026-06-04
1049Australia2026-05-23

On-Demand Data

NameIdCountryDate
David Darakjy1000Brazil2026-06-02
Smith Glick1001India2026-06-07
Clifford Rim1002Spain2026-05-28
Jones Vocelka1003France2026-05-11
Octavia Malet1004United Kingdom2026-05-31
Salvatore Stockham1005Argentina2026-06-09
Ivar Paprocki1006Canada2026-05-15
Mayumi Kolmetz1007France2026-06-04
Jeanfrancois Venere1008Spain2026-05-13
Kadeem Flosi1009India2026-05-16
Cody Saylors1010Italy2026-06-08
Clifford Rim1011Italy2026-05-14
Isabel Bowley1012Germany2026-05-26
Arvin Albares1013Argentina2026-05-26
Julie Stenseth1014Brazil2026-05-28
Mujtaba Nicka1015Canada2026-05-22
Emily Whobrey1016France2026-06-07
Izzy Garufi1017Russia2026-06-05
Misaki Royster1018Canada2026-05-29
Silvio Slusarski1019Canada2026-05-14
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Arvin AlbaresItalyXuxue Feng UNQUALIFIED
Stacey MacleadArgentinaElwin Sharvill NEGOTIATION
Jefferson SchemmerGermanyAmy Elsner NEW
Mayumi KolmetzFranceElwin Sharvill NEGOTIATION
Mujtaba NickaBrazilStephen Shaw NEW
David DarakjyRussiaAsiya Javayant RENEWAL
James ButtArgentinaAmy Elsner PROPOSAL
Izzy GarufiIndiaStephen Shaw NEGOTIATION
Ivar PaprockiCanadaAmy Elsner QUALIFIED
Chavez BriddickAustraliaElwin Sharvill NEW
Silvio SlusarskiSpainAmy Elsner QUALIFIED
Maria MarrierBrazilXuxue Feng PROPOSAL
Francesco ShinkoArgentinaIvan Magalhaes UNQUALIFIED
Francesco ShinkoRussiaAmy Elsner QUALIFIED
Chavez BriddickGermanyElwin Sharvill QUALIFIED
Greenwood BologniaJapanIvan Magalhaes QUALIFIED
Alejandro PerinJapanBernardo Dominic NEGOTIATION
Sinclair WaycottUnited KingdomBernardo Dominic RENEWAL
Alejandro PerinCanadaAmy Elsner PROPOSAL
Clifford RimFranceAnna Fali QUALIFIED
Cody SaylorsRussiaAmy Elsner RENEWAL
Kadeem FlosiGermanyAmy Elsner NEGOTIATION
Aditya KuskoBrazilIoni Bowcher PROPOSAL
Jones VocelkaSpainIvan Magalhaes PROPOSAL
Smith GlickJapanAnna Fali PROPOSAL
Antonio CaudyAustraliaBernardo Dominic PROPOSAL
Aruna FigeroaArgentinaAmy Elsner PROPOSAL
Maisha RulapaughJapanAmy Elsner NEW
Darci PoquetteItalyBernardo Dominic RENEWAL
Munro FerenczAustraliaElwin Sharvill UNQUALIFIED
Alejandro PerinRussiaBernardo Dominic UNQUALIFIED
Julie StensethSpainAmy Elsner NEGOTIATION
Juan WieserArgentinaIoni Bowcher UNQUALIFIED
Maria MarrierSpainAmy Elsner NEGOTIATION
Sinclair WaycottGermanyElwin Sharvill QUALIFIED
Cody SaylorsJapanAnna Fali NEW
Francesco ShinkoJapanAsiya Javayant QUALIFIED
Izzy GarufiAustraliaAsiya Javayant UNQUALIFIED
Faith GillianJapanXuxue Feng NEGOTIATION
Ashley DoeArgentinaAnna Fali UNQUALIFIED

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