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
Julie StensethUnited KingdomAsiya Javayant UNQUALIFIED
Stacey MacleadFranceXuxue Feng RENEWAL
Kadeem FlosiGermanyAnna Fali QUALIFIED
Tony FollerJapanOnyama Limba RENEWAL
Faith GillianAustraliaAmy Elsner PROPOSAL
Silvio SlusarskiUnited KingdomIvan Magalhaes UNQUALIFIED
Maisha RulapaughJapanStephen Shaw RENEWAL
Aditya KuskoSpainElwin Sharvill RENEWAL
Stacey MacleadArgentinaIvan Magalhaes NEGOTIATION
Faith GillianUnited KingdomIvan Magalhaes NEGOTIATION
Greenwood BologniaCanadaElwin Sharvill UNQUALIFIED
Clifford RimAustraliaStephen Shaw NEGOTIATION
Jeanfrancois VenereIndiaIvan Magalhaes UNQUALIFIED
Ivar PaprockiItalyIoni Bowcher NEGOTIATION
Tony FollerIndiaAmy Elsner NEGOTIATION
Maria MarrierGermanyElwin Sharvill RENEWAL
Murillo MaletAustraliaStephen Shaw UNQUALIFIED
Jefferson SchemmerCanadaIvan Magalhaes NEGOTIATION
Rodrigues CampainRussiaAsiya Javayant QUALIFIED
Nicolas IturbideCanadaIvan Magalhaes NEW
Claire TollnerCanadaIvan Magalhaes PROPOSAL
Julie StensethAustraliaStephen Shaw NEGOTIATION
Alejandro PerinArgentinaIvan Magalhaes RENEWAL
Costa DilliardIndiaAnna Fali UNQUALIFIED
Adams MorascaItalyElwin Sharvill NEGOTIATION
Wickens NestleBrazilAnna Fali RENEWAL
Mujtaba NickaIndiaOnyama Limba QUALIFIED
Octavia MaletArgentinaXuxue Feng PROPOSAL
Morrow RutaIndiaAmy Elsner QUALIFIED
Adams MorascaAustraliaBernardo Dominic RENEWAL
Aditya KuskoRussiaAnna Fali NEW
Mujtaba NickaIndiaIvan Magalhaes NEW
Julie StensethJapanIoni Bowcher PROPOSAL
Maria MarrierFranceAnna Fali RENEWAL
Julie StensethArgentinaStephen Shaw NEW
Jennifer AmigonFranceAnna Fali NEGOTIATION
Mayumi KolmetzCanadaOnyama Limba QUALIFIED
Leja CaldareraAustraliaXuxue Feng QUALIFIED
Aika InouyeIndiaStephen Shaw RENEWAL
Cody SaylorsCanadaAmy Elsner NEGOTIATION
Darci PoquetteRussiaAsiya Javayant NEW
Chavez BriddickRussiaIvan Magalhaes UNQUALIFIED
Costa DilliardUnited KingdomIvan Magalhaes PROPOSAL
Munro FerenczBrazilXuxue Feng PROPOSAL
David DarakjyIndiaIvan Magalhaes UNQUALIFIED
Jennifer AmigonGermanyStephen Shaw UNQUALIFIED
Jeanfrancois VenereCanadaBernardo Dominic RENEWAL
Emily WhobreyBrazilIoni Bowcher PROPOSAL
Mayumi KolmetzIndiaOnyama Limba RENEWAL
Tony FollerJapanStephen Shaw NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Mayumi KolmetzBrazilAnna Fali NEW
Julie StensethArgentinaStephen Shaw UNQUALIFIED
Morrow RutaJapanAmy Elsner NEGOTIATION
Costa DilliardCanadaAsiya Javayant UNQUALIFIED
Arvin AlbaresItalyAsiya Javayant PROPOSAL
Isabel BowleySpainXuxue Feng UNQUALIFIED
Tony FollerItalyXuxue Feng RENEWAL
Alejandro PerinCanadaIvan Magalhaes NEW
Rodrigues CampainCanadaElwin Sharvill NEGOTIATION
Costa DilliardItalyAnna Fali PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Chavez BriddickAustralia2026-05-23Feiner Bros PROPOSAL3Anna Fali
1001Smith GlickCanada2026-05-26Benton, John B Jr RENEWAL7Stephen Shaw
1002Rodrigues CampainItaly2026-05-30Morlong Associates QUALIFIED17Xuxue Feng
1003Mujtaba NickaUnited Kingdom2026-05-26Commercial Press QUALIFIED35Asiya Javayant
1004Emily WhobreyUnited Kingdom2026-06-01Feiner Bros NEW77Ivan Magalhaes
1005Alejandro PerinJapan2026-05-08Chapman, Ross E Esq PROPOSAL20Stephen Shaw
1006Aika InouyeJapan2026-05-23Feiner Bros NEW64Ivan Magalhaes
1007Octavia MaletJapan2026-05-31Rousseaux, Michael Esq RENEWAL45Ivan Magalhaes
1008Sinclair WaycottUnited Kingdom2026-05-08Chapman, Ross E Esq NEW61Onyama Limba
1009Ricardo GauchoArgentina2026-05-28Chemel, James L Cpa QUALIFIED11Onyama Limba
1010Kadeem FlosiArgentina2026-05-06Printing Dimensions UNQUALIFIED45Stephen Shaw
1011Darci PoquetteItaly2026-05-14Dorl, James J Esq PROPOSAL37Onyama Limba
1012Adams MorascaBrazil2026-05-28Chanay, Jeffrey A Esq NEGOTIATION63Bernardo Dominic
1013Arvin AlbaresCanada2026-05-24Commercial Press PROPOSAL89Elwin Sharvill
1014Greenwood BologniaBrazil2026-05-24Chemel, James L Cpa PROPOSAL95Bernardo Dominic
1015Clifford RimGermany2026-05-25Rangoni Of Florence NEW83Bernardo Dominic
1016Izzy GarufiUnited Kingdom2026-05-20Feltz Printing Service NEW38Onyama Limba
1017Stacey MacleadJapan2026-05-06Dorl, James J Esq QUALIFIED57Bernardo Dominic
1018Jennifer AmigonArgentina2026-05-27Rangoni Of Florence PROPOSAL38Ivan Magalhaes
1019Deepesh ChuiGermany2026-05-19Feltz Printing Service NEGOTIATION90Asiya Javayant
1020Emily WhobreyCanada2026-05-23Chanay, Jeffrey A Esq RENEWAL60Elwin Sharvill
1021Ricardo GauchoSpain2026-05-25Rangoni Of Florence NEW44Ivan Magalhaes
1022Stacey MacleadFrance2026-06-01Rousseaux, Michael Esq QUALIFIED39Ioni Bowcher
1023Clifford RimArgentina2026-05-31Truhlar And Truhlar Attys NEGOTIATION52Xuxue Feng
1024Isabel BowleyJapan2026-05-12Benton, John B Jr NEW44Amy Elsner
1025Smith GlickArgentina2026-05-24Commercial Press RENEWAL64Amy Elsner
1026Smith GlickJapan2026-05-18Feltz Printing Service QUALIFIED47Ioni Bowcher
1027Kaitlin OstroskyRussia2026-05-30Chanay, Jeffrey A Esq PROPOSAL37Anna Fali
1028Kaitlin OstroskyArgentina2026-05-25Feltz Printing Service PROPOSAL68Bernardo Dominic
1029Darci PoquetteBrazil2026-05-17Morlong Associates NEGOTIATION79Ivan Magalhaes
1030Leon OldroydAustralia2026-05-06Feiner Bros RENEWAL76Elwin Sharvill
1031Aruna FigeroaUnited Kingdom2026-05-21Chanay, Jeffrey A Esq NEW12Onyama Limba
1032Jefferson SchemmerIndia2026-05-17Rangoni Of Florence RENEWAL50Amy Elsner
1033Greenwood BologniaArgentina2026-05-27Rangoni Of Florence RENEWAL59Ioni Bowcher
1034Antonio CaudyArgentina2026-05-03Feiner Bros UNQUALIFIED53Bernardo Dominic
1035Deepesh ChuiBrazil2026-05-10Chapman, Ross E Esq PROPOSAL78Ivan Magalhaes
1036Ricardo GauchoFrance2026-05-13Rousseaux, Michael Esq NEGOTIATION71Ioni Bowcher
1037Aditya KuskoGermany2026-05-19Morlong Associates RENEWAL68Asiya Javayant
1038Claire TollnerRussia2026-05-20Benton, John B Jr NEGOTIATION0Amy Elsner
1039Kadeem FlosiSpain2026-05-08Commercial Press UNQUALIFIED76Xuxue Feng
1040Costa DilliardFrance2026-05-12Feiner Bros PROPOSAL40Asiya Javayant
1041Juan WieserRussia2026-05-17Feltz Printing Service NEGOTIATION62Anna Fali
1042Salvatore StockhamAustralia2026-05-18Chapman, Ross E Esq UNQUALIFIED42Stephen Shaw
1043Salvatore StockhamSpain2026-05-21Chemel, James L Cpa PROPOSAL94Anna Fali
1044Antonio CaudyRussia2026-05-29Feiner Bros RENEWAL72Elwin Sharvill
1045Alejandro PerinGermany2026-05-17Buckley Miller Wright QUALIFIED97Elwin Sharvill
1046Munro FerenczBrazil2026-05-15King, Christopher A Esq NEW58Onyama Limba
1047James ButtCanada2026-05-05Feltz Printing Service QUALIFIED77Amy Elsner
1048Faith GillianUnited Kingdom2026-05-10Feltz Printing Service NEGOTIATION27Elwin Sharvill
1049Juan WieserItaly2026-05-28Morlong Associates PROPOSAL11Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Juan WieserItalyAnna Fali NEW
Leja CaldareraUnited KingdomStephen Shaw UNQUALIFIED
Johnson SergiCanadaIvan Magalhaes RENEWAL
Rodrigues CampainGermanyElwin Sharvill QUALIFIED
Sinclair WaycottArgentinaIvan Magalhaes NEW
Johnson SergiCanadaAmy Elsner UNQUALIFIED
Clifford RimFranceElwin Sharvill PROPOSAL
Salvatore StockhamCanadaStephen Shaw NEW
Johnson SergiBrazilOnyama Limba NEGOTIATION
Aika InouyeAustraliaElwin Sharvill NEGOTIATION
Claire TollnerItalyElwin Sharvill NEGOTIATION
Leja CaldareraGermanyAmy Elsner UNQUALIFIED
James ButtCanadaAsiya Javayant NEW
Ricardo GauchoAustraliaXuxue Feng PROPOSAL
Greenwood BologniaAustraliaAsiya Javayant NEGOTIATION
Darci PoquetteItalyIvan Magalhaes NEW
Isabel BowleyGermanyXuxue Feng NEGOTIATION
Jeanfrancois VenereIndiaOnyama Limba UNQUALIFIED
Cody SaylorsItalyXuxue Feng NEGOTIATION
Francesco ShinkoGermanyElwin Sharvill UNQUALIFIED
Leon OldroydIndiaOnyama Limba NEW
Sinclair WaycottSpainAmy Elsner UNQUALIFIED
Tony FollerSpainIvan Magalhaes NEW
Jefferson SchemmerJapanXuxue Feng PROPOSAL
Claire TollnerFranceXuxue Feng NEGOTIATION
Rodrigues CampainRussiaElwin Sharvill UNQUALIFIED
Isabel BowleySpainXuxue Feng UNQUALIFIED
Leon OldroydFranceAsiya Javayant PROPOSAL
Jefferson SchemmerSpainElwin Sharvill UNQUALIFIED
Izzy GarufiRussiaOnyama Limba UNQUALIFIED
Morrow RutaJapanElwin Sharvill RENEWAL
Julie StensethBrazilElwin Sharvill QUALIFIED
Maisha RulapaughItalyAnna Fali NEW
Faith GillianBrazilIoni Bowcher NEW
Sinclair WaycottJapanElwin Sharvill NEW
Octavia MaletGermanyIvan Magalhaes RENEWAL
Claire TollnerBrazilAsiya Javayant RENEWAL
Aika InouyeFranceAmy Elsner NEGOTIATION
Izzy GarufiJapanAmy Elsner PROPOSAL
James ButtRussiaXuxue Feng NEW
Octavia MaletJapanAmy Elsner PROPOSAL
Jennifer AmigonFranceAmy Elsner NEW
Alejandro PerinBrazilElwin Sharvill UNQUALIFIED
Juan WieserBrazilIvan Magalhaes UNQUALIFIED
Morrow RutaAustraliaIvan Magalhaes NEGOTIATION
Kadeem FlosiGermanyXuxue Feng NEW
Tony FollerRussiaIoni Bowcher NEW
Tony FollerJapanOnyama Limba QUALIFIED
Rodrigues CampainJapanAsiya Javayant RENEWAL
Ivar PaprockiRussiaAmy Elsner RENEWAL
Frozen Columns
Name
Aruna Figeroa
David Darakjy
Izzy Garufi
Cody Saylors
Ricardo Gaucho
Jeanfrancois Venere
Stacey Maclead
Kadeem Flosi
Antonio Caudy
Isabel Bowley
Ivar Paprocki
Mayumi Kolmetz
Maisha Rulapaugh
Mujtaba Nicka
Salvatore Stockham
Clifford Rim
Nicolas Iturbide
Deepesh Chui
Juan Wieser
Claire Tollner
Ricardo Gaucho
Silvio Slusarski
Aika Inouye
Morrow Ruta
Kadeem Flosi
Tony Foller
Kaitlin Ostrosky
Silvio Slusarski
Jones Vocelka
Arvin Albares
Tony Foller
Mujtaba Nicka
Jennifer Amigon
Ivar Paprocki
Leon Oldroyd
Octavia Malet
Arvin Albares
Jones Vocelka
Kadeem Flosi
Jones Vocelka
Octavia Malet
Salvatore Stockham
Deepesh Chui
Francesco Shinko
Francesco Shinko
Aditya Kusko
Salvatore Stockham
Arvin Albares
Murillo Malet
Aika Inouye
IdCountryDate
1000India2026-05-17
1001Germany2026-05-26
1002Germany2026-05-13
1003India2026-05-11
1004Spain2026-05-26
1005Argentina2026-06-01
1006Russia2026-05-03
1007United Kingdom2026-05-30
1008Australia2026-05-10
1009Brazil2026-05-23
1010Russia2026-05-07
1011Australia2026-05-09
1012Spain2026-05-05
1013United Kingdom2026-05-06
1014Japan2026-05-03
1015India2026-05-18
1016Australia2026-05-09
1017Australia2026-05-23
1018France2026-05-22
1019India2026-05-08
1020United Kingdom2026-06-01
1021Argentina2026-05-07
1022Germany2026-05-06
1023France2026-05-10
1024Spain2026-05-15
1025Germany2026-05-06
1026Brazil2026-05-29
1027France2026-05-22
1028Germany2026-05-13
1029India2026-05-26
1030Italy2026-05-07
1031Australia2026-05-27
1032Russia2026-05-13
1033France2026-05-21
1034Brazil2026-05-17
1035Australia2026-05-06
1036India2026-05-20
1037France2026-05-16
1038United Kingdom2026-05-18
1039United Kingdom2026-05-18
1040Spain2026-05-30
1041Canada2026-05-29
1042Argentina2026-05-18
1043France2026-05-28
1044Japan2026-05-13
1045Germany2026-05-08
1046Italy2026-05-26
1047Argentina2026-05-03
1048France2026-05-07
1049Japan2026-05-11

