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
Aruna FigeroaCanadaAnna Fali PROPOSAL
Adams MorascaBrazilStephen Shaw NEW
Izzy GarufiJapanXuxue Feng UNQUALIFIED
Maisha RulapaughGermanyElwin Sharvill PROPOSAL
Costa DilliardUnited KingdomAnna Fali PROPOSAL
Emily WhobreyGermanyAnna Fali NEW
Munro FerenczItalyStephen Shaw RENEWAL
Munro FerenczRussiaIoni Bowcher PROPOSAL
Deepesh ChuiIndiaIvan Magalhaes NEGOTIATION
Adams MorascaCanadaBernardo Dominic UNQUALIFIED
Ricardo GauchoCanadaIoni Bowcher PROPOSAL
Aditya KuskoArgentinaStephen Shaw QUALIFIED
Salvatore StockhamItalyIoni Bowcher RENEWAL
Izzy GarufiSpainIvan Magalhaes UNQUALIFIED
Darci PoquetteIndiaAsiya Javayant NEGOTIATION
Maisha RulapaughAustraliaXuxue Feng RENEWAL
Aditya KuskoFranceBernardo Dominic PROPOSAL
Aruna FigeroaItalyIoni Bowcher QUALIFIED
Maria MarrierUnited KingdomIvan Magalhaes NEGOTIATION
James ButtFranceAnna Fali NEW
Deepesh ChuiSpainIoni Bowcher NEW
Julie StensethRussiaAnna Fali RENEWAL
Costa DilliardItalyOnyama Limba NEGOTIATION
Izzy GarufiSpainXuxue Feng NEW
Isabel BowleyIndiaAsiya Javayant NEW
Antonio CaudyUnited KingdomStephen Shaw NEW
Misaki RoysterUnited KingdomElwin Sharvill UNQUALIFIED
Claire TollnerItalyOnyama Limba QUALIFIED
Antonio CaudyIndiaAsiya Javayant PROPOSAL
Jones VocelkaGermanyBernardo Dominic PROPOSAL
James ButtRussiaAmy Elsner RENEWAL
Izzy GarufiBrazilBernardo Dominic RENEWAL
Maria MarrierRussiaStephen Shaw QUALIFIED
Jennifer AmigonSpainAmy Elsner QUALIFIED
David DarakjySpainAnna Fali QUALIFIED
Johnson SergiBrazilOnyama Limba NEW
Antonio CaudyRussiaAsiya Javayant QUALIFIED
Misaki RoysterJapanAsiya Javayant PROPOSAL
Silvio SlusarskiItalyAsiya Javayant UNQUALIFIED
Deepesh ChuiJapanStephen Shaw UNQUALIFIED
Clifford RimAustraliaElwin Sharvill NEW
Aruna FigeroaBrazilOnyama Limba PROPOSAL
Emily WhobreyGermanyAmy Elsner PROPOSAL
Salvatore StockhamUnited KingdomXuxue Feng NEGOTIATION
Emily WhobreyCanadaXuxue Feng PROPOSAL
Isabel BowleyItalyAmy Elsner NEW
Ivar PaprockiUnited KingdomAmy Elsner PROPOSAL
Munro FerenczArgentinaElwin Sharvill RENEWAL
Nicolas IturbideIndiaIoni Bowcher PROPOSAL
Smith GlickFranceBernardo Dominic NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Francesco ShinkoArgentinaElwin Sharvill UNQUALIFIED
Maria MarrierGermanyIoni Bowcher QUALIFIED
Chavez BriddickFranceOnyama Limba PROPOSAL
Kaitlin OstroskyBrazilXuxue Feng PROPOSAL
Juan WieserRussiaIoni Bowcher RENEWAL
Leja CaldareraRussiaXuxue Feng NEW
Kaitlin OstroskyAustraliaXuxue Feng QUALIFIED
Silvio SlusarskiCanadaXuxue Feng PROPOSAL
Octavia MaletBrazilIvan Magalhaes PROPOSAL
Chavez BriddickArgentinaAnna Fali RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Cody SaylorsJapan2026-05-19Chemel, James L Cpa PROPOSAL4Onyama Limba
1001Alejandro PerinAustralia2026-06-07Benton, John B Jr RENEWAL70Xuxue Feng
1002Julie StensethUnited Kingdom2026-05-28Buckley Miller Wright QUALIFIED39Bernardo Dominic
1003Tony FollerRussia2026-05-19Benton, John B Jr RENEWAL49Anna Fali
1004Leja CaldareraFrance2026-05-23Rangoni Of Florence UNQUALIFIED92Xuxue Feng
1005Murillo MaletItaly2026-06-03Chapman, Ross E Esq NEW7Asiya Javayant
1006Kadeem FlosiItaly2026-05-31Rangoni Of Florence UNQUALIFIED69Asiya Javayant
1007Arvin AlbaresBrazil2026-05-30Rousseaux, Michael Esq NEW25Ioni Bowcher
1008Mujtaba NickaSpain2026-06-17Dorl, James J Esq PROPOSAL51Asiya Javayant
1009Julie StensethBrazil2026-05-23Printing Dimensions UNQUALIFIED38Bernardo Dominic
1010Munro FerenczIndia2026-06-07Morlong Associates PROPOSAL91Elwin Sharvill
1011Faith GillianCanada2026-06-03Rousseaux, Michael Esq NEGOTIATION83Stephen Shaw
1012Adams MorascaBrazil2026-06-01Rangoni Of Florence PROPOSAL96Asiya Javayant
1013Octavia MaletRussia2026-05-29Rousseaux, Michael Esq RENEWAL35Xuxue Feng
1014Emily WhobreyJapan2026-05-30Buckley Miller Wright QUALIFIED99Xuxue Feng
1015Wickens NestleRussia2026-05-24Chapman, Ross E Esq RENEWAL33Bernardo Dominic
1016Salvatore StockhamArgentina2026-06-11Chemel, James L Cpa NEW4Ioni Bowcher
1017Munro FerenczCanada2026-05-26Chapman, Ross E Esq NEW48Bernardo Dominic
1018Salvatore StockhamJapan2026-06-17Benton, John B Jr RENEWAL98Stephen Shaw
1019Clifford RimUnited Kingdom2026-06-01Chanay, Jeffrey A Esq NEW43Amy Elsner
1020Clifford RimRussia2026-05-26Rousseaux, Michael Esq UNQUALIFIED80Xuxue Feng
1021Juan WieserArgentina2026-06-16Morlong Associates PROPOSAL38Bernardo Dominic
1022Chavez BriddickItaly2026-05-25Commercial Press NEGOTIATION0Ivan Magalhaes
1023Arvin AlbaresUnited Kingdom2026-05-22Truhlar And Truhlar Attys RENEWAL10Anna Fali
1024Mayumi KolmetzRussia2026-06-15Commercial Press PROPOSAL43Amy Elsner
1025Kaitlin OstroskyFrance2026-06-15Truhlar And Truhlar Attys NEW35Onyama Limba
1026Clifford RimCanada2026-05-26Morlong Associates NEGOTIATION14Bernardo Dominic
1027Ashley DoeBrazil2026-06-14Truhlar And Truhlar Attys QUALIFIED93Ivan Magalhaes
1028Jeanfrancois VenereRussia2026-05-27King, Christopher A Esq NEGOTIATION1Asiya Javayant
1029Greenwood BologniaFrance2026-06-08Rangoni Of Florence UNQUALIFIED77Ioni Bowcher
1030Misaki RoysterRussia2026-05-21Chemel, James L Cpa RENEWAL21Amy Elsner
1031Ashley DoeArgentina2026-05-26Printing Dimensions UNQUALIFIED64Onyama Limba
1032Cody SaylorsSpain2026-05-22Feiner Bros QUALIFIED84Bernardo Dominic
1033Kadeem FlosiCanada2026-05-31Buckley Miller Wright PROPOSAL63Onyama Limba
1034Alejandro PerinBrazil2026-06-07Morlong Associates NEW15Elwin Sharvill
1035Maisha RulapaughRussia2026-05-22King, Christopher A Esq RENEWAL85Anna Fali
1036Salvatore StockhamItaly2026-05-31Buckley Miller Wright RENEWAL5Onyama Limba
1037Octavia MaletItaly2026-05-26Printing Dimensions UNQUALIFIED68Stephen Shaw
1038Octavia MaletBrazil2026-06-02Buckley Miller Wright QUALIFIED25Stephen Shaw
1039Ashley DoeSpain2026-05-28Feltz Printing Service NEGOTIATION93Stephen Shaw
1040Jefferson SchemmerJapan2026-05-20Morlong Associates QUALIFIED49Onyama Limba
1041Maria MarrierGermany2026-05-27Truhlar And Truhlar Attys NEW6Ioni Bowcher
1042Ashley DoeJapan2026-06-17Rousseaux, Michael Esq RENEWAL48Asiya Javayant
1043Aruna FigeroaAustralia2026-05-29Chanay, Jeffrey A Esq NEW5Onyama Limba
1044Adams MorascaFrance2026-05-21Truhlar And Truhlar Attys UNQUALIFIED66Asiya Javayant
1045Cody SaylorsItaly2026-06-03Morlong Associates QUALIFIED68Elwin Sharvill
1046David DarakjyAustralia2026-05-19Feltz Printing Service RENEWAL64Ioni Bowcher
1047Aditya KuskoGermany2026-05-20Printing Dimensions UNQUALIFIED90Elwin Sharvill
1048Antonio CaudyItaly2026-06-03King, Christopher A Esq PROPOSAL1Stephen Shaw
1049Alejandro PerinAustralia2026-06-15Truhlar And Truhlar Attys NEGOTIATION6Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Jones VocelkaIndiaOnyama Limba PROPOSAL
Aruna FigeroaBrazilOnyama Limba PROPOSAL
Jefferson SchemmerJapanAnna Fali NEW
Kadeem FlosiCanadaAnna Fali UNQUALIFIED
Aditya KuskoFranceIvan Magalhaes RENEWAL
Cody SaylorsArgentinaBernardo Dominic NEGOTIATION
Misaki RoysterAustraliaAnna Fali NEW
Clifford RimUnited KingdomXuxue Feng UNQUALIFIED
Sinclair WaycottItalyBernardo Dominic NEW
Mujtaba NickaBrazilAmy Elsner NEGOTIATION
Deepesh ChuiArgentinaIvan Magalhaes QUALIFIED
Jeanfrancois VenereArgentinaAsiya Javayant NEW
Chavez BriddickJapanOnyama Limba UNQUALIFIED
Costa DilliardUnited KingdomIvan Magalhaes NEW
David DarakjyGermanyElwin Sharvill UNQUALIFIED
Aruna FigeroaCanadaAmy Elsner QUALIFIED
Clifford RimFranceAsiya Javayant UNQUALIFIED
Tony FollerItalyElwin Sharvill NEGOTIATION
Aditya KuskoGermanyElwin Sharvill RENEWAL
Aruna FigeroaAustraliaOnyama Limba NEGOTIATION
Claire TollnerCanadaStephen Shaw NEGOTIATION
Emily WhobreyItalyAmy Elsner QUALIFIED
Silvio SlusarskiGermanyIvan Magalhaes NEGOTIATION
Sinclair WaycottUnited KingdomStephen Shaw PROPOSAL
Kaitlin OstroskyAustraliaOnyama Limba NEW
Smith GlickJapanAsiya Javayant NEGOTIATION
Salvatore StockhamSpainIoni Bowcher PROPOSAL
Murillo MaletCanadaStephen Shaw NEW
Murillo MaletArgentinaIvan Magalhaes PROPOSAL
Maria MarrierItalyXuxue Feng NEW
Leon OldroydCanadaIvan Magalhaes NEGOTIATION
Clifford RimArgentinaElwin Sharvill NEW
Cody SaylorsSpainElwin Sharvill NEGOTIATION
Claire TollnerFranceBernardo Dominic NEW
Nicolas IturbideJapanAsiya Javayant PROPOSAL
Nicolas IturbideUnited KingdomStephen Shaw RENEWAL
Salvatore StockhamUnited KingdomOnyama Limba RENEWAL
Alejandro PerinJapanAnna Fali QUALIFIED
Rodrigues CampainBrazilAnna Fali QUALIFIED
Greenwood BologniaFranceIoni Bowcher NEW
Kaitlin OstroskyJapanBernardo Dominic PROPOSAL
Morrow RutaIndiaBernardo Dominic UNQUALIFIED
Kadeem FlosiUnited KingdomOnyama Limba QUALIFIED
Rodrigues CampainFranceStephen Shaw QUALIFIED
Stacey MacleadSpainElwin Sharvill QUALIFIED
Leja CaldareraSpainOnyama Limba NEW
Juan WieserArgentinaStephen Shaw PROPOSAL
Jones VocelkaSpainXuxue Feng NEGOTIATION
Chavez BriddickIndiaAsiya Javayant PROPOSAL
Stacey MacleadRussiaAnna Fali NEW
Frozen Columns
Name
Misaki Royster
Juan Wieser
Clifford Rim
Izzy Garufi
Morrow Ruta
Juan Wieser
Chavez Briddick
Jefferson Schemmer
Sinclair Waycott
Silvio Slusarski
Johnson Sergi
Stacey Maclead
Arvin Albares
Alejandro Perin
Jeanfrancois Venere
Johnson Sergi
Faith Gillian
Costa Dilliard
David Darakjy
Tony Foller
Ricardo Gaucho
Aika Inouye
Johnson Sergi
Jefferson Schemmer
Ashley Doe
Mayumi Kolmetz
Faith Gillian
Leon Oldroyd
Sinclair Waycott
Clifford Rim
Silvio Slusarski
Cody Saylors
Izzy Garufi
Murillo Malet
James Butt
Jennifer Amigon
Darci Poquette
Johnson Sergi
Misaki Royster
Izzy Garufi
Smith Glick
Emily Whobrey
Arvin Albares
Deepesh Chui
Wickens Nestle
Sinclair Waycott
Deepesh Chui
Alejandro Perin
Adams Morasca
Leja Caldarera
IdCountryDate
1000Japan2026-05-30
1001Spain2026-05-28
1002Germany2026-05-31
1003Brazil2026-05-24
1004Japan2026-06-05
1005Argentina2026-05-21
1006Argentina2026-05-24
1007Argentina2026-06-15
1008Spain2026-05-23
1009Italy2026-05-20
1010Australia2026-05-27
1011Italy2026-05-26
1012France2026-05-29
1013Brazil2026-06-10
1014Canada2026-06-08
1015India2026-06-10
1016Canada2026-06-16
1017Spain2026-06-09
1018Argentina2026-05-21
1019Italy2026-05-30
1020Japan2026-06-11
1021Argentina2026-06-14
1022Japan2026-05-29
1023Germany2026-06-10
1024Brazil2026-05-26
1025Germany2026-06-07
1026Brazil2026-05-29
1027India2026-06-11
1028Spain2026-05-22
1029Australia2026-06-05
1030Japan2026-06-13
1031Italy2026-05-28
1032Germany2026-05-20
1033Australia2026-05-26
1034Italy2026-06-17
1035Brazil2026-06-05
1036India2026-05-19
1037Spain2026-06-03
1038Spain2026-06-04
1039Germany2026-05-29
1040France2026-06-15
1041Australia2026-05-19
1042India2026-06-14
1043Argentina2026-05-25
1044Australia2026-06-12
1045Argentina2026-05-26
1046Germany2026-06-07
1047Japan2026-06-16
1048Spain2026-05-20
1049Brazil2026-05-21

