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
Emily WhobreyRussiaAsiya Javayant UNQUALIFIED
Sinclair WaycottItalyBernardo Dominic RENEWAL
Smith GlickIndiaStephen Shaw RENEWAL
Salvatore StockhamSpainElwin Sharvill QUALIFIED
Tony FollerRussiaElwin Sharvill PROPOSAL
Tony FollerArgentinaOnyama Limba PROPOSAL
Costa DilliardGermanyOnyama Limba UNQUALIFIED
Kaitlin OstroskyRussiaBernardo Dominic RENEWAL
Mayumi KolmetzUnited KingdomBernardo Dominic QUALIFIED
Kaitlin OstroskyJapanIoni Bowcher NEW
Leja CaldareraRussiaIvan Magalhaes NEW
Izzy GarufiRussiaXuxue Feng NEW
Aruna FigeroaCanadaXuxue Feng RENEWAL
James ButtAustraliaIvan Magalhaes RENEWAL
Leja CaldareraFranceAmy Elsner NEGOTIATION
Ivar PaprockiIndiaIoni Bowcher QUALIFIED
Smith GlickFranceElwin Sharvill PROPOSAL
Antonio CaudyCanadaStephen Shaw NEGOTIATION
Faith GillianSpainElwin Sharvill NEW
Murillo MaletAustraliaIoni Bowcher UNQUALIFIED
Rodrigues CampainAustraliaIvan Magalhaes NEW
Nicolas IturbideUnited KingdomIvan Magalhaes PROPOSAL
Mujtaba NickaAustraliaAmy Elsner NEW
Leja CaldareraBrazilStephen Shaw UNQUALIFIED
David DarakjyItalyAmy Elsner PROPOSAL
Leja CaldareraBrazilXuxue Feng PROPOSAL
Jennifer AmigonAustraliaStephen Shaw PROPOSAL
David DarakjySpainIvan Magalhaes PROPOSAL
Ricardo GauchoBrazilXuxue Feng NEW
Arvin AlbaresItalyIvan Magalhaes NEW
Aditya KuskoItalyIvan Magalhaes UNQUALIFIED
Francesco ShinkoGermanyAnna Fali UNQUALIFIED
Jefferson SchemmerItalyElwin Sharvill PROPOSAL
Ashley DoeCanadaOnyama Limba PROPOSAL
Murillo MaletIndiaElwin Sharvill QUALIFIED
Maria MarrierFranceXuxue Feng PROPOSAL
Morrow RutaItalyAnna Fali QUALIFIED
Kaitlin OstroskyIndiaOnyama Limba NEW
Ivar PaprockiGermanyOnyama Limba NEGOTIATION
Antonio CaudyUnited KingdomOnyama Limba PROPOSAL
Ricardo GauchoFranceAnna Fali RENEWAL
Juan WieserIndiaAnna Fali NEGOTIATION
Sinclair WaycottBrazilAsiya Javayant PROPOSAL
Kadeem FlosiBrazilIvan Magalhaes NEGOTIATION
Chavez BriddickAustraliaAnna Fali QUALIFIED
Octavia MaletArgentinaIoni Bowcher UNQUALIFIED
Maria MarrierRussiaAnna Fali NEGOTIATION
Kaitlin OstroskySpainOnyama Limba NEGOTIATION
Francesco ShinkoSpainAsiya Javayant NEGOTIATION
Greenwood BologniaAustraliaAsiya Javayant NEW
Horizontal
NameCountryRepresentativeStatus
Ashley DoeSpainOnyama Limba PROPOSAL
Arvin AlbaresGermanyAmy Elsner PROPOSAL
Rodrigues CampainItalyBernardo Dominic UNQUALIFIED
Sinclair WaycottJapanIvan Magalhaes PROPOSAL
Rodrigues CampainItalyIvan Magalhaes RENEWAL
Izzy GarufiArgentinaAmy Elsner QUALIFIED
Claire TollnerSpainBernardo Dominic PROPOSAL
David DarakjyFranceXuxue Feng PROPOSAL
Arvin AlbaresRussiaStephen Shaw PROPOSAL
Arvin AlbaresItalyBernardo Dominic NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Maisha RulapaughCanada2026-05-24Rangoni Of Florence QUALIFIED76Bernardo Dominic
1001Nicolas IturbideBrazil2026-05-26Truhlar And Truhlar Attys RENEWAL67Stephen Shaw
1002Silvio SlusarskiArgentina2026-06-03Feiner Bros NEW77Ioni Bowcher
1003James ButtArgentina2026-05-18Commercial Press RENEWAL86Elwin Sharvill
1004Morrow RutaGermany2026-05-12Commercial Press UNQUALIFIED94Amy Elsner
1005Jefferson SchemmerAustralia2026-06-04Printing Dimensions NEGOTIATION64Stephen Shaw
1006Aruna FigeroaAustralia2026-05-31Printing Dimensions PROPOSAL68Amy Elsner
1007Morrow RutaJapan2026-06-05Feltz Printing Service PROPOSAL94Stephen Shaw
1008Stacey MacleadItaly2026-06-02Dorl, James J Esq QUALIFIED17Elwin Sharvill
1009Salvatore StockhamJapan2026-05-27Printing Dimensions QUALIFIED12Elwin Sharvill
1010Leja CaldareraArgentina2026-06-05Rousseaux, Michael Esq NEW2Ivan Magalhaes
1011Kaitlin OstroskyBrazil2026-05-24Chanay, Jeffrey A Esq PROPOSAL53Elwin Sharvill
1012Greenwood BologniaGermany2026-06-04Feiner Bros QUALIFIED50Onyama Limba
1013Isabel BowleyCanada2026-05-13Buckley Miller Wright NEGOTIATION83Anna Fali
1014Maisha RulapaughJapan2026-05-28Feiner Bros PROPOSAL35Asiya Javayant
1015Ivar PaprockiFrance2026-05-31King, Christopher A Esq NEGOTIATION38Ioni Bowcher
1016Stacey MacleadSpain2026-05-16Morlong Associates QUALIFIED67Stephen Shaw
1017Ricardo GauchoFrance2026-05-16Truhlar And Truhlar Attys RENEWAL11Stephen Shaw
1018Ricardo GauchoGermany2026-05-14Chanay, Jeffrey A Esq NEW58Xuxue Feng
1019Darci PoquetteRussia2026-05-31Rangoni Of Florence NEGOTIATION59Ioni Bowcher
1020Jones VocelkaUnited Kingdom2026-05-31Buckley Miller Wright NEGOTIATION4Anna Fali
1021Claire TollnerUnited Kingdom2026-05-27Dorl, James J Esq QUALIFIED54Onyama Limba
1022Aditya KuskoIndia2026-05-24Truhlar And Truhlar Attys UNQUALIFIED19Onyama Limba
1023Antonio CaudyCanada2026-05-15Benton, John B Jr PROPOSAL83Asiya Javayant
1024Clifford RimIndia2026-05-17Feltz Printing Service NEW76Onyama Limba
1025Silvio SlusarskiSpain2026-05-31Chapman, Ross E Esq QUALIFIED92Anna Fali
1026Maria MarrierUnited Kingdom2026-05-24Benton, John B Jr UNQUALIFIED6Asiya Javayant
1027Cody SaylorsItaly2026-05-26Feltz Printing Service NEW16Amy Elsner
1028Emily WhobreyAustralia2026-05-15Morlong Associates RENEWAL15Bernardo Dominic
1029Darci PoquetteRussia2026-05-26Printing Dimensions UNQUALIFIED6Anna Fali
1030Aruna FigeroaArgentina2026-05-30Chapman, Ross E Esq NEW43Onyama Limba
1031Jennifer AmigonCanada2026-05-28Rangoni Of Florence NEGOTIATION11Anna Fali
1032Clifford RimIndia2026-06-08Chapman, Ross E Esq RENEWAL93Xuxue Feng
1033Claire TollnerItaly2026-05-14Feiner Bros PROPOSAL25Elwin Sharvill
1034Jeanfrancois VenereUnited Kingdom2026-05-18Printing Dimensions QUALIFIED89Xuxue Feng
1035Darci PoquetteGermany2026-05-26Dorl, James J Esq NEGOTIATION15Ioni Bowcher
1036Mayumi KolmetzJapan2026-05-17Rousseaux, Michael Esq NEW75Ivan Magalhaes
1037Julie StensethUnited Kingdom2026-05-17King, Christopher A Esq NEGOTIATION96Stephen Shaw
1038Cody SaylorsIndia2026-06-07Printing Dimensions NEGOTIATION48Ivan Magalhaes
1039Izzy GarufiIndia2026-05-19Chapman, Ross E Esq QUALIFIED27Ioni Bowcher
1040Kaitlin OstroskyItaly2026-05-13Chapman, Ross E Esq QUALIFIED38Amy Elsner
1041Aditya KuskoBrazil2026-06-03Benton, John B Jr NEGOTIATION14Stephen Shaw
1042Darci PoquetteUnited Kingdom2026-05-27King, Christopher A Esq RENEWAL41Ivan Magalhaes
1043Ivar PaprockiCanada2026-06-06Chanay, Jeffrey A Esq NEW84Stephen Shaw
1044Chavez BriddickCanada2026-05-10Printing Dimensions NEW55Anna Fali
1045Juan WieserCanada2026-05-30Chapman, Ross E Esq NEGOTIATION9Amy Elsner
1046Adams MorascaBrazil2026-05-20Truhlar And Truhlar Attys NEGOTIATION50Amy Elsner
1047Smith GlickJapan2026-06-01Chemel, James L Cpa RENEWAL70Anna Fali
1048Faith GillianCanada2026-05-13Chapman, Ross E Esq RENEWAL91Anna Fali
1049Chavez BriddickIndia2026-05-31Printing Dimensions UNQUALIFIED63Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Tony FollerBrazilIvan Magalhaes UNQUALIFIED
James ButtSpainBernardo Dominic NEW
Cody SaylorsAustraliaXuxue Feng QUALIFIED
Stacey MacleadUnited KingdomAnna Fali QUALIFIED
Octavia MaletIndiaIvan Magalhaes QUALIFIED
Wickens NestleRussiaIvan Magalhaes NEW
Antonio CaudyItalyElwin Sharvill UNQUALIFIED
Johnson SergiJapanBernardo Dominic QUALIFIED
Ashley DoeJapanBernardo Dominic UNQUALIFIED
Greenwood BologniaFranceIoni Bowcher PROPOSAL
Murillo MaletAustraliaIoni Bowcher UNQUALIFIED
Aika InouyeGermanyAmy Elsner UNQUALIFIED
Chavez BriddickBrazilIoni Bowcher RENEWAL
Adams MorascaGermanyIoni Bowcher RENEWAL
Jones VocelkaJapanIvan Magalhaes RENEWAL
Stacey MacleadItalyIoni Bowcher PROPOSAL
David DarakjyBrazilXuxue Feng UNQUALIFIED
Isabel BowleyArgentinaAmy Elsner QUALIFIED
Rodrigues CampainItalyOnyama Limba NEGOTIATION
Munro FerenczGermanyOnyama Limba RENEWAL
Rodrigues CampainIndiaIvan Magalhaes QUALIFIED
Smith GlickItalyIoni Bowcher UNQUALIFIED
David DarakjyBrazilXuxue Feng NEGOTIATION
Silvio SlusarskiFranceAnna Fali NEW
Maisha RulapaughCanadaElwin Sharvill NEW
Isabel BowleyJapanAnna Fali UNQUALIFIED
Cody SaylorsSpainAmy Elsner RENEWAL
Clifford RimFranceAnna Fali UNQUALIFIED
Julie StensethAustraliaOnyama Limba NEGOTIATION
Ricardo GauchoItalyIvan Magalhaes PROPOSAL
Aruna FigeroaSpainAmy Elsner UNQUALIFIED
Adams MorascaItalyIoni Bowcher UNQUALIFIED
Nicolas IturbideBrazilAsiya Javayant PROPOSAL
Leon OldroydSpainAnna Fali NEGOTIATION
James ButtAustraliaAmy Elsner QUALIFIED
Octavia MaletUnited KingdomElwin Sharvill NEW
Costa DilliardArgentinaAnna Fali NEGOTIATION
Aditya KuskoCanadaIvan Magalhaes NEW
Munro FerenczArgentinaIoni Bowcher RENEWAL
Deepesh ChuiBrazilElwin Sharvill NEGOTIATION
Aika InouyeFranceOnyama Limba NEGOTIATION
Jones VocelkaSpainAsiya Javayant NEGOTIATION
Izzy GarufiRussiaIoni Bowcher RENEWAL
Jefferson SchemmerRussiaStephen Shaw UNQUALIFIED
Kadeem FlosiGermanyElwin Sharvill NEGOTIATION
Munro FerenczUnited KingdomAsiya Javayant QUALIFIED
Faith GillianItalyStephen Shaw NEGOTIATION
James ButtRussiaIvan Magalhaes PROPOSAL
Costa DilliardGermanyAnna Fali QUALIFIED
Ivar PaprockiBrazilIvan Magalhaes PROPOSAL
Frozen Columns
Name
Sinclair Waycott
Claire Tollner
Jones Vocelka
Costa Dilliard
Salvatore Stockham
Munro Ferencz
Mayumi Kolmetz
Greenwood Bolognia
Octavia Malet
Murillo Malet
Mujtaba Nicka
Leon Oldroyd
Arvin Albares
Darci Poquette
Kaitlin Ostrosky
Smith Glick
Aika Inouye
Alejandro Perin
Jeanfrancois Venere
Emily Whobrey
Ricardo Gaucho
Ivar Paprocki
Deepesh Chui
Stacey Maclead
Maisha Rulapaugh
Izzy Garufi
Octavia Malet
Julie Stenseth
Smith Glick
Morrow Ruta
David Darakjy
Munro Ferencz
Nicolas Iturbide
Leon Oldroyd
Nicolas Iturbide
Cody Saylors
Munro Ferencz
Maisha Rulapaugh
Misaki Royster
James Butt
Arvin Albares
Murillo Malet
Wickens Nestle
Aika Inouye
Claire Tollner
Ricardo Gaucho
Emily Whobrey
Aika Inouye
Wickens Nestle
Octavia Malet
IdCountryDate
1000Spain2026-05-28
1001Canada2026-05-29
1002United Kingdom2026-05-14
1003India2026-05-12
1004Australia2026-05-25
1005Japan2026-05-29
1006Japan2026-06-08
1007Australia2026-05-15
1008Japan2026-05-11
1009Spain2026-05-26
1010Germany2026-05-21
1011Brazil2026-06-04
1012Canada2026-05-16
1013Spain2026-06-08
1014Argentina2026-06-01
1015Germany2026-05-23
1016India2026-05-27
1017France2026-06-04
1018Spain2026-05-18
1019Australia2026-05-25
1020Argentina2026-05-17
1021Italy2026-05-16
1022Argentina2026-06-07
1023India2026-05-25
1024Canada2026-05-16
1025France2026-05-10
1026Russia2026-05-23
1027Australia2026-05-17
1028Italy2026-05-16
1029Japan2026-05-21
1030India2026-05-17
1031Canada2026-05-10
1032Australia2026-05-11
1033Japan2026-06-06
1034Argentina2026-05-27
1035United Kingdom2026-05-12
1036Russia2026-05-19
1037Japan2026-05-18
1038Germany2026-05-19
1039India2026-05-22
1040Australia2026-05-19
1041Italy2026-05-23
1042Italy2026-06-02
1043France2026-05-28
1044Spain2026-06-03
1045Japan2026-05-10
1046Japan2026-05-30
1047Canada2026-05-12
1048Japan2026-05-11
1049Brazil2026-05-22

