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 PaprockiGermanyBernardo Dominic RENEWAL
Kadeem FlosiCanadaBernardo Dominic NEGOTIATION
Mujtaba NickaIndiaBernardo Dominic UNQUALIFIED
Darci PoquetteSpainAmy Elsner QUALIFIED
Nicolas IturbideBrazilXuxue Feng QUALIFIED
Ashley DoeBrazilOnyama Limba NEGOTIATION
Julie StensethCanadaBernardo Dominic UNQUALIFIED
Claire TollnerJapanAmy Elsner UNQUALIFIED
Leon OldroydAustraliaXuxue Feng QUALIFIED
Cody SaylorsBrazilOnyama Limba NEGOTIATION
Aika InouyeFranceBernardo Dominic RENEWAL
James ButtJapanAnna Fali NEW
Costa DilliardIndiaStephen Shaw QUALIFIED
Jefferson SchemmerSpainAnna Fali PROPOSAL
Salvatore StockhamArgentinaBernardo Dominic RENEWAL
Aruna FigeroaRussiaElwin Sharvill NEGOTIATION
Salvatore StockhamFranceElwin Sharvill PROPOSAL
Johnson SergiAustraliaBernardo Dominic QUALIFIED
Adams MorascaArgentinaAmy Elsner NEW
Jeanfrancois VenereSpainIvan Magalhaes UNQUALIFIED
Jeanfrancois VenereSpainIoni Bowcher NEGOTIATION
Maria MarrierGermanyXuxue Feng NEW
Octavia MaletSpainXuxue Feng RENEWAL
Juan WieserCanadaAsiya Javayant NEW
Murillo MaletRussiaIoni Bowcher PROPOSAL
James ButtGermanyOnyama Limba NEW
Smith GlickCanadaAmy Elsner RENEWAL
Izzy GarufiFranceAmy Elsner NEW
Ivar PaprockiSpainAnna Fali PROPOSAL
Tony FollerSpainAmy Elsner NEW
Jefferson SchemmerArgentinaOnyama Limba NEGOTIATION
Costa DilliardArgentinaAnna Fali NEW
Jones VocelkaCanadaAmy Elsner QUALIFIED
Julie StensethBrazilIvan Magalhaes QUALIFIED
Morrow RutaSpainOnyama Limba QUALIFIED
Julie StensethUnited KingdomIoni Bowcher QUALIFIED
James ButtItalyElwin Sharvill NEW
Antonio CaudyGermanyAnna Fali QUALIFIED
Adams MorascaRussiaBernardo Dominic RENEWAL
Deepesh ChuiItalyOnyama Limba RENEWAL
Salvatore StockhamArgentinaBernardo Dominic NEW
Jennifer AmigonGermanyAnna Fali QUALIFIED
Aruna FigeroaCanadaBernardo Dominic UNQUALIFIED
Antonio CaudySpainElwin Sharvill QUALIFIED
Ashley DoeCanadaStephen Shaw NEGOTIATION
Greenwood BologniaRussiaAmy Elsner RENEWAL
Greenwood BologniaFranceBernardo Dominic NEW
Adams MorascaUnited KingdomStephen Shaw UNQUALIFIED
Maria MarrierAustraliaAnna Fali RENEWAL
Mayumi KolmetzRussiaAsiya Javayant RENEWAL
Horizontal
NameCountryRepresentativeStatus
Mujtaba NickaBrazilStephen Shaw NEW
Aruna FigeroaCanadaAmy Elsner QUALIFIED
Mujtaba NickaArgentinaStephen Shaw QUALIFIED
Jones VocelkaJapanBernardo Dominic QUALIFIED
Jeanfrancois VenereCanadaElwin Sharvill UNQUALIFIED
Alejandro PerinRussiaOnyama Limba NEW
Rodrigues CampainIndiaAnna Fali PROPOSAL
Chavez BriddickIndiaXuxue Feng PROPOSAL
Antonio CaudyUnited KingdomIoni Bowcher RENEWAL
Kaitlin OstroskySpainElwin Sharvill QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Sinclair WaycottArgentina2025-08-05King, Christopher A Esq NEGOTIATION44Xuxue Feng
1001Salvatore StockhamSpain2025-08-14Commercial Press RENEWAL38Anna Fali
1002Tony FollerItaly2025-08-12Buckley Miller Wright RENEWAL23Anna Fali
1003Octavia MaletFrance2025-08-04Dorl, James J Esq NEGOTIATION25Stephen Shaw
1004Salvatore StockhamCanada2025-08-10Printing Dimensions RENEWAL53Asiya Javayant
1005Ivar PaprockiBrazil2025-08-12Morlong Associates QUALIFIED38Ivan Magalhaes
1006Antonio CaudyUnited Kingdom2025-08-03Rangoni Of Florence NEGOTIATION38Asiya Javayant
1007James ButtArgentina2025-07-27Printing Dimensions NEW57Ivan Magalhaes
1008Aika InouyeUnited Kingdom2025-08-02Dorl, James J Esq PROPOSAL68Asiya Javayant
1009Aika InouyeRussia2025-08-09Dorl, James J Esq UNQUALIFIED32Elwin Sharvill
1010Maisha RulapaughSpain2025-08-06Dorl, James J Esq NEW79Asiya Javayant
1011Leon OldroydJapan2025-08-16Rousseaux, Michael Esq QUALIFIED51Amy Elsner
1012Ashley DoeItaly2025-07-29Chemel, James L Cpa UNQUALIFIED15Asiya Javayant
1013Silvio SlusarskiBrazil2025-08-02Truhlar And Truhlar Attys RENEWAL37Onyama Limba
1014Arvin AlbaresArgentina2025-08-12Printing Dimensions NEGOTIATION95Xuxue Feng
1015Smith GlickUnited Kingdom2025-08-16Dorl, James J Esq NEW37Stephen Shaw
1016Francesco ShinkoIndia2025-08-15Buckley Miller Wright NEW73Bernardo Dominic
1017Smith GlickAustralia2025-08-04Feiner Bros RENEWAL77Ivan Magalhaes
1018Morrow RutaJapan2025-08-08Feiner Bros RENEWAL95Elwin Sharvill
1019Clifford RimIndia2025-08-13King, Christopher A Esq RENEWAL8Stephen Shaw
1020Aika InouyeJapan2025-08-01Chanay, Jeffrey A Esq PROPOSAL70Onyama Limba
1021Antonio CaudyFrance2025-07-23King, Christopher A Esq NEGOTIATION47Asiya Javayant
1022Greenwood BologniaGermany2025-07-26Printing Dimensions NEW15Asiya Javayant
1023Wickens NestleItaly2025-08-13Rangoni Of Florence QUALIFIED23Bernardo Dominic
1024Aruna FigeroaUnited Kingdom2025-08-02Benton, John B Jr NEW37Xuxue Feng
1025Leja CaldareraSpain2025-07-31Buckley Miller Wright QUALIFIED40Ioni Bowcher
1026Clifford RimSpain2025-07-30Feltz Printing Service QUALIFIED27Elwin Sharvill
1027Alejandro PerinItaly2025-08-09Commercial Press QUALIFIED75Amy Elsner
1028Leja CaldareraRussia2025-08-19Feiner Bros NEGOTIATION87Elwin Sharvill
1029Octavia MaletUnited Kingdom2025-07-27Morlong Associates RENEWAL45Amy Elsner
1030Nicolas IturbideJapan2025-08-12Chemel, James L Cpa PROPOSAL9Asiya Javayant
1031Maisha RulapaughUnited Kingdom2025-08-09Chapman, Ross E Esq QUALIFIED64Ivan Magalhaes
1032Mayumi KolmetzItaly2025-08-07Truhlar And Truhlar Attys RENEWAL16Elwin Sharvill
1033Aika InouyeFrance2025-07-26Rangoni Of Florence PROPOSAL57Amy Elsner
1034Wickens NestleRussia2025-08-15Feiner Bros UNQUALIFIED37Bernardo Dominic
1035Faith GillianArgentina2025-08-13Chapman, Ross E Esq QUALIFIED65Xuxue Feng
1036Alejandro PerinRussia2025-08-11Chemel, James L Cpa NEGOTIATION5Amy Elsner
1037Jennifer AmigonItaly2025-08-10Rousseaux, Michael Esq NEGOTIATION5Stephen Shaw
1038Leon OldroydJapan2025-08-11Benton, John B Jr QUALIFIED9Amy Elsner
1039Jones VocelkaGermany2025-08-21Chanay, Jeffrey A Esq QUALIFIED18Ioni Bowcher
1040Jones VocelkaJapan2025-08-11Feltz Printing Service PROPOSAL10Onyama Limba
1041Leon OldroydFrance2025-07-29Feiner Bros QUALIFIED76Stephen Shaw
1042Isabel BowleyJapan2025-07-28Dorl, James J Esq PROPOSAL10Asiya Javayant
1043Kaitlin OstroskyAustralia2025-07-24Printing Dimensions UNQUALIFIED64Bernardo Dominic
1044Tony FollerBrazil2025-08-15King, Christopher A Esq UNQUALIFIED6Anna Fali
1045Costa DilliardCanada2025-08-19Chapman, Ross E Esq QUALIFIED92Elwin Sharvill
1046Mayumi KolmetzJapan2025-07-28Chanay, Jeffrey A Esq NEGOTIATION85Bernardo Dominic
1047Jeanfrancois VenereArgentina2025-07-25Rangoni Of Florence PROPOSAL82Elwin Sharvill
1048Mayumi KolmetzBrazil2025-08-17Commercial Press QUALIFIED37Amy Elsner
1049Murillo MaletAustralia2025-08-15Feiner Bros RENEWAL3Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Leja CaldareraSpainAsiya Javayant RENEWAL
Faith GillianUnited KingdomXuxue Feng PROPOSAL
Alejandro PerinCanadaBernardo Dominic NEW
Emily WhobreyJapanAsiya Javayant NEW
Deepesh ChuiGermanyIoni Bowcher NEGOTIATION
Misaki RoysterIndiaIvan Magalhaes UNQUALIFIED
Greenwood BologniaBrazilStephen Shaw QUALIFIED
Aruna FigeroaSpainAmy Elsner RENEWAL
Emily WhobreyCanadaXuxue Feng UNQUALIFIED
Claire TollnerSpainElwin Sharvill RENEWAL
Smith GlickCanadaAmy Elsner NEW
Izzy GarufiBrazilOnyama Limba NEGOTIATION
Julie StensethGermanyIoni Bowcher QUALIFIED
Jones VocelkaRussiaAnna Fali RENEWAL
Adams MorascaRussiaAnna Fali RENEWAL
Aditya KuskoJapanElwin Sharvill QUALIFIED
Ivar PaprockiSpainOnyama Limba QUALIFIED
Darci PoquetteBrazilIoni Bowcher UNQUALIFIED
Greenwood BologniaItalyIvan Magalhaes NEGOTIATION
Aditya KuskoFranceBernardo Dominic NEGOTIATION
Leja CaldareraSpainBernardo Dominic UNQUALIFIED
Smith GlickBrazilAnna Fali PROPOSAL
Morrow RutaBrazilXuxue Feng QUALIFIED
Jefferson SchemmerBrazilAmy Elsner PROPOSAL
Aika InouyeJapanAmy Elsner UNQUALIFIED
Mayumi KolmetzBrazilAnna Fali QUALIFIED
Aditya KuskoCanadaIvan Magalhaes NEGOTIATION
Wickens NestleBrazilBernardo Dominic NEGOTIATION
Smith GlickIndiaStephen Shaw QUALIFIED
Deepesh ChuiItalyAnna Fali RENEWAL
Alejandro PerinSpainOnyama Limba NEGOTIATION
Wickens NestleUnited KingdomAsiya Javayant NEW
Juan WieserSpainStephen Shaw QUALIFIED
Octavia MaletUnited KingdomStephen Shaw PROPOSAL
Ashley DoeJapanXuxue Feng UNQUALIFIED
Izzy GarufiGermanyIoni Bowcher QUALIFIED
James ButtRussiaAnna Fali RENEWAL
Jefferson SchemmerAustraliaStephen Shaw RENEWAL
Jeanfrancois VenereBrazilAsiya Javayant RENEWAL
Francesco ShinkoCanadaIoni Bowcher UNQUALIFIED
Mayumi KolmetzRussiaAmy Elsner QUALIFIED
Stacey MacleadJapanElwin Sharvill NEW
Kaitlin OstroskyAustraliaIvan Magalhaes NEGOTIATION
David DarakjyCanadaXuxue Feng NEW
Juan WieserItalyBernardo Dominic PROPOSAL
James ButtJapanAsiya Javayant PROPOSAL
James ButtIndiaAmy Elsner UNQUALIFIED
Nicolas IturbideGermanyIvan Magalhaes PROPOSAL
Wickens NestleUnited KingdomStephen Shaw NEGOTIATION
Costa DilliardItalyElwin Sharvill NEW
Frozen Columns
Name
David Darakjy
Rodrigues Campain
Munro Ferencz
Cody Saylors
Nicolas Iturbide
Juan Wieser
Emily Whobrey
Morrow Ruta
Francesco Shinko
Smith Glick
Jennifer Amigon
Julie Stenseth
Leon Oldroyd
Jefferson Schemmer
Rodrigues Campain
Aika Inouye
Morrow Ruta
Maisha Rulapaugh
Alejandro Perin
Emily Whobrey
Cody Saylors
Salvatore Stockham
Julie Stenseth
David Darakjy
Adams Morasca
Kaitlin Ostrosky
Ivar Paprocki
Darci Poquette
Kaitlin Ostrosky
Isabel Bowley
Darci Poquette
Costa Dilliard
Clifford Rim
Maria Marrier
Leon Oldroyd
Maisha Rulapaugh
Arvin Albares
Ashley Doe
Wickens Nestle
Alejandro Perin
Octavia Malet
Francesco Shinko
James Butt
Nicolas Iturbide
Antonio Caudy
Kadeem Flosi
Izzy Garufi
Maria Marrier
Stacey Maclead
Francesco Shinko
IdCountryDate
1000Japan2025-07-25
1001Spain2025-08-19
1002Italy2025-07-27
1003Canada2025-07-26
1004Germany2025-07-29
1005France2025-08-05
1006Germany2025-08-02
1007Italy2025-08-20
1008Italy2025-07-24
1009Italy2025-08-13
1010Canada2025-08-04
1011Brazil2025-08-16
1012Spain2025-08-15
1013Argentina2025-08-18
1014Australia2025-08-19
1015United Kingdom2025-07-29
1016Argentina2025-08-01
1017United Kingdom2025-08-06
1018Canada2025-08-02
1019United Kingdom2025-07-28
1020United Kingdom2025-07-27
1021United Kingdom2025-08-07
1022Japan2025-08-13
1023India2025-08-12
1024United Kingdom2025-08-12
1025Brazil2025-07-24
1026Russia2025-08-06
1027Australia2025-07-24
1028India2025-07-24
1029Russia2025-08-12
1030France2025-08-04
1031France2025-08-01
1032Italy2025-08-02
1033France2025-08-16
1034Germany2025-08-12
1035Italy2025-08-06
1036United Kingdom2025-08-07
1037Brazil2025-08-02
1038Japan2025-08-17
1039Germany2025-08-02
1040Argentina2025-08-13
1041Italy2025-08-12
1042India2025-08-07
1043Argentina2025-08-11
1044Germany2025-08-13
1045Japan2025-08-18
1046Brazil2025-07-23
1047United Kingdom2025-08-05
1048Italy2025-08-01
1049Japan2025-07-30

