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
James ButtRussiaAmy Elsner UNQUALIFIED
Kadeem FlosiSpainAnna Fali RENEWAL
Mujtaba NickaItalyBernardo Dominic NEW
Ashley DoeJapanAmy Elsner QUALIFIED
Aika InouyeBrazilElwin Sharvill NEGOTIATION
Isabel BowleyJapanOnyama Limba RENEWAL
Costa DilliardFranceXuxue Feng RENEWAL
Adams MorascaIndiaIoni Bowcher RENEWAL
Johnson SergiIndiaBernardo Dominic QUALIFIED
Alejandro PerinGermanyAmy Elsner RENEWAL
Aika InouyeIndiaAsiya Javayant NEGOTIATION
Aika InouyeUnited KingdomAsiya Javayant NEW
Ivar PaprockiArgentinaAsiya Javayant RENEWAL
Mayumi KolmetzIndiaXuxue Feng NEGOTIATION
Julie StensethItalyOnyama Limba PROPOSAL
Adams MorascaAustraliaBernardo Dominic QUALIFIED
Arvin AlbaresBrazilAnna Fali NEGOTIATION
Stacey MacleadFranceAsiya Javayant NEW
Adams MorascaIndiaXuxue Feng NEW
Ivar PaprockiJapanXuxue Feng QUALIFIED
Nicolas IturbideFranceIvan Magalhaes NEW
Adams MorascaUnited KingdomStephen Shaw NEW
Juan WieserFranceElwin Sharvill NEGOTIATION
Isabel BowleyUnited KingdomIoni Bowcher RENEWAL
Morrow RutaItalyStephen Shaw UNQUALIFIED
James ButtFranceStephen Shaw PROPOSAL
Rodrigues CampainAustraliaBernardo Dominic RENEWAL
Maria MarrierArgentinaBernardo Dominic QUALIFIED
James ButtFranceAmy Elsner NEGOTIATION
Mayumi KolmetzFranceAnna Fali NEGOTIATION
Smith GlickBrazilAsiya Javayant NEW
James ButtArgentinaStephen Shaw PROPOSAL
Kaitlin OstroskyAustraliaOnyama Limba NEGOTIATION
Deepesh ChuiSpainXuxue Feng QUALIFIED
Mujtaba NickaSpainStephen Shaw UNQUALIFIED
Munro FerenczBrazilXuxue Feng UNQUALIFIED
Alejandro PerinIndiaIoni Bowcher RENEWAL
Leon OldroydBrazilOnyama Limba NEGOTIATION
Kaitlin OstroskySpainIoni Bowcher NEW
Kaitlin OstroskyGermanyAnna Fali NEGOTIATION
Aditya KuskoSpainOnyama Limba NEW
Sinclair WaycottAustraliaStephen Shaw QUALIFIED
Jefferson SchemmerGermanyIvan Magalhaes QUALIFIED
Tony FollerUnited KingdomAsiya Javayant NEGOTIATION
Leja CaldareraRussiaIvan Magalhaes NEW
Leon OldroydJapanStephen Shaw QUALIFIED
David DarakjyCanadaXuxue Feng NEW
Rodrigues CampainJapanAsiya Javayant NEGOTIATION
Sinclair WaycottUnited KingdomAnna Fali RENEWAL
Aditya KuskoSpainIvan Magalhaes QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Kadeem FlosiBrazilAmy Elsner QUALIFIED
Jones VocelkaAustraliaAmy Elsner PROPOSAL
Mujtaba NickaArgentinaXuxue Feng NEW
Faith GillianRussiaElwin Sharvill RENEWAL
Munro FerenczGermanyXuxue Feng NEGOTIATION
Clifford RimAustraliaOnyama Limba PROPOSAL
Sinclair WaycottItalyOnyama Limba NEW
Murillo MaletIndiaElwin Sharvill NEGOTIATION
Jeanfrancois VenereCanadaAnna Fali PROPOSAL
Kaitlin OstroskyGermanyElwin Sharvill RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Tony FollerAustralia2026-05-13Feltz Printing Service PROPOSAL33Xuxue Feng
1001Mayumi KolmetzCanada2026-05-05Buckley Miller Wright RENEWAL14Onyama Limba
1002Munro FerenczJapan2026-05-08Commercial Press QUALIFIED37Ioni Bowcher
1003Mujtaba NickaAustralia2026-05-14Rangoni Of Florence UNQUALIFIED87Elwin Sharvill
1004James ButtCanada2026-05-02Chanay, Jeffrey A Esq RENEWAL6Onyama Limba
1005Silvio SlusarskiAustralia2026-05-08Truhlar And Truhlar Attys NEGOTIATION55Asiya Javayant
1006Cody SaylorsRussia2026-05-15King, Christopher A Esq NEW38Bernardo Dominic
1007Johnson SergiItaly2026-04-16Dorl, James J Esq NEGOTIATION46Elwin Sharvill
1008Izzy GarufiRussia2026-04-28Rousseaux, Michael Esq UNQUALIFIED70Asiya Javayant
1009Octavia MaletRussia2026-04-27Morlong Associates NEGOTIATION61Stephen Shaw
1010Sinclair WaycottSpain2026-05-10Feiner Bros QUALIFIED72Stephen Shaw
1011Darci PoquetteIndia2026-04-21Chanay, Jeffrey A Esq RENEWAL2Ioni Bowcher
1012Antonio CaudyItaly2026-04-19Benton, John B Jr NEGOTIATION45Ioni Bowcher
1013Juan WieserIndia2026-05-07Feiner Bros NEGOTIATION99Anna Fali
1014Jeanfrancois VenereRussia2026-05-15Feltz Printing Service RENEWAL2Ioni Bowcher
1015Ashley DoeAustralia2026-04-19King, Christopher A Esq RENEWAL55Asiya Javayant
1016Ivar PaprockiIndia2026-04-23Printing Dimensions PROPOSAL71Ioni Bowcher
1017Tony FollerSpain2026-05-11Chemel, James L Cpa PROPOSAL67Asiya Javayant
1018Deepesh ChuiArgentina2026-05-08Rangoni Of Florence UNQUALIFIED29Bernardo Dominic
1019Leja CaldareraAustralia2026-05-14Chanay, Jeffrey A Esq RENEWAL92Ivan Magalhaes
1020Antonio CaudyItaly2026-05-07Chemel, James L Cpa NEGOTIATION75Stephen Shaw
1021Greenwood BologniaIndia2026-05-15Dorl, James J Esq NEW90Xuxue Feng
1022Antonio CaudyIndia2026-04-17Chemel, James L Cpa QUALIFIED16Ivan Magalhaes
1023Julie StensethJapan2026-05-03Feiner Bros QUALIFIED21Stephen Shaw
1024Ricardo GauchoGermany2026-04-22Chapman, Ross E Esq QUALIFIED10Amy Elsner
1025Izzy GarufiFrance2026-04-28Truhlar And Truhlar Attys PROPOSAL74Elwin Sharvill
1026Costa DilliardBrazil2026-04-18Buckley Miller Wright UNQUALIFIED46Stephen Shaw
1027Chavez BriddickArgentina2026-04-18Chapman, Ross E Esq UNQUALIFIED25Asiya Javayant
1028David DarakjyFrance2026-04-20Rousseaux, Michael Esq PROPOSAL21Onyama Limba
1029Arvin AlbaresItaly2026-04-20Buckley Miller Wright QUALIFIED5Onyama Limba
1030Claire TollnerGermany2026-04-22Buckley Miller Wright RENEWAL48Ivan Magalhaes
1031Leon OldroydJapan2026-05-02Commercial Press NEGOTIATION91Ivan Magalhaes
1032Jeanfrancois VenereBrazil2026-04-17Benton, John B Jr PROPOSAL6Ioni Bowcher
1033Aruna FigeroaIndia2026-04-21Feltz Printing Service UNQUALIFIED93Xuxue Feng
1034Aruna FigeroaAustralia2026-04-30King, Christopher A Esq PROPOSAL63Ivan Magalhaes
1035Mayumi KolmetzIndia2026-04-24Printing Dimensions NEGOTIATION3Anna Fali
1036Leon OldroydUnited Kingdom2026-04-16King, Christopher A Esq UNQUALIFIED54Stephen Shaw
1037Ashley DoeSpain2026-05-10Printing Dimensions PROPOSAL9Ivan Magalhaes
1038Antonio CaudyIndia2026-04-24Truhlar And Truhlar Attys UNQUALIFIED75Asiya Javayant
1039Ivar PaprockiCanada2026-04-29Morlong Associates NEGOTIATION71Anna Fali
1040Octavia MaletGermany2026-04-28Chemel, James L Cpa NEGOTIATION35Elwin Sharvill
1041Ricardo GauchoRussia2026-05-11Chapman, Ross E Esq UNQUALIFIED7Amy Elsner
1042Jefferson SchemmerSpain2026-04-19Chemel, James L Cpa QUALIFIED15Stephen Shaw
1043Jones VocelkaRussia2026-05-04Printing Dimensions NEW69Amy Elsner
1044Aditya KuskoGermany2026-04-29Feltz Printing Service QUALIFIED41Bernardo Dominic
1045Faith GillianAustralia2026-05-07Rangoni Of Florence RENEWAL49Xuxue Feng
1046Mujtaba NickaSpain2026-04-16Chapman, Ross E Esq NEW39Bernardo Dominic
1047Aruna FigeroaArgentina2026-04-21Truhlar And Truhlar Attys NEGOTIATION13Asiya Javayant
1048Juan WieserArgentina2026-04-21Commercial Press RENEWAL49Asiya Javayant
1049Julie StensethBrazil2026-04-29Feiner Bros NEW24Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Ivar PaprockiGermanyAnna Fali NEW
Faith GillianRussiaElwin Sharvill PROPOSAL
Kaitlin OstroskyJapanIoni Bowcher NEW
Clifford RimCanadaStephen Shaw UNQUALIFIED
Faith GillianItalyBernardo Dominic UNQUALIFIED
Sinclair WaycottIndiaXuxue Feng UNQUALIFIED
Arvin AlbaresArgentinaAmy Elsner PROPOSAL
Maisha RulapaughAustraliaAmy Elsner NEGOTIATION
Leon OldroydCanadaElwin Sharvill RENEWAL
Kaitlin OstroskySpainXuxue Feng RENEWAL
Leon OldroydUnited KingdomAsiya Javayant RENEWAL
Maria MarrierFranceAnna Fali RENEWAL
Leon OldroydIndiaAsiya Javayant NEW
Aruna FigeroaGermanyOnyama Limba PROPOSAL
Murillo MaletUnited KingdomIoni Bowcher QUALIFIED
Sinclair WaycottUnited KingdomAsiya Javayant RENEWAL
Ashley DoeAustraliaIvan Magalhaes NEW
Izzy GarufiAustraliaElwin Sharvill NEGOTIATION
Misaki RoysterGermanyXuxue Feng QUALIFIED
Jennifer AmigonBrazilAnna Fali NEGOTIATION
Leja CaldareraIndiaStephen Shaw PROPOSAL
Maisha RulapaughBrazilBernardo Dominic NEGOTIATION
Aika InouyeUnited KingdomAnna Fali UNQUALIFIED
Maria MarrierItalyOnyama Limba RENEWAL
Deepesh ChuiAustraliaIoni Bowcher QUALIFIED
Francesco ShinkoJapanAsiya Javayant NEW
Nicolas IturbideArgentinaBernardo Dominic RENEWAL
Octavia MaletGermanyAsiya Javayant UNQUALIFIED
Leja CaldareraUnited KingdomBernardo Dominic RENEWAL
Cody SaylorsFranceXuxue Feng RENEWAL
Munro FerenczCanadaAnna Fali PROPOSAL
Leja CaldareraArgentinaIvan Magalhaes PROPOSAL
James ButtIndiaIoni Bowcher NEW
Mayumi KolmetzSpainIoni Bowcher RENEWAL
Murillo MaletSpainAnna Fali NEW
Izzy GarufiFranceAsiya Javayant NEW
Ashley DoeIndiaBernardo Dominic RENEWAL
Darci PoquetteJapanOnyama Limba RENEWAL
Silvio SlusarskiIndiaStephen Shaw NEGOTIATION
Claire TollnerIndiaAmy Elsner NEW
Isabel BowleyIndiaBernardo Dominic UNQUALIFIED
Maisha RulapaughArgentinaStephen Shaw NEGOTIATION
Jennifer AmigonGermanyAnna Fali NEW
Deepesh ChuiGermanyBernardo Dominic QUALIFIED
Emily WhobreyJapanIoni Bowcher NEGOTIATION
Maisha RulapaughArgentinaIvan Magalhaes PROPOSAL
David DarakjyAustraliaOnyama Limba PROPOSAL
Emily WhobreyFranceElwin Sharvill QUALIFIED
Clifford RimJapanOnyama Limba NEGOTIATION
Murillo MaletSpainIvan Magalhaes NEGOTIATION
Frozen Columns
Name
Aditya Kusko
Deepesh Chui
Darci Poquette
Rodrigues Campain
Adams Morasca
Kadeem Flosi
Jeanfrancois Venere
Jefferson Schemmer
Adams Morasca
Jones Vocelka
Nicolas Iturbide
Misaki Royster
Rodrigues Campain
Misaki Royster
Misaki Royster
Mayumi Kolmetz
Julie Stenseth
Johnson Sergi
Izzy Garufi
David Darakjy
Cody Saylors
Adams Morasca
Adams Morasca
Alejandro Perin
Juan Wieser
Kaitlin Ostrosky
Francesco Shinko
Chavez Briddick
Murillo Malet
Silvio Slusarski
Cody Saylors
Julie Stenseth
Adams Morasca
Rodrigues Campain
Jeanfrancois Venere
Cody Saylors
Sinclair Waycott
Clifford Rim
Morrow Ruta
Stacey Maclead
Aruna Figeroa
Mujtaba Nicka
Darci Poquette
Smith Glick
Murillo Malet
Kadeem Flosi
Antonio Caudy
Wickens Nestle
Juan Wieser
Jeanfrancois Venere
IdCountryDate
1000India2026-04-24
1001France2026-04-22
1002Spain2026-05-14
1003Russia2026-04-21
1004Canada2026-04-27
1005Australia2026-04-19
1006Japan2026-05-12
1007United Kingdom2026-05-15
1008Japan2026-04-20
1009Spain2026-04-24
1010Argentina2026-05-01
1011Argentina2026-05-05
1012Germany2026-05-01
1013Italy2026-04-17
1014Russia2026-05-08
1015United Kingdom2026-05-11
1016Italy2026-05-13
1017Russia2026-04-25
1018Canada2026-04-18
1019Argentina2026-04-29
1020Brazil2026-05-13
1021Argentina2026-04-19
1022India2026-04-27
1023United Kingdom2026-05-13
1024India2026-04-26
1025Brazil2026-05-11
1026Japan2026-04-24
1027France2026-04-27
1028Spain2026-04-21
1029Spain2026-05-08
1030India2026-04-24
1031Germany2026-04-20
1032Germany2026-05-02
1033Spain2026-05-15
1034France2026-05-03
1035Spain2026-04-28
1036Australia2026-04-29
1037Italy2026-04-26
1038Spain2026-05-06
1039India2026-05-09
1040France2026-04-19
1041Spain2026-05-09
1042India2026-05-01
1043France2026-04-16
1044Australia2026-05-14
1045Italy2026-05-02
1046France2026-05-09
1047Canada2026-05-04
1048Australia2026-04-21
1049Spain2026-05-13