On-Demand Data

NameIdCountryDate
Julie Stenseth1000Italy2026-05-17
Aruna Figeroa1001Japan2026-05-10
Cody Saylors1002Italy2026-05-30
Kadeem Flosi1003India2026-05-15
Aruna Figeroa1004Canada2026-05-14
Wickens Nestle1005Japan2026-06-07
Murillo Malet1006Canada2026-05-18
Kaitlin Ostrosky1007United Kingdom2026-05-31
Claire Tollner1008Brazil2026-05-18
Darci Poquette1009Italy2026-05-25
Ashley Doe1010Spain2026-05-13
Cody Saylors1011United Kingdom2026-05-24
Mujtaba Nicka1012India2026-06-02
Mayumi Kolmetz1013Canada2026-06-04
Leja Caldarera1014Canada2026-05-23
Sinclair Waycott1015France2026-05-11
Isabel Bowley1016France2026-05-23
Claire Tollner1017United Kingdom2026-05-30
Mujtaba Nicka1018Canada2026-05-26
Adams Morasca1019Italy2026-05-14
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Octavia MaletIndiaAsiya Javayant NEGOTIATION
Ivar PaprockiGermanyXuxue Feng NEW
Misaki RoysterItalyIoni Bowcher QUALIFIED
Aditya KuskoFranceAmy Elsner RENEWAL
Smith GlickJapanStephen Shaw QUALIFIED
Greenwood BologniaCanadaAnna Fali QUALIFIED
Smith GlickCanadaXuxue Feng NEGOTIATION
Juan WieserSpainStephen Shaw NEW
Clifford RimBrazilIvan Magalhaes RENEWAL
Darci PoquetteItalyIoni Bowcher QUALIFIED
Silvio SlusarskiBrazilIvan Magalhaes NEW
Claire TollnerJapanAmy Elsner QUALIFIED
Munro FerenczJapanAsiya Javayant NEW
Cody SaylorsFranceAmy Elsner QUALIFIED
Wickens NestleSpainAsiya Javayant NEW
Rodrigues CampainArgentinaBernardo Dominic NEW
Alejandro PerinItalyIoni Bowcher NEW
Aika InouyeRussiaAsiya Javayant NEGOTIATION
Aruna FigeroaUnited KingdomAsiya Javayant UNQUALIFIED
Mujtaba NickaItalyAsiya Javayant UNQUALIFIED
Tony FollerGermanyStephen Shaw QUALIFIED
Misaki RoysterItalyStephen Shaw QUALIFIED
Adams MorascaSpainOnyama Limba QUALIFIED
Ricardo GauchoJapanOnyama Limba PROPOSAL
Kaitlin OstroskyBrazilStephen Shaw RENEWAL
David DarakjySpainAsiya Javayant NEW
Juan WieserGermanyBernardo Dominic QUALIFIED
Ricardo GauchoArgentinaAsiya Javayant QUALIFIED
Faith GillianRussiaBernardo Dominic RENEWAL
Arvin AlbaresCanadaAnna Fali NEGOTIATION
Jones VocelkaItalyBernardo Dominic NEW
Smith GlickBrazilOnyama Limba NEW
Octavia MaletBrazilXuxue Feng NEW
Antonio CaudyArgentinaIvan Magalhaes NEGOTIATION
Jeanfrancois VenereCanadaOnyama Limba QUALIFIED
Stacey MacleadGermanyBernardo Dominic PROPOSAL
Jefferson SchemmerAustraliaIvan Magalhaes UNQUALIFIED
Octavia MaletUnited KingdomIvan Magalhaes UNQUALIFIED
Kaitlin OstroskyCanadaIoni Bowcher NEW
Cody SaylorsGermanyOnyama Limba 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>