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
Octavia MaletIndiaXuxue Feng RENEWAL
Mujtaba NickaRussiaBernardo Dominic QUALIFIED
Costa DilliardItalyAnna Fali QUALIFIED
Misaki RoysterFranceStephen Shaw NEW
David DarakjySpainElwin Sharvill NEGOTIATION
Adams MorascaRussiaElwin Sharvill NEW
Mayumi KolmetzJapanXuxue Feng QUALIFIED
Jones VocelkaGermanyBernardo Dominic UNQUALIFIED
Claire TollnerAustraliaAsiya Javayant UNQUALIFIED
Costa DilliardCanadaBernardo Dominic QUALIFIED
Jefferson SchemmerAustraliaIvan Magalhaes QUALIFIED
Octavia MaletJapanOnyama Limba NEGOTIATION
Ricardo GauchoRussiaIvan Magalhaes RENEWAL
Jennifer AmigonCanadaAnna Fali NEGOTIATION
Maria MarrierRussiaBernardo Dominic RENEWAL
Alejandro PerinRussiaAnna Fali QUALIFIED
Adams MorascaIndiaIvan Magalhaes NEW
Clifford RimJapanStephen Shaw NEGOTIATION
Chavez BriddickJapanIvan Magalhaes UNQUALIFIED
Ashley DoeJapanElwin Sharvill RENEWAL
Octavia MaletFranceIoni Bowcher NEW
Adams MorascaGermanyXuxue Feng RENEWAL
Ivar PaprockiArgentinaIoni Bowcher QUALIFIED
Misaki RoysterIndiaStephen Shaw RENEWAL
Rodrigues CampainArgentinaAnna Fali QUALIFIED
Isabel BowleyArgentinaStephen Shaw NEW
Ashley DoeItalyIvan Magalhaes RENEWAL
Mayumi KolmetzCanadaIoni Bowcher QUALIFIED
James ButtSpainElwin Sharvill PROPOSAL
Greenwood BologniaAustraliaIoni Bowcher PROPOSAL
Aditya KuskoJapanOnyama Limba PROPOSAL
Misaki RoysterFranceOnyama Limba NEGOTIATION
Octavia MaletBrazilIoni Bowcher PROPOSAL
Salvatore StockhamItalyXuxue Feng NEGOTIATION
Ivar PaprockiGermanyOnyama Limba NEGOTIATION
Isabel BowleyCanadaIvan Magalhaes RENEWAL
Leja CaldareraRussiaAmy Elsner RENEWAL
Jefferson SchemmerIndiaStephen Shaw NEGOTIATION
Jefferson SchemmerRussiaIvan Magalhaes NEW
Stacey MacleadCanadaStephen Shaw RENEWAL
Mayumi KolmetzUnited KingdomBernardo Dominic QUALIFIED
Mayumi KolmetzFranceXuxue Feng PROPOSAL
Jennifer AmigonFranceBernardo Dominic RENEWAL
Julie StensethSpainAmy Elsner NEGOTIATION
Misaki RoysterItalyAnna Fali NEW
Aruna FigeroaRussiaAnna Fali UNQUALIFIED
Maisha RulapaughItalyStephen Shaw UNQUALIFIED
Maisha RulapaughCanadaStephen Shaw PROPOSAL
Julie StensethFranceBernardo Dominic UNQUALIFIED
Morrow RutaBrazilIoni Bowcher NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Morrow RutaGermanyElwin Sharvill UNQUALIFIED
Mayumi KolmetzRussiaIvan Magalhaes QUALIFIED
Juan WieserCanadaAnna Fali NEGOTIATION
Aditya KuskoGermanyOnyama Limba NEW
Smith GlickCanadaAmy Elsner RENEWAL
Jefferson SchemmerArgentinaOnyama Limba NEW
Salvatore StockhamCanadaIoni Bowcher QUALIFIED
Costa DilliardRussiaOnyama Limba QUALIFIED
Kadeem FlosiFranceAnna Fali RENEWAL
Johnson SergiSpainBernardo Dominic PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Claire TollnerBrazil2026-06-15Rangoni Of Florence RENEWAL51Stephen Shaw
1001Silvio SlusarskiUnited Kingdom2026-06-17Truhlar And Truhlar Attys PROPOSAL58Ioni Bowcher
1002Nicolas IturbideUnited Kingdom2026-06-13Morlong Associates UNQUALIFIED51Anna Fali
1003Ricardo GauchoItaly2026-06-01Printing Dimensions NEW40Elwin Sharvill
1004Tony FollerAustralia2026-06-14Dorl, James J Esq RENEWAL55Bernardo Dominic
1005Maria MarrierSpain2026-06-21King, Christopher A Esq RENEWAL95Anna Fali
1006Silvio SlusarskiRussia2026-05-30Chapman, Ross E Esq NEW73Ivan Magalhaes
1007Mujtaba NickaCanada2026-06-08Printing Dimensions NEGOTIATION77Asiya Javayant
1008Maisha RulapaughGermany2026-06-08Commercial Press UNQUALIFIED24Ioni Bowcher
1009Juan WieserArgentina2026-05-26Commercial Press QUALIFIED45Anna Fali
1010Aruna FigeroaJapan2026-06-07Buckley Miller Wright PROPOSAL33Asiya Javayant
1011Ivar PaprockiItaly2026-06-11Feiner Bros RENEWAL83Bernardo Dominic
1012Mujtaba NickaSpain2026-05-23Feltz Printing Service NEGOTIATION83Anna Fali
1013Ivar PaprockiRussia2026-06-10Dorl, James J Esq QUALIFIED0Ioni Bowcher
1014Julie StensethIndia2026-06-21Morlong Associates NEGOTIATION84Ivan Magalhaes
1015Octavia MaletItaly2026-06-01King, Christopher A Esq NEGOTIATION99Ioni Bowcher
1016Murillo MaletUnited Kingdom2026-06-20Buckley Miller Wright QUALIFIED35Elwin Sharvill
1017Tony FollerCanada2026-05-23Feltz Printing Service NEW78Ioni Bowcher
1018Izzy GarufiIndia2026-06-04Dorl, James J Esq RENEWAL3Amy Elsner
1019Jeanfrancois VenereUnited Kingdom2026-05-30Feiner Bros RENEWAL64Xuxue Feng
1020Aditya KuskoBrazil2026-05-27Printing Dimensions QUALIFIED20Asiya Javayant
1021Jeanfrancois VenereGermany2026-06-21Printing Dimensions RENEWAL7Asiya Javayant
1022Rodrigues CampainFrance2026-05-30Morlong Associates PROPOSAL65Xuxue Feng
1023Octavia MaletIndia2026-05-29Printing Dimensions NEW84Anna Fali
1024Isabel BowleyAustralia2026-06-07Printing Dimensions QUALIFIED30Ivan Magalhaes
1025Wickens NestleItaly2026-06-07Chemel, James L Cpa QUALIFIED66Elwin Sharvill
1026Aruna FigeroaFrance2026-06-01Printing Dimensions NEW81Elwin Sharvill
1027James ButtGermany2026-06-17Feiner Bros RENEWAL43Bernardo Dominic
1028Tony FollerIndia2026-06-14Feltz Printing Service NEGOTIATION77Onyama Limba
1029Nicolas IturbideItaly2026-05-24Truhlar And Truhlar Attys PROPOSAL2Ivan Magalhaes
1030Aditya KuskoCanada2026-05-27Dorl, James J Esq UNQUALIFIED85Onyama Limba
1031Mayumi KolmetzItaly2026-06-10Morlong Associates UNQUALIFIED49Stephen Shaw
1032Murillo MaletAustralia2026-06-19Dorl, James J Esq NEW26Bernardo Dominic
1033Ivar PaprockiFrance2026-06-08Chapman, Ross E Esq QUALIFIED47Bernardo Dominic
1034Francesco ShinkoJapan2026-06-13Feiner Bros NEGOTIATION48Ivan Magalhaes
1035Julie StensethJapan2026-05-26Morlong Associates QUALIFIED96Elwin Sharvill
1036Aditya KuskoIndia2026-05-25Chanay, Jeffrey A Esq PROPOSAL56Onyama Limba
1037Salvatore StockhamRussia2026-06-14Chemel, James L Cpa QUALIFIED22Elwin Sharvill
1038Juan WieserFrance2026-05-26Rousseaux, Michael Esq RENEWAL37Elwin Sharvill
1039Smith GlickGermany2026-06-10Buckley Miller Wright QUALIFIED24Elwin Sharvill
1040David DarakjyRussia2026-06-07Buckley Miller Wright UNQUALIFIED47Ivan Magalhaes
1041Mujtaba NickaFrance2026-06-18Commercial Press NEW96Xuxue Feng
1042Leja CaldareraUnited Kingdom2026-06-06Buckley Miller Wright QUALIFIED62Elwin Sharvill
1043Mayumi KolmetzGermany2026-06-04Buckley Miller Wright NEW12Amy Elsner
1044Wickens NestleGermany2026-06-12Chanay, Jeffrey A Esq PROPOSAL35Ioni Bowcher
1045Jefferson SchemmerJapan2026-06-14King, Christopher A Esq PROPOSAL81Ioni Bowcher
1046Jones VocelkaBrazil2026-06-15Rangoni Of Florence QUALIFIED98Anna Fali
1047Rodrigues CampainIndia2026-06-15Feiner Bros NEGOTIATION64Onyama Limba
1048Adams MorascaUnited Kingdom2026-06-20Dorl, James J Esq NEW25Ioni Bowcher
1049Misaki RoysterJapan2026-06-12Rangoni Of Florence NEW81Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Ivar PaprockiAustraliaAnna Fali UNQUALIFIED
Kadeem FlosiGermanyIvan Magalhaes NEW
Kadeem FlosiIndiaStephen Shaw RENEWAL
Mayumi KolmetzIndiaElwin Sharvill PROPOSAL
Kaitlin OstroskyAustraliaBernardo Dominic RENEWAL
Kaitlin OstroskyArgentinaIvan Magalhaes RENEWAL
Wickens NestleSpainStephen Shaw UNQUALIFIED
Cody SaylorsRussiaIoni Bowcher NEGOTIATION
Clifford RimIndiaIvan Magalhaes PROPOSAL
Misaki RoysterBrazilOnyama Limba QUALIFIED
Salvatore StockhamCanadaStephen Shaw NEW
Clifford RimGermanyBernardo Dominic UNQUALIFIED
Faith GillianBrazilAnna Fali UNQUALIFIED
Emily WhobreyGermanyAsiya Javayant NEGOTIATION
Aditya KuskoBrazilBernardo Dominic NEW
Chavez BriddickRussiaBernardo Dominic QUALIFIED
Adams MorascaGermanyAnna Fali RENEWAL
Maria MarrierArgentinaIoni Bowcher NEGOTIATION
Adams MorascaBrazilAnna Fali NEW
Ashley DoeRussiaOnyama Limba PROPOSAL
Antonio CaudyArgentinaStephen Shaw RENEWAL
Morrow RutaAustraliaIoni Bowcher QUALIFIED
Kaitlin OstroskyCanadaStephen Shaw QUALIFIED
Morrow RutaJapanElwin Sharvill RENEWAL
Jones VocelkaSpainAmy Elsner NEW
Tony FollerSpainStephen Shaw RENEWAL
Johnson SergiSpainAsiya Javayant QUALIFIED
Silvio SlusarskiBrazilAnna Fali QUALIFIED
David DarakjyFranceIoni Bowcher PROPOSAL
Adams MorascaAustraliaIvan Magalhaes PROPOSAL
Chavez BriddickGermanyOnyama Limba QUALIFIED
Clifford RimFranceXuxue Feng UNQUALIFIED
Ivar PaprockiUnited KingdomIvan Magalhaes PROPOSAL
Greenwood BologniaBrazilAmy Elsner RENEWAL
Aditya KuskoAustraliaAnna Fali RENEWAL
Sinclair WaycottUnited KingdomIvan Magalhaes PROPOSAL
Isabel BowleyUnited KingdomXuxue Feng QUALIFIED
Aruna FigeroaArgentinaElwin Sharvill UNQUALIFIED
Ricardo GauchoAustraliaXuxue Feng NEGOTIATION
Antonio CaudyIndiaAnna Fali QUALIFIED
Juan WieserArgentinaIvan Magalhaes NEGOTIATION
Wickens NestleItalyStephen Shaw NEGOTIATION
Ivar PaprockiRussiaAnna Fali PROPOSAL
Smith GlickCanadaIvan Magalhaes NEGOTIATION
Adams MorascaIndiaAnna Fali NEW
Emily WhobreyAustraliaBernardo Dominic PROPOSAL
Cody SaylorsSpainAmy Elsner QUALIFIED
Aruna FigeroaItalyXuxue Feng PROPOSAL
Salvatore StockhamBrazilAmy Elsner PROPOSAL
Johnson SergiJapanOnyama Limba NEW
Frozen Columns
Name
Jennifer Amigon
Darci Poquette
Ivar Paprocki
Maisha Rulapaugh
Chavez Briddick
Aika Inouye
Faith Gillian
Silvio Slusarski
Salvatore Stockham
Leon Oldroyd
Sinclair Waycott
Kadeem Flosi
Misaki Royster
Silvio Slusarski
Emily Whobrey
Johnson Sergi
Ashley Doe
Kaitlin Ostrosky
Morrow Ruta
Costa Dilliard
Jennifer Amigon
Arvin Albares
Jennifer Amigon
Octavia Malet
Alejandro Perin
Aruna Figeroa
Misaki Royster
Murillo Malet
James Butt
Darci Poquette
Salvatore Stockham
Chavez Briddick
Ashley Doe
Cody Saylors
Clifford Rim
Arvin Albares
Greenwood Bolognia
Morrow Ruta
Sinclair Waycott
Costa Dilliard
Aruna Figeroa
Costa Dilliard
Emily Whobrey
Deepesh Chui
Johnson Sergi
Tony Foller
Leja Caldarera
Tony Foller
Greenwood Bolognia
Emily Whobrey
IdCountryDate
1000Germany2026-05-26
1001Germany2026-06-04
1002India2026-06-06
1003Italy2026-06-12
1004India2026-05-30
1005Argentina2026-05-27
1006India2026-06-15
1007Germany2026-05-25
1008Argentina2026-06-09
1009Spain2026-06-07
1010United Kingdom2026-05-31
1011Brazil2026-06-15
1012Italy2026-05-30
1013India2026-06-13
1014Germany2026-06-12
1015United Kingdom2026-06-03
1016Italy2026-06-02
1017Argentina2026-06-10
1018France2026-05-23
1019France2026-06-08
1020Canada2026-05-26
1021Argentina2026-06-16
1022Russia2026-06-20
1023Canada2026-06-20
1024Japan2026-06-04
1025France2026-05-30
1026Canada2026-06-09
1027France2026-06-15
1028France2026-06-15
1029France2026-06-05
1030Argentina2026-06-14
1031Australia2026-06-13
1032Australia2026-05-30
1033Spain2026-05-26
1034India2026-06-06
1035France2026-06-05
1036United Kingdom2026-05-28
1037Russia2026-06-14
1038India2026-05-28
1039Canada2026-06-21
1040Italy2026-06-17
1041Brazil2026-06-11
1042Australia2026-06-07
1043Australia2026-06-20
1044Argentina2026-05-31
1045Spain2026-05-24
1046Italy2026-06-01
1047India2026-06-13
1048United Kingdom2026-06-02
1049Brazil2026-06-08

