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
Clifford RimCanadaAsiya Javayant NEW
Emily WhobreyItalyAsiya Javayant PROPOSAL
Sinclair WaycottUnited KingdomIvan Magalhaes NEW
Misaki RoysterBrazilXuxue Feng PROPOSAL
Antonio CaudyAustraliaElwin Sharvill QUALIFIED
Morrow RutaSpainAnna Fali QUALIFIED
Maria MarrierFranceIvan Magalhaes UNQUALIFIED
Alejandro PerinAustraliaAmy Elsner UNQUALIFIED
Wickens NestleSpainIoni Bowcher NEW
Emily WhobreySpainOnyama Limba RENEWAL
David DarakjyAustraliaStephen Shaw RENEWAL
Ivar PaprockiArgentinaIoni Bowcher QUALIFIED
Ivar PaprockiIndiaElwin Sharvill PROPOSAL
Morrow RutaIndiaXuxue Feng PROPOSAL
Darci PoquetteIndiaIvan Magalhaes NEW
Maria MarrierRussiaAmy Elsner NEW
Aruna FigeroaJapanElwin Sharvill UNQUALIFIED
Leja CaldareraRussiaElwin Sharvill UNQUALIFIED
James ButtFranceElwin Sharvill PROPOSAL
Silvio SlusarskiJapanElwin Sharvill UNQUALIFIED
Silvio SlusarskiFranceIoni Bowcher UNQUALIFIED
Tony FollerRussiaAnna Fali NEW
James ButtFranceBernardo Dominic QUALIFIED
Misaki RoysterItalyAmy Elsner NEW
Clifford RimJapanBernardo Dominic PROPOSAL
Juan WieserBrazilAnna Fali NEW
Julie StensethFranceAmy Elsner UNQUALIFIED
Aika InouyeArgentinaOnyama Limba NEGOTIATION
Tony FollerSpainAmy Elsner NEW
Johnson SergiGermanyAmy Elsner RENEWAL
Antonio CaudyItalyIvan Magalhaes QUALIFIED
Johnson SergiGermanyIvan Magalhaes NEGOTIATION
Maisha RulapaughBrazilOnyama Limba NEGOTIATION
Johnson SergiBrazilAsiya Javayant NEW
Tony FollerBrazilXuxue Feng NEGOTIATION
Jennifer AmigonGermanyAnna Fali PROPOSAL
Octavia MaletRussiaAmy Elsner NEW
Wickens NestleIndiaAsiya Javayant NEW
Wickens NestleAustraliaIoni Bowcher NEGOTIATION
David DarakjyIndiaXuxue Feng NEGOTIATION
Stacey MacleadRussiaXuxue Feng PROPOSAL
Deepesh ChuiBrazilAmy Elsner RENEWAL
Julie StensethRussiaXuxue Feng PROPOSAL
Francesco ShinkoSpainIoni Bowcher NEW
Arvin AlbaresJapanBernardo Dominic UNQUALIFIED
Johnson SergiAustraliaAmy Elsner NEGOTIATION
Nicolas IturbideArgentinaAmy Elsner UNQUALIFIED
Mayumi KolmetzGermanyIvan Magalhaes NEW
Deepesh ChuiIndiaXuxue Feng UNQUALIFIED
Greenwood BologniaArgentinaStephen Shaw UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Leon OldroydAustraliaAnna Fali QUALIFIED
Aruna FigeroaAustraliaAmy Elsner NEGOTIATION
Misaki RoysterJapanElwin Sharvill QUALIFIED
Misaki RoysterArgentinaOnyama Limba QUALIFIED
Jones VocelkaBrazilIoni Bowcher RENEWAL
Smith GlickAustraliaBernardo Dominic PROPOSAL
Jones VocelkaBrazilIoni Bowcher RENEWAL
Isabel BowleySpainAsiya Javayant NEGOTIATION
Deepesh ChuiSpainAmy Elsner QUALIFIED
Greenwood BologniaGermanyStephen Shaw RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Octavia MaletCanada2026-06-13Feltz Printing Service NEGOTIATION23Ivan Magalhaes
1001Maria MarrierRussia2026-05-30Chemel, James L Cpa PROPOSAL42Onyama Limba
1002Clifford RimAustralia2026-05-25Chapman, Ross E Esq PROPOSAL69Anna Fali
1003Greenwood BologniaBrazil2026-05-26Chanay, Jeffrey A Esq QUALIFIED80Ioni Bowcher
1004Costa DilliardAustralia2026-06-12Commercial Press NEW55Stephen Shaw
1005Costa DilliardFrance2026-06-11Commercial Press QUALIFIED97Onyama Limba
1006Mujtaba NickaArgentina2026-06-06Chemel, James L Cpa RENEWAL4Elwin Sharvill
1007Deepesh ChuiJapan2026-06-12Dorl, James J Esq NEW21Stephen Shaw
1008Darci PoquetteAustralia2026-05-31Printing Dimensions RENEWAL23Onyama Limba
1009Francesco ShinkoItaly2026-06-10Commercial Press NEW4Amy Elsner
1010Chavez BriddickGermany2026-06-04Chapman, Ross E Esq RENEWAL15Stephen Shaw
1011Cody SaylorsGermany2026-05-31Printing Dimensions NEW89Ioni Bowcher
1012Mayumi KolmetzGermany2026-06-04Chanay, Jeffrey A Esq QUALIFIED19Ivan Magalhaes
1013David DarakjyAustralia2026-06-07Morlong Associates NEGOTIATION21Onyama Limba
1014Sinclair WaycottJapan2026-05-31Feltz Printing Service RENEWAL90Onyama Limba
1015Jefferson SchemmerUnited Kingdom2026-05-25Feltz Printing Service RENEWAL71Amy Elsner
1016Stacey MacleadFrance2026-06-04Chapman, Ross E Esq PROPOSAL43Anna Fali
1017Kadeem FlosiArgentina2026-06-01Chemel, James L Cpa QUALIFIED52Anna Fali
1018Maria MarrierCanada2026-06-02Commercial Press QUALIFIED54Onyama Limba
1019Kadeem FlosiRussia2026-06-04Chemel, James L Cpa UNQUALIFIED61Stephen Shaw
1020Jennifer AmigonAustralia2026-06-11Truhlar And Truhlar Attys NEW91Stephen Shaw
1021Misaki RoysterBrazil2026-06-06Truhlar And Truhlar Attys NEGOTIATION51Ivan Magalhaes
1022Nicolas IturbideIndia2026-06-12Chemel, James L Cpa NEGOTIATION68Elwin Sharvill
1023Claire TollnerIndia2026-06-14Chanay, Jeffrey A Esq QUALIFIED21Xuxue Feng
1024Wickens NestleRussia2026-06-17Rangoni Of Florence NEW44Ivan Magalhaes
1025Leja CaldareraSpain2026-06-22Chapman, Ross E Esq QUALIFIED21Stephen Shaw
1026Murillo MaletAustralia2026-06-20Chapman, Ross E Esq NEW26Anna Fali
1027Aika InouyeCanada2026-06-09Morlong Associates NEW77Elwin Sharvill
1028Kaitlin OstroskyGermany2026-06-05Benton, John B Jr PROPOSAL5Xuxue Feng
1029Leon OldroydArgentina2026-06-09Morlong Associates QUALIFIED30Xuxue Feng
1030Julie StensethSpain2026-05-31Rousseaux, Michael Esq NEW93Bernardo Dominic
1031Stacey MacleadFrance2026-06-20Dorl, James J Esq NEGOTIATION43Ioni Bowcher
1032Jennifer AmigonAustralia2026-05-29Printing Dimensions RENEWAL52Asiya Javayant
1033Morrow RutaAustralia2026-06-22Printing Dimensions PROPOSAL92Bernardo Dominic
1034Kaitlin OstroskyGermany2026-06-11Truhlar And Truhlar Attys UNQUALIFIED62Elwin Sharvill
1035Isabel BowleyBrazil2026-06-13King, Christopher A Esq QUALIFIED67Stephen Shaw
1036Isabel BowleyItaly2026-06-19King, Christopher A Esq NEGOTIATION13Asiya Javayant
1037Aruna FigeroaBrazil2026-06-01Chanay, Jeffrey A Esq NEW41Onyama Limba
1038Ricardo GauchoArgentina2026-05-30Feltz Printing Service NEGOTIATION54Bernardo Dominic
1039Tony FollerFrance2026-05-29Truhlar And Truhlar Attys QUALIFIED86Bernardo Dominic
1040Aika InouyeArgentina2026-06-19Rousseaux, Michael Esq NEW85Anna Fali
1041Francesco ShinkoBrazil2026-06-01Feiner Bros NEW58Anna Fali
1042Nicolas IturbideArgentina2026-06-05Chanay, Jeffrey A Esq UNQUALIFIED33Stephen Shaw
1043Arvin AlbaresBrazil2026-05-25Feltz Printing Service RENEWAL38Ivan Magalhaes
1044Faith GillianJapan2026-06-21Chapman, Ross E Esq NEGOTIATION86Asiya Javayant
1045Francesco ShinkoAustralia2026-06-04Chemel, James L Cpa PROPOSAL38Amy Elsner
1046Leon OldroydFrance2026-06-16Truhlar And Truhlar Attys UNQUALIFIED46Onyama Limba
1047Morrow RutaBrazil2026-05-30Morlong Associates QUALIFIED15Bernardo Dominic
1048Ivar PaprockiJapan2026-05-26Chanay, Jeffrey A Esq PROPOSAL26Stephen Shaw
1049Jeanfrancois VenereRussia2026-06-18Chemel, James L Cpa QUALIFIED49Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Isabel BowleyArgentinaElwin Sharvill NEGOTIATION
David DarakjyCanadaStephen Shaw QUALIFIED
James ButtRussiaXuxue Feng PROPOSAL
Smith GlickAustraliaIoni Bowcher NEW
Leon OldroydJapanIoni Bowcher PROPOSAL
Nicolas IturbideIndiaStephen Shaw PROPOSAL
Ashley DoeAustraliaOnyama Limba UNQUALIFIED
Wickens NestleCanadaIoni Bowcher UNQUALIFIED
Greenwood BologniaSpainElwin Sharvill QUALIFIED
Tony FollerSpainIvan Magalhaes RENEWAL
Sinclair WaycottGermanyIvan Magalhaes UNQUALIFIED
Faith GillianUnited KingdomAsiya Javayant QUALIFIED
Jefferson SchemmerArgentinaAsiya Javayant UNQUALIFIED
Octavia MaletUnited KingdomOnyama Limba QUALIFIED
James ButtGermanyIoni Bowcher NEGOTIATION
Claire TollnerSpainAmy Elsner RENEWAL
Jones VocelkaFranceXuxue Feng RENEWAL
Darci PoquetteAustraliaOnyama Limba NEW
Jennifer AmigonAustraliaIoni Bowcher UNQUALIFIED
Greenwood BologniaIndiaXuxue Feng PROPOSAL
Claire TollnerItalyStephen Shaw PROPOSAL
Costa DilliardSpainXuxue Feng NEW
Isabel BowleyArgentinaStephen Shaw NEW
Munro FerenczIndiaAmy Elsner NEW
Mayumi KolmetzBrazilElwin Sharvill PROPOSAL
Arvin AlbaresIndiaAsiya Javayant QUALIFIED
Leon OldroydRussiaOnyama Limba PROPOSAL
Greenwood BologniaSpainStephen Shaw NEW
Jefferson SchemmerBrazilBernardo Dominic NEW
Johnson SergiJapanXuxue Feng PROPOSAL
Jones VocelkaSpainIoni Bowcher PROPOSAL
Aruna FigeroaSpainIvan Magalhaes UNQUALIFIED
Costa DilliardUnited KingdomStephen Shaw NEGOTIATION
Jefferson SchemmerFranceIoni Bowcher NEGOTIATION
Jennifer AmigonFranceAsiya Javayant RENEWAL
Aruna FigeroaCanadaElwin Sharvill UNQUALIFIED
Stacey MacleadGermanyIoni Bowcher NEGOTIATION
Johnson SergiAustraliaBernardo Dominic NEGOTIATION
Leon OldroydCanadaStephen Shaw PROPOSAL
Cody SaylorsSpainAnna Fali NEGOTIATION
Nicolas IturbideBrazilStephen Shaw NEW
Izzy GarufiIndiaIoni Bowcher RENEWAL
Antonio CaudyItalyAsiya Javayant RENEWAL
Arvin AlbaresRussiaAnna Fali NEGOTIATION
Rodrigues CampainItalyIoni Bowcher QUALIFIED
Faith GillianArgentinaBernardo Dominic RENEWAL
Arvin AlbaresFranceOnyama Limba QUALIFIED
Emily WhobreyFranceBernardo Dominic NEGOTIATION
Adams MorascaUnited KingdomOnyama Limba NEW
Costa DilliardJapanIvan Magalhaes QUALIFIED
Frozen Columns
Name
Darci Poquette
Ricardo Gaucho
Deepesh Chui
Aika Inouye
Misaki Royster
Aruna Figeroa
Aruna Figeroa
Julie Stenseth
Antonio Caudy
Rodrigues Campain
Isabel Bowley
Aruna Figeroa
Sinclair Waycott
Claire Tollner
Octavia Malet
Leon Oldroyd
Smith Glick
Murillo Malet
Johnson Sergi
Aditya Kusko
Octavia Malet
Mujtaba Nicka
Arvin Albares
Jones Vocelka
Mayumi Kolmetz
Leon Oldroyd
David Darakjy
Mujtaba Nicka
Ashley Doe
Antonio Caudy
Johnson Sergi
Chavez Briddick
Isabel Bowley
Smith Glick
Smith Glick
Costa Dilliard
Jones Vocelka
Darci Poquette
Antonio Caudy
Aditya Kusko
Rodrigues Campain
Jeanfrancois Venere
Jeanfrancois Venere
Jones Vocelka
Arvin Albares
Arvin Albares
Salvatore Stockham
Murillo Malet
Sinclair Waycott
Deepesh Chui
IdCountryDate
1000United Kingdom2026-06-18
1001France2026-06-15
1002Canada2026-05-25
1003Germany2026-06-18
1004Canada2026-05-26
1005United Kingdom2026-06-02
1006Australia2026-05-27
1007India2026-06-15
1008Germany2026-06-19
1009Australia2026-05-29
1010Spain2026-06-02
1011Argentina2026-06-02
1012France2026-06-16
1013Canada2026-06-01
1014Germany2026-05-26
1015Japan2026-06-08
1016Argentina2026-06-11
1017Japan2026-06-10
1018Argentina2026-06-22
1019Brazil2026-05-27
1020France2026-06-12
1021United Kingdom2026-06-14
1022Russia2026-06-07
1023Australia2026-05-28
1024Argentina2026-06-02
1025Spain2026-05-31
1026Italy2026-06-15
1027Australia2026-06-02
1028United Kingdom2026-05-25
1029France2026-06-13
1030France2026-06-19
1031Japan2026-05-29
1032Japan2026-06-22
1033India2026-06-05
1034France2026-06-01
1035Italy2026-06-21
1036France2026-06-05
1037Canada2026-06-07
1038Germany2026-06-01
1039Australia2026-06-15
1040Spain2026-06-13
1041Spain2026-06-20
1042United Kingdom2026-06-19
1043United Kingdom2026-05-27
1044Russia2026-06-22
1045Argentina2026-06-21
1046Germany2026-06-08
1047Argentina2026-06-12
1048Japan2026-05-31
1049Japan2026-06-07