On-Demand Data

NameIdCountryDate
Maisha Rulapaugh1000Canada2026-05-31
Nicolas Iturbide1001Italy2026-05-14
Nicolas Iturbide1002Italy2026-05-08
Leja Caldarera1003Japan2026-05-15
Clifford Rim1004Russia2026-05-22
Maisha Rulapaugh1005Russia2026-05-08
Munro Ferencz1006Italy2026-05-31
Ricardo Gaucho1007Germany2026-05-18
Leon Oldroyd1008Canada2026-05-09
Claire Tollner1009Brazil2026-05-12
Ricardo Gaucho1010Brazil2026-05-29
Murillo Malet1011Spain2026-05-21
Izzy Garufi1012Argentina2026-05-31
Octavia Malet1013Brazil2026-05-21
Mayumi Kolmetz1014India2026-05-15
Greenwood Bolognia1015Germany2026-05-05
Cody Saylors1016Italy2026-06-01
Antonio Caudy1017Brazil2026-05-27
Antonio Caudy1018Spain2026-05-15
Izzy Garufi1019Germany2026-05-17
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jones VocelkaUnited KingdomIvan Magalhaes RENEWAL
Darci PoquetteAustraliaStephen Shaw PROPOSAL
Silvio SlusarskiGermanyOnyama Limba NEGOTIATION
Arvin AlbaresSpainOnyama Limba UNQUALIFIED
Isabel BowleySpainAnna Fali NEW
Johnson SergiGermanyXuxue Feng PROPOSAL
Cody SaylorsUnited KingdomOnyama Limba PROPOSAL
Emily WhobreySpainStephen Shaw PROPOSAL
Claire TollnerGermanyIvan Magalhaes NEGOTIATION
Juan WieserSpainAnna Fali QUALIFIED
Costa DilliardRussiaIoni Bowcher PROPOSAL
Adams MorascaSpainAmy Elsner RENEWAL
Alejandro PerinJapanIvan Magalhaes NEGOTIATION
Julie StensethFranceAsiya Javayant NEGOTIATION
Morrow RutaSpainAsiya Javayant NEW
Misaki RoysterJapanAnna Fali NEGOTIATION
Faith GillianCanadaBernardo Dominic NEW
Octavia MaletAustraliaAmy Elsner NEW
Ivar PaprockiGermanyIoni Bowcher NEGOTIATION
Jennifer AmigonArgentinaElwin Sharvill NEW
Kaitlin OstroskyGermanyAsiya Javayant QUALIFIED
Greenwood BologniaArgentinaXuxue Feng NEW
Wickens NestleSpainAsiya Javayant UNQUALIFIED
Faith GillianSpainXuxue Feng UNQUALIFIED
Mayumi KolmetzIndiaAsiya Javayant PROPOSAL
Alejandro PerinSpainBernardo Dominic RENEWAL
Antonio CaudyItalyAmy Elsner RENEWAL
Antonio CaudyItalyAmy Elsner NEW
Jefferson SchemmerUnited KingdomElwin Sharvill NEW
Ricardo GauchoRussiaAnna Fali UNQUALIFIED
Munro FerenczCanadaElwin Sharvill NEW
David DarakjyRussiaAmy Elsner NEGOTIATION
Cody SaylorsGermanyAmy Elsner UNQUALIFIED
Aika InouyeUnited KingdomXuxue Feng UNQUALIFIED
James ButtGermanyXuxue Feng NEGOTIATION
Greenwood BologniaCanadaIvan Magalhaes UNQUALIFIED
Claire TollnerRussiaIoni Bowcher QUALIFIED
Isabel BowleyCanadaAmy Elsner PROPOSAL
Jeanfrancois VenereGermanyXuxue Feng PROPOSAL
Leon OldroydItalyAnna Fali NEGOTIATION

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