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
Maria MarrierBrazilBernardo Dominic NEGOTIATION
Mayumi KolmetzUnited KingdomAsiya Javayant NEW
Tony FollerItalyAnna Fali PROPOSAL
Emily WhobreyFranceOnyama Limba QUALIFIED
Deepesh ChuiArgentinaOnyama Limba PROPOSAL
Wickens NestleAustraliaAnna Fali RENEWAL
Jefferson SchemmerRussiaIvan Magalhaes RENEWAL
Izzy GarufiSpainIoni Bowcher PROPOSAL
Leja CaldareraFranceElwin Sharvill PROPOSAL
Murillo MaletBrazilBernardo Dominic NEGOTIATION
Leon OldroydJapanBernardo Dominic PROPOSAL
Nicolas IturbideRussiaIoni Bowcher RENEWAL
Silvio SlusarskiIndiaIoni Bowcher RENEWAL
Clifford RimSpainElwin Sharvill PROPOSAL
Izzy GarufiUnited KingdomAmy Elsner PROPOSAL
Jefferson SchemmerArgentinaXuxue Feng QUALIFIED
Juan WieserBrazilBernardo Dominic NEGOTIATION
Ricardo GauchoGermanyAnna Fali PROPOSAL
Jeanfrancois VenereGermanyXuxue Feng NEGOTIATION
Faith GillianArgentinaAnna Fali QUALIFIED
Ricardo GauchoRussiaIoni Bowcher UNQUALIFIED
Tony FollerUnited KingdomAmy Elsner NEGOTIATION
Maria MarrierArgentinaOnyama Limba QUALIFIED
Maria MarrierGermanyXuxue Feng RENEWAL
Francesco ShinkoArgentinaXuxue Feng NEW
Murillo MaletAustraliaIvan Magalhaes QUALIFIED
Alejandro PerinArgentinaIoni Bowcher PROPOSAL
Aika InouyeUnited KingdomIoni Bowcher NEGOTIATION
Stacey MacleadArgentinaElwin Sharvill RENEWAL
Tony FollerRussiaAmy Elsner NEW
Nicolas IturbideArgentinaXuxue Feng UNQUALIFIED
Maisha RulapaughRussiaIoni Bowcher RENEWAL
Deepesh ChuiSpainAsiya Javayant QUALIFIED
Octavia MaletBrazilIvan Magalhaes QUALIFIED
Murillo MaletIndiaAsiya Javayant PROPOSAL
Costa DilliardBrazilIvan Magalhaes PROPOSAL
Salvatore StockhamIndiaAnna Fali PROPOSAL
Deepesh ChuiArgentinaIoni Bowcher NEW
Rodrigues CampainRussiaOnyama Limba RENEWAL
Jefferson SchemmerItalyAnna Fali NEW
Clifford RimGermanyBernardo Dominic RENEWAL
Arvin AlbaresBrazilXuxue Feng UNQUALIFIED
Maria MarrierArgentinaOnyama Limba RENEWAL
Cody SaylorsBrazilAmy Elsner RENEWAL
Ashley DoeBrazilIoni Bowcher NEGOTIATION
Jeanfrancois VenereItalyBernardo Dominic UNQUALIFIED
Emily WhobreyAustraliaXuxue Feng UNQUALIFIED
Isabel BowleyItalyAmy Elsner NEGOTIATION
Stacey MacleadJapanIoni Bowcher NEW
Arvin AlbaresFranceElwin Sharvill RENEWAL
Horizontal
NameCountryRepresentativeStatus
Aruna FigeroaJapanAmy Elsner NEW
Morrow RutaBrazilIoni Bowcher PROPOSAL
Octavia MaletBrazilElwin Sharvill UNQUALIFIED
Darci PoquetteArgentinaElwin Sharvill RENEWAL
Morrow RutaRussiaOnyama Limba PROPOSAL
Ricardo GauchoCanadaAsiya Javayant NEGOTIATION
Julie StensethCanadaElwin Sharvill UNQUALIFIED
Kaitlin OstroskySpainXuxue Feng NEGOTIATION
Julie StensethGermanyAmy Elsner RENEWAL
Alejandro PerinArgentinaAnna Fali NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Darci PoquetteItaly2026-05-09King, Christopher A Esq NEW4Asiya Javayant
1001Ricardo GauchoArgentina2026-05-01Dorl, James J Esq QUALIFIED63Xuxue Feng
1002Octavia MaletArgentina2026-04-19Chemel, James L Cpa NEGOTIATION25Asiya Javayant
1003Rodrigues CampainGermany2026-04-26Buckley Miller Wright NEGOTIATION49Bernardo Dominic
1004Leja CaldareraCanada2026-04-22Chemel, James L Cpa UNQUALIFIED0Stephen Shaw
1005Wickens NestleBrazil2026-04-27Feltz Printing Service NEW17Xuxue Feng
1006Maisha RulapaughBrazil2026-04-15Rangoni Of Florence NEGOTIATION98Anna Fali
1007Munro FerenczCanada2026-04-25Benton, John B Jr PROPOSAL68Ivan Magalhaes
1008Ricardo GauchoIndia2026-04-20Commercial Press PROPOSAL6Ivan Magalhaes
1009Greenwood BologniaRussia2026-04-30Commercial Press PROPOSAL73Stephen Shaw
1010Mujtaba NickaFrance2026-05-08Dorl, James J Esq UNQUALIFIED31Asiya Javayant
1011Juan WieserFrance2026-04-29Dorl, James J Esq NEW19Ivan Magalhaes
1012Kadeem FlosiRussia2026-04-18Printing Dimensions NEW55Ioni Bowcher
1013David DarakjyUnited Kingdom2026-04-15Printing Dimensions QUALIFIED7Asiya Javayant
1014Julie StensethFrance2026-05-08Chemel, James L Cpa NEW37Anna Fali
1015Isabel BowleyUnited Kingdom2026-04-19Dorl, James J Esq QUALIFIED78Anna Fali
1016Aika InouyeSpain2026-04-19Buckley Miller Wright NEW88Ivan Magalhaes
1017Clifford RimUnited Kingdom2026-04-16Rangoni Of Florence PROPOSAL1Amy Elsner
1018Johnson SergiItaly2026-05-04Printing Dimensions PROPOSAL11Elwin Sharvill
1019Maisha RulapaughItaly2026-04-11Benton, John B Jr RENEWAL23Ivan Magalhaes
1020Kadeem FlosiCanada2026-04-26Benton, John B Jr NEW13Asiya Javayant
1021Faith GillianUnited Kingdom2026-05-03Commercial Press PROPOSAL92Stephen Shaw
1022Claire TollnerItaly2026-04-12Printing Dimensions NEGOTIATION34Onyama Limba
1023Faith GillianCanada2026-04-14Printing Dimensions PROPOSAL64Bernardo Dominic
1024Isabel BowleyAustralia2026-04-29Chanay, Jeffrey A Esq UNQUALIFIED37Amy Elsner
1025Leja CaldareraArgentina2026-04-28Chapman, Ross E Esq PROPOSAL72Ivan Magalhaes
1026Murillo MaletGermany2026-04-27Printing Dimensions PROPOSAL7Anna Fali
1027Kadeem FlosiItaly2026-05-05Feiner Bros UNQUALIFIED65Ioni Bowcher
1028Cody SaylorsIndia2026-04-27Printing Dimensions RENEWAL85Ioni Bowcher
1029Alejandro PerinFrance2026-04-13Rangoni Of Florence UNQUALIFIED12Amy Elsner
1030Silvio SlusarskiBrazil2026-05-03Feltz Printing Service PROPOSAL25Onyama Limba
1031Francesco ShinkoSpain2026-05-02Feiner Bros PROPOSAL33Xuxue Feng
1032Sinclair WaycottAustralia2026-05-07Buckley Miller Wright RENEWAL59Anna Fali
1033Kaitlin OstroskySpain2026-05-05Rangoni Of Florence NEW43Amy Elsner
1034Greenwood BologniaRussia2026-04-20Buckley Miller Wright QUALIFIED45Bernardo Dominic
1035Clifford RimUnited Kingdom2026-04-25Chanay, Jeffrey A Esq NEGOTIATION63Bernardo Dominic
1036David DarakjySpain2026-04-14Printing Dimensions UNQUALIFIED62Stephen Shaw
1037Leja CaldareraUnited Kingdom2026-05-09Morlong Associates NEGOTIATION58Bernardo Dominic
1038Aika InouyeItaly2026-05-06Buckley Miller Wright NEW38Elwin Sharvill
1039Wickens NestleRussia2026-04-25King, Christopher A Esq PROPOSAL82Amy Elsner
1040Emily WhobreyUnited Kingdom2026-04-17Rousseaux, Michael Esq UNQUALIFIED6Amy Elsner
1041Darci PoquetteCanada2026-04-25Benton, John B Jr UNQUALIFIED31Elwin Sharvill
1042Francesco ShinkoCanada2026-04-19Feiner Bros PROPOSAL85Amy Elsner
1043Leja CaldareraGermany2026-05-04Rousseaux, Michael Esq NEW82Onyama Limba
1044Misaki RoysterJapan2026-04-19Morlong Associates QUALIFIED86Ioni Bowcher
1045Rodrigues CampainSpain2026-05-07Commercial Press QUALIFIED12Ioni Bowcher
1046Kaitlin OstroskyRussia2026-04-20Benton, John B Jr RENEWAL22Anna Fali
1047Mujtaba NickaBrazil2026-04-23King, Christopher A Esq PROPOSAL16Asiya Javayant
1048Juan WieserAustralia2026-04-11Chanay, Jeffrey A Esq UNQUALIFIED19Amy Elsner
1049Octavia MaletFrance2026-04-29Rousseaux, Michael Esq NEW44Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Costa DilliardAustraliaElwin Sharvill PROPOSAL
Aruna FigeroaAustraliaStephen Shaw RENEWAL
Antonio CaudyItalyStephen Shaw NEGOTIATION
Nicolas IturbideBrazilAmy Elsner QUALIFIED
Juan WieserJapanOnyama Limba RENEWAL
Silvio SlusarskiAustraliaIvan Magalhaes NEGOTIATION
James ButtRussiaOnyama Limba NEW
David DarakjyBrazilIoni Bowcher RENEWAL
Morrow RutaAustraliaIoni Bowcher QUALIFIED
Octavia MaletSpainElwin Sharvill PROPOSAL
Cody SaylorsBrazilAmy Elsner NEGOTIATION
Kaitlin OstroskyRussiaAsiya Javayant UNQUALIFIED
Leja CaldareraUnited KingdomBernardo Dominic UNQUALIFIED
Sinclair WaycottArgentinaAsiya Javayant QUALIFIED
Aditya KuskoAustraliaAnna Fali NEGOTIATION
Julie StensethJapanOnyama Limba UNQUALIFIED
Ricardo GauchoUnited KingdomOnyama Limba QUALIFIED
Nicolas IturbideRussiaIoni Bowcher NEGOTIATION
Smith GlickIndiaStephen Shaw QUALIFIED
Costa DilliardAustraliaElwin Sharvill NEW
Smith GlickCanadaStephen Shaw NEW
Salvatore StockhamRussiaXuxue Feng NEGOTIATION
Aditya KuskoGermanyElwin Sharvill NEW
Stacey MacleadAustraliaElwin Sharvill NEGOTIATION
Smith GlickItalyOnyama Limba PROPOSAL
Francesco ShinkoSpainStephen Shaw PROPOSAL
Tony FollerBrazilAmy Elsner QUALIFIED
Jefferson SchemmerCanadaElwin Sharvill RENEWAL
Izzy GarufiSpainXuxue Feng PROPOSAL
Jennifer AmigonUnited KingdomAsiya Javayant PROPOSAL
Antonio CaudyIndiaIvan Magalhaes NEGOTIATION
Aika InouyeJapanIvan Magalhaes UNQUALIFIED
Claire TollnerCanadaAmy Elsner UNQUALIFIED
Alejandro PerinIndiaAnna Fali NEW
Alejandro PerinCanadaAnna Fali UNQUALIFIED
Claire TollnerUnited KingdomAmy Elsner NEGOTIATION
Deepesh ChuiBrazilAsiya Javayant PROPOSAL
Isabel BowleyJapanAmy Elsner NEW
Wickens NestleGermanyIvan Magalhaes QUALIFIED
Julie StensethGermanyIoni Bowcher QUALIFIED
Sinclair WaycottIndiaIoni Bowcher NEW
Deepesh ChuiUnited KingdomElwin Sharvill PROPOSAL
Alejandro PerinIndiaAmy Elsner QUALIFIED
Misaki RoysterGermanyBernardo Dominic NEGOTIATION
Jeanfrancois VenereFranceBernardo Dominic PROPOSAL
Smith GlickJapanAsiya Javayant NEGOTIATION
Cody SaylorsGermanyStephen Shaw UNQUALIFIED
Julie StensethIndiaStephen Shaw UNQUALIFIED
Claire TollnerBrazilIvan Magalhaes PROPOSAL
Tony FollerSpainStephen Shaw NEGOTIATION
Frozen Columns
Name
Izzy Garufi
Munro Ferencz
Sinclair Waycott
Leon Oldroyd
Silvio Slusarski
Faith Gillian
Julie Stenseth
Aika Inouye
Kaitlin Ostrosky
Tony Foller
Jones Vocelka
Faith Gillian
Jones Vocelka
Darci Poquette
Claire Tollner
Aditya Kusko
Costa Dilliard
Leja Caldarera
Mujtaba Nicka
Costa Dilliard
Costa Dilliard
Sinclair Waycott
Jeanfrancois Venere
Maisha Rulapaugh
Cody Saylors
Francesco Shinko
Tony Foller
Arvin Albares
Faith Gillian
Juan Wieser
Emily Whobrey
Octavia Malet
Murillo Malet
Silvio Slusarski
Leja Caldarera
Stacey Maclead
Ashley Doe
Cody Saylors
Deepesh Chui
Emily Whobrey
Aika Inouye
Mujtaba Nicka
Leja Caldarera
Salvatore Stockham
Silvio Slusarski
Tony Foller
Stacey Maclead
Misaki Royster
Johnson Sergi
Aruna Figeroa
IdCountryDate
1000Italy2026-04-30
1001Australia2026-04-16
1002Canada2026-05-07
1003Argentina2026-04-29
1004France2026-05-09
1005Canada2026-05-07
1006France2026-04-20
1007Australia2026-04-23
1008Spain2026-04-27
1009Japan2026-05-05
1010United Kingdom2026-04-27
1011Argentina2026-04-22
1012India2026-04-13
1013Italy2026-05-04
1014Australia2026-04-14
1015Germany2026-05-06
1016Italy2026-04-18
1017Brazil2026-05-07
1018Argentina2026-05-09
1019Italy2026-05-04
1020France2026-04-20
1021Italy2026-04-16
1022Argentina2026-05-07
1023Canada2026-04-13
1024United Kingdom2026-04-21
1025Spain2026-04-22
1026Italy2026-04-25
1027Germany2026-05-02
1028Italy2026-05-09
1029Argentina2026-05-05
1030Argentina2026-05-01
1031France2026-04-25
1032Russia2026-05-01
1033Germany2026-05-03
1034Australia2026-05-03
1035United Kingdom2026-04-24
1036Australia2026-04-20
1037Russia2026-04-27
1038Italy2026-04-19
1039India2026-04-10
1040Japan2026-04-13
1041Spain2026-04-30
1042United Kingdom2026-04-16
1043Australia2026-04-28
1044India2026-04-18
1045India2026-04-22
1046Canada2026-04-20
1047Russia2026-05-06
1048Russia2026-04-22
1049Germany2026-04-20