On-Demand Data

NameIdCountryDate
Faith Gillian1000Canada2026-05-31
Isabel Bowley1001Italy2026-06-01
Aditya Kusko1002Canada2026-06-06
Silvio Slusarski1003Japan2026-06-05
Costa Dilliard1004Argentina2026-06-07
Julie Stenseth1005Russia2026-06-04
Clifford Rim1006Canada2026-06-03
Kaitlin Ostrosky1007Australia2026-06-08
Arvin Albares1008France2026-06-21
Clifford Rim1009Italy2026-06-20
Sinclair Waycott1010Germany2026-06-05
Jefferson Schemmer1011Italy2026-06-01
Silvio Slusarski1012Australia2026-06-14
Nicolas Iturbide1013Russia2026-05-30
Adams Morasca1014Spain2026-05-25
Isabel Bowley1015India2026-05-27
Tony Foller1016United Kingdom2026-06-07
Costa Dilliard1017Argentina2026-05-31
Aika Inouye1018Australia2026-06-15
Cody Saylors1019France2026-06-01
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Sinclair WaycottItalyElwin Sharvill NEW
Ivar PaprockiGermanyAnna Fali NEGOTIATION
Deepesh ChuiUnited KingdomIoni Bowcher NEW
Leja CaldareraJapanBernardo Dominic UNQUALIFIED
Jones VocelkaArgentinaIoni Bowcher NEGOTIATION
Arvin AlbaresGermanyIvan Magalhaes QUALIFIED
Julie StensethJapanAsiya Javayant NEW
Johnson SergiUnited KingdomAnna Fali QUALIFIED
Julie StensethCanadaAmy Elsner PROPOSAL
Ricardo GauchoJapanXuxue Feng UNQUALIFIED
Clifford RimIndiaXuxue Feng NEGOTIATION
Aditya KuskoJapanIoni Bowcher PROPOSAL
Jennifer AmigonArgentinaElwin Sharvill NEW
Darci PoquetteFranceElwin Sharvill QUALIFIED
Maisha RulapaughItalyIvan Magalhaes RENEWAL
Kaitlin OstroskyCanadaAmy Elsner NEW
Munro FerenczItalyXuxue Feng PROPOSAL
Nicolas IturbideUnited KingdomXuxue Feng NEGOTIATION
Jennifer AmigonItalyAnna Fali NEW
James ButtUnited KingdomStephen Shaw NEGOTIATION
Arvin AlbaresUnited KingdomElwin Sharvill PROPOSAL
Mujtaba NickaRussiaAnna Fali QUALIFIED
Jeanfrancois VenereArgentinaAsiya Javayant UNQUALIFIED
Alejandro PerinCanadaAmy Elsner QUALIFIED
Izzy GarufiArgentinaAnna Fali QUALIFIED
Munro FerenczItalyAmy Elsner UNQUALIFIED
Antonio CaudySpainAnna Fali RENEWAL
Nicolas IturbideFranceBernardo Dominic UNQUALIFIED
Adams MorascaJapanAnna Fali PROPOSAL
Jefferson SchemmerArgentinaXuxue Feng UNQUALIFIED
Octavia MaletIndiaAmy Elsner NEW
Maria MarrierUnited KingdomIoni Bowcher NEGOTIATION
Mayumi KolmetzUnited KingdomAsiya Javayant NEGOTIATION
Izzy GarufiRussiaAsiya Javayant QUALIFIED
Isabel BowleyItalyBernardo Dominic NEW
Mayumi KolmetzGermanyXuxue Feng UNQUALIFIED
Juan WieserItalyStephen Shaw NEW
Jeanfrancois VenereItalyOnyama Limba RENEWAL
Ricardo GauchoCanadaXuxue Feng NEW
Leja CaldareraArgentinaOnyama Limba 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>