On-Demand Data

NameIdCountryDate
Leon Oldroyd1000Russia2026-05-05
Ivar Paprocki1001Russia2026-05-05
Jones Vocelka1002Italy2026-04-20
Claire Tollner1003Japan2026-05-14
Francesco Shinko1004Russia2026-05-08
Clifford Rim1005Argentina2026-05-12
Izzy Garufi1006India2026-05-07
Jones Vocelka1007Italy2026-05-02
Octavia Malet1008Spain2026-04-27
Leja Caldarera1009Japan2026-05-09
Costa Dilliard1010Canada2026-05-03
Chavez Briddick1011Australia2026-04-25
Francesco Shinko1012Argentina2026-04-21
Sinclair Waycott1013Spain2026-05-06
Salvatore Stockham1014India2026-05-10
Jones Vocelka1015Russia2026-04-17
James Butt1016United Kingdom2026-05-10
Octavia Malet1017Japan2026-05-07
Silvio Slusarski1018India2026-04-24
David Darakjy1019United Kingdom2026-05-02
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Francesco ShinkoRussiaIoni Bowcher UNQUALIFIED
Salvatore StockhamGermanyIoni Bowcher UNQUALIFIED
Jones VocelkaBrazilAsiya Javayant UNQUALIFIED
Jeanfrancois VenereRussiaOnyama Limba PROPOSAL
Adams MorascaBrazilBernardo Dominic RENEWAL
Aruna FigeroaBrazilXuxue Feng RENEWAL
Mujtaba NickaItalyXuxue Feng NEW
Ashley DoeIndiaIoni Bowcher QUALIFIED
Adams MorascaSpainAmy Elsner NEW
Alejandro PerinCanadaOnyama Limba NEGOTIATION
Leon OldroydItalyXuxue Feng NEW
Aditya KuskoCanadaBernardo Dominic PROPOSAL
Ricardo GauchoArgentinaIoni Bowcher PROPOSAL
Jones VocelkaCanadaOnyama Limba PROPOSAL
Sinclair WaycottGermanyIvan Magalhaes NEGOTIATION
Emily WhobreyAustraliaStephen Shaw NEW
Smith GlickIndiaAsiya Javayant PROPOSAL
Jefferson SchemmerArgentinaXuxue Feng PROPOSAL
Rodrigues CampainArgentinaOnyama Limba NEGOTIATION
Johnson SergiRussiaXuxue Feng UNQUALIFIED
Ricardo GauchoIndiaIvan Magalhaes PROPOSAL
David DarakjyCanadaElwin Sharvill NEGOTIATION
Isabel BowleyJapanIvan Magalhaes QUALIFIED
Jefferson SchemmerFranceIvan Magalhaes QUALIFIED
Cody SaylorsIndiaBernardo Dominic RENEWAL
Aditya KuskoFranceAsiya Javayant PROPOSAL
Smith GlickArgentinaElwin Sharvill PROPOSAL
Arvin AlbaresIndiaAsiya Javayant QUALIFIED
Octavia MaletGermanyOnyama Limba QUALIFIED
Murillo MaletArgentinaOnyama Limba NEGOTIATION
Salvatore StockhamFranceElwin Sharvill RENEWAL
Greenwood BologniaFranceIvan Magalhaes QUALIFIED
Stacey MacleadFranceIoni Bowcher RENEWAL
Adams MorascaRussiaXuxue Feng NEW
Munro FerenczItalyXuxue Feng QUALIFIED
Izzy GarufiGermanyBernardo Dominic NEGOTIATION
Octavia MaletCanadaOnyama Limba RENEWAL
Wickens NestleAustraliaOnyama Limba RENEWAL
Izzy GarufiBrazilBernardo Dominic UNQUALIFIED
Deepesh ChuiSpainIvan Magalhaes 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>