On-Demand Data

NameIdCountryDate
James Butt1000Japan2026-06-13
Mujtaba Nicka1001United Kingdom2026-06-11
Aika Inouye1002Argentina2026-05-25
Emily Whobrey1003India2026-06-02
David Darakjy1004Germany2026-05-31
Misaki Royster1005Italy2026-06-10
Aruna Figeroa1006Argentina2026-05-31
Claire Tollner1007Japan2026-06-05
Cody Saylors1008Argentina2026-06-11
Johnson Sergi1009Canada2026-06-13
Aruna Figeroa1010Argentina2026-05-26
Aika Inouye1011Japan2026-05-23
Aditya Kusko1012Japan2026-06-16
Sinclair Waycott1013Germany2026-05-23
Izzy Garufi1014Germany2026-06-03
Aditya Kusko1015Canada2026-06-03
James Butt1016Australia2026-06-08
Misaki Royster1017United Kingdom2026-06-17
Aruna Figeroa1018Argentina2026-06-02
Tony Foller1019France2026-06-02
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jefferson SchemmerArgentinaAnna Fali PROPOSAL
Jennifer AmigonGermanyOnyama Limba NEW
Salvatore StockhamJapanAsiya Javayant RENEWAL
Jones VocelkaArgentinaAnna Fali QUALIFIED
Deepesh ChuiRussiaIvan Magalhaes UNQUALIFIED
Misaki RoysterIndiaAsiya Javayant QUALIFIED
Maisha RulapaughSpainAnna Fali NEGOTIATION
Wickens NestleUnited KingdomElwin Sharvill NEGOTIATION
David DarakjyItalyOnyama Limba RENEWAL
Chavez BriddickBrazilIvan Magalhaes PROPOSAL
Aditya KuskoSpainXuxue Feng QUALIFIED
Salvatore StockhamRussiaOnyama Limba UNQUALIFIED
Misaki RoysterJapanStephen Shaw PROPOSAL
Sinclair WaycottItalyAnna Fali NEGOTIATION
Salvatore StockhamSpainXuxue Feng UNQUALIFIED
Octavia MaletAustraliaStephen Shaw NEW
Johnson SergiAustraliaXuxue Feng UNQUALIFIED
Greenwood BologniaAustraliaAsiya Javayant RENEWAL
Wickens NestleArgentinaElwin Sharvill UNQUALIFIED
Mujtaba NickaBrazilAmy Elsner NEGOTIATION
Rodrigues CampainArgentinaStephen Shaw RENEWAL
Silvio SlusarskiBrazilElwin Sharvill NEGOTIATION
Morrow RutaCanadaIvan Magalhaes QUALIFIED
Morrow RutaIndiaAmy Elsner RENEWAL
Jeanfrancois VenereItalyAmy Elsner RENEWAL
Juan WieserGermanyElwin Sharvill RENEWAL
Leon OldroydBrazilAmy Elsner NEGOTIATION
Octavia MaletBrazilAsiya Javayant NEGOTIATION
Alejandro PerinRussiaIvan Magalhaes QUALIFIED
Aika InouyeGermanyStephen Shaw UNQUALIFIED
Mujtaba NickaIndiaIoni Bowcher UNQUALIFIED
Aika InouyeItalyAmy Elsner QUALIFIED
Darci PoquetteCanadaAnna Fali NEW
Ricardo GauchoUnited KingdomBernardo Dominic UNQUALIFIED
Leja CaldareraJapanAmy Elsner NEW
Salvatore StockhamJapanOnyama Limba UNQUALIFIED
Tony FollerSpainElwin Sharvill UNQUALIFIED
Murillo MaletRussiaAmy Elsner NEGOTIATION
Leja CaldareraFranceAnna Fali UNQUALIFIED
Morrow RutaArgentinaAsiya Javayant 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>