On-Demand Data

NameIdCountryDate
Emily Whobrey1000Australia2025-07-29
Maria Marrier1001Argentina2025-08-21
Maisha Rulapaugh1002Japan2025-08-10
Salvatore Stockham1003Spain2025-08-05
Johnson Sergi1004United Kingdom2025-07-26
Morrow Ruta1005Canada2025-08-11
Stacey Maclead1006Brazil2025-07-24
Julie Stenseth1007Canada2025-07-27
Antonio Caudy1008Italy2025-08-20
Jennifer Amigon1009Spain2025-07-27
Rodrigues Campain1010Russia2025-07-24
Greenwood Bolognia1011United Kingdom2025-08-17
Faith Gillian1012Brazil2025-08-06
Emily Whobrey1013Canada2025-08-11
Jones Vocelka1014Germany2025-08-05
Costa Dilliard1015India2025-08-04
Arvin Albares1016Russia2025-07-30
Juan Wieser1017Japan2025-08-01
Darci Poquette1018Brazil2025-07-30
Emily Whobrey1019Japan2025-08-13
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Murillo MaletCanadaIoni Bowcher RENEWAL
Aika InouyeJapanElwin Sharvill PROPOSAL
Rodrigues CampainCanadaElwin Sharvill UNQUALIFIED
Nicolas IturbideCanadaAsiya Javayant RENEWAL
Faith GillianRussiaElwin Sharvill RENEWAL
Jeanfrancois VenereUnited KingdomOnyama Limba UNQUALIFIED
Stacey MacleadIndiaAsiya Javayant NEW
Aruna FigeroaIndiaXuxue Feng NEW
Isabel BowleyUnited KingdomIoni Bowcher PROPOSAL
Aruna FigeroaItalyBernardo Dominic RENEWAL
Adams MorascaUnited KingdomOnyama Limba QUALIFIED
Wickens NestleCanadaOnyama Limba UNQUALIFIED
Alejandro PerinIndiaIvan Magalhaes NEW
Ivar PaprockiJapanIoni Bowcher UNQUALIFIED
Adams MorascaUnited KingdomIvan Magalhaes PROPOSAL
Mujtaba NickaRussiaAnna Fali RENEWAL
Misaki RoysterGermanyStephen Shaw QUALIFIED
Aruna FigeroaJapanStephen Shaw NEW
Maisha RulapaughSpainAnna Fali NEW
Jones VocelkaSpainAsiya Javayant PROPOSAL
Ivar PaprockiSpainStephen Shaw PROPOSAL
Tony FollerCanadaAsiya Javayant PROPOSAL
Adams MorascaItalyAmy Elsner UNQUALIFIED
Smith GlickRussiaOnyama Limba NEGOTIATION
Kaitlin OstroskyIndiaStephen Shaw RENEWAL
Johnson SergiFranceIvan Magalhaes NEW
Johnson SergiFranceStephen Shaw RENEWAL
James ButtGermanyAnna Fali RENEWAL
Johnson SergiJapanOnyama Limba RENEWAL
Sinclair WaycottAustraliaIoni Bowcher NEGOTIATION
Aruna FigeroaFranceBernardo Dominic UNQUALIFIED
Leja CaldareraFranceAnna Fali UNQUALIFIED
Jeanfrancois VenereCanadaStephen Shaw NEW
Kadeem FlosiSpainIvan Magalhaes UNQUALIFIED
Kadeem FlosiArgentinaIoni Bowcher NEW
Tony FollerRussiaOnyama Limba QUALIFIED
Juan WieserArgentinaBernardo Dominic PROPOSAL
Arvin AlbaresAustraliaIoni Bowcher QUALIFIED
Kadeem FlosiRussiaElwin Sharvill QUALIFIED
Deepesh ChuiAustraliaBernardo Dominic 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>