On-Demand Data

NameIdCountryDate
Clifford Rim1000Canada2026-04-21
Costa Dilliard1001Australia2026-04-10
Aruna Figeroa1002Brazil2026-04-28
Aika Inouye1003India2026-04-17
Smith Glick1004Russia2026-05-05
Maria Marrier1005Canada2026-04-12
Clifford Rim1006Canada2026-04-10
Francesco Shinko1007Spain2026-04-15
Aditya Kusko1008Italy2026-04-11
Octavia Malet1009Brazil2026-04-17
Nicolas Iturbide1010United Kingdom2026-05-02
Leja Caldarera1011Spain2026-05-08
James Butt1012Brazil2026-05-07
Izzy Garufi1013Canada2026-04-10
Costa Dilliard1014Germany2026-04-20
Julie Stenseth1015Argentina2026-04-24
Wickens Nestle1016Brazil2026-04-18
Leon Oldroyd1017Brazil2026-04-30
Chavez Briddick1018Germany2026-04-23
Wickens Nestle1019Japan2026-04-26
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Adams MorascaBrazilXuxue Feng NEGOTIATION
Leja CaldareraJapanOnyama Limba RENEWAL
Jefferson SchemmerGermanyStephen Shaw PROPOSAL
Julie StensethArgentinaAmy Elsner NEGOTIATION
Kaitlin OstroskyArgentinaAsiya Javayant RENEWAL
Juan WieserItalyOnyama Limba RENEWAL
Maisha RulapaughJapanXuxue Feng NEGOTIATION
James ButtJapanAsiya Javayant QUALIFIED
Stacey MacleadAustraliaBernardo Dominic PROPOSAL
Aditya KuskoSpainOnyama Limba NEGOTIATION
Faith GillianBrazilXuxue Feng QUALIFIED
Munro FerenczItalyAmy Elsner QUALIFIED
David DarakjyArgentinaBernardo Dominic RENEWAL
Jones VocelkaIndiaAmy Elsner NEGOTIATION
Johnson SergiIndiaIvan Magalhaes NEGOTIATION
Deepesh ChuiCanadaXuxue Feng RENEWAL
Costa DilliardArgentinaAmy Elsner RENEWAL
Jefferson SchemmerAustraliaElwin Sharvill PROPOSAL
Tony FollerAustraliaAsiya Javayant RENEWAL
Jones VocelkaSpainAmy Elsner UNQUALIFIED
Ricardo GauchoBrazilStephen Shaw UNQUALIFIED
David DarakjyGermanyOnyama Limba NEW
Nicolas IturbideUnited KingdomAnna Fali NEW
Emily WhobreySpainAnna Fali RENEWAL
Wickens NestleBrazilIoni Bowcher RENEWAL
Antonio CaudyBrazilElwin Sharvill UNQUALIFIED
Clifford RimAustraliaStephen Shaw NEW
Emily WhobreyRussiaOnyama Limba RENEWAL
Stacey MacleadArgentinaStephen Shaw NEGOTIATION
Julie StensethCanadaIvan Magalhaes RENEWAL
Salvatore StockhamGermanyBernardo Dominic RENEWAL
Izzy GarufiCanadaAmy Elsner QUALIFIED
Aika InouyeItalyAnna Fali NEW
Silvio SlusarskiUnited KingdomAnna Fali UNQUALIFIED
Misaki RoysterArgentinaIvan Magalhaes QUALIFIED
Octavia MaletArgentinaXuxue Feng PROPOSAL
Munro FerenczJapanAsiya Javayant PROPOSAL
Smith GlickBrazilAmy Elsner NEGOTIATION
Maria MarrierIndiaAnna Fali QUALIFIED
Juan WieserRussiaXuxue Feng QUALIFIED

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