On-Demand Data

NameIdCountryDate
Greenwood Bolognia1000Australia2026-05-28
Nicolas Iturbide1001Spain2026-06-08
Antonio Caudy1002France2026-05-23
Silvio Slusarski1003Australia2026-06-02
Clifford Rim1004Argentina2026-06-02
Maria Marrier1005United Kingdom2026-06-14
Morrow Ruta1006Russia2026-06-18
Octavia Malet1007Russia2026-06-06
Alejandro Perin1008Russia2026-06-16
Salvatore Stockham1009Italy2026-06-08
Maria Marrier1010Brazil2026-06-20
Jones Vocelka1011Argentina2026-06-01
Rodrigues Campain1012Spain2026-05-25
Murillo Malet1013Australia2026-06-04
Leon Oldroyd1014Argentina2026-06-05
Greenwood Bolognia1015Japan2026-06-07
Isabel Bowley1016Canada2026-06-19
Tony Foller1017Spain2026-05-23
Alejandro Perin1018Japan2026-05-24
Aditya Kusko1019India2026-06-04
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Darci PoquetteBrazilAsiya Javayant NEGOTIATION
Chavez BriddickUnited KingdomAnna Fali PROPOSAL
Maria MarrierJapanAnna Fali NEW
Emily WhobreyBrazilOnyama Limba UNQUALIFIED
Greenwood BologniaGermanyBernardo Dominic NEGOTIATION
Julie StensethIndiaIvan Magalhaes NEW
Ashley DoeGermanyAmy Elsner QUALIFIED
Johnson SergiAustraliaIvan Magalhaes NEW
Ricardo GauchoBrazilStephen Shaw RENEWAL
James ButtFranceBernardo Dominic UNQUALIFIED
Morrow RutaItalyElwin Sharvill PROPOSAL
Juan WieserRussiaOnyama Limba PROPOSAL
Salvatore StockhamSpainXuxue Feng QUALIFIED
Silvio SlusarskiGermanyIoni Bowcher NEW
Claire TollnerRussiaXuxue Feng PROPOSAL
Ashley DoeCanadaBernardo Dominic UNQUALIFIED
Rodrigues CampainAustraliaAnna Fali RENEWAL
Kadeem FlosiAustraliaOnyama Limba NEW
Misaki RoysterGermanyXuxue Feng PROPOSAL
David DarakjyRussiaIvan Magalhaes PROPOSAL
Deepesh ChuiFranceIvan Magalhaes NEGOTIATION
Julie StensethIndiaIvan Magalhaes QUALIFIED
Adams MorascaItalyBernardo Dominic RENEWAL
Sinclair WaycottRussiaElwin Sharvill RENEWAL
Emily WhobreyIndiaIvan Magalhaes QUALIFIED
Jones VocelkaCanadaIvan Magalhaes UNQUALIFIED
Arvin AlbaresAustraliaXuxue Feng QUALIFIED
Octavia MaletUnited KingdomIvan Magalhaes NEGOTIATION
Johnson SergiUnited KingdomAsiya Javayant UNQUALIFIED
Jeanfrancois VenereIndiaBernardo Dominic UNQUALIFIED
Wickens NestleUnited KingdomIoni Bowcher UNQUALIFIED
Ashley DoeArgentinaIoni Bowcher NEW
Darci PoquetteAustraliaStephen Shaw QUALIFIED
Maria MarrierSpainElwin Sharvill NEW
David DarakjyRussiaElwin Sharvill PROPOSAL
Aditya KuskoSpainAsiya Javayant UNQUALIFIED
Cody SaylorsUnited KingdomBernardo Dominic QUALIFIED
Aika InouyeArgentinaAnna Fali QUALIFIED
Chavez BriddickItalyElwin Sharvill NEGOTIATION
Aditya KuskoRussiaElwin Sharvill 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>