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
Ivar PaprockiUnited KingdomXuxue Feng RENEWAL
Munro FerenczItalyIvan Magalhaes NEW
Octavia MaletAustraliaBernardo Dominic UNQUALIFIED
Kaitlin OstroskyFranceAsiya Javayant NEW
Aditya KuskoArgentinaIvan Magalhaes NEW
Aika InouyeFranceAmy Elsner RENEWAL
Jennifer AmigonItalyStephen Shaw UNQUALIFIED
Jennifer AmigonCanadaOnyama Limba RENEWAL
Izzy GarufiIndiaOnyama Limba PROPOSAL
Alejandro PerinSpainOnyama Limba RENEWAL
Emily WhobreyGermanyAnna Fali NEGOTIATION
Kadeem FlosiArgentinaAsiya Javayant NEW
Jeanfrancois VenereFranceAsiya Javayant RENEWAL
Nicolas IturbideSpainElwin Sharvill RENEWAL
Faith GillianIndiaOnyama Limba RENEWAL
Adams MorascaRussiaAnna Fali NEW
Ricardo GauchoAustraliaXuxue Feng RENEWAL
Jones VocelkaGermanyAmy Elsner QUALIFIED
Kaitlin OstroskyIndiaIvan Magalhaes NEW
Chavez BriddickJapanAmy Elsner PROPOSAL
Juan WieserJapanAnna Fali PROPOSAL
Aruna FigeroaRussiaAmy Elsner QUALIFIED
Stacey MacleadRussiaAnna Fali RENEWAL
David DarakjyArgentinaStephen Shaw UNQUALIFIED
Jennifer AmigonRussiaIvan Magalhaes QUALIFIED
Leja CaldareraCanadaAnna Fali RENEWAL
Nicolas IturbideIndiaAnna Fali NEW
James ButtSpainBernardo Dominic UNQUALIFIED
Isabel BowleyIndiaAsiya Javayant UNQUALIFIED
Julie StensethIndiaBernardo Dominic UNQUALIFIED
Leon OldroydJapanElwin Sharvill RENEWAL
Mayumi KolmetzBrazilAnna Fali NEW
Mujtaba NickaIndiaAsiya Javayant QUALIFIED
Chavez BriddickIndiaOnyama Limba RENEWAL
Kaitlin OstroskyRussiaXuxue Feng NEGOTIATION
Juan WieserSpainStephen Shaw NEW
James ButtArgentinaBernardo Dominic RENEWAL
Jones VocelkaAustraliaStephen Shaw NEGOTIATION
Maisha RulapaughGermanyStephen Shaw PROPOSAL
Deepesh ChuiRussiaIvan Magalhaes QUALIFIED
Arvin AlbaresSpainOnyama Limba NEW
Clifford RimRussiaAsiya Javayant UNQUALIFIED
Aruna FigeroaRussiaIoni Bowcher NEW
Stacey MacleadSpainAsiya Javayant UNQUALIFIED
Antonio CaudyUnited KingdomBernardo Dominic NEGOTIATION
Alejandro PerinArgentinaElwin Sharvill NEGOTIATION
Maria MarrierIndiaStephen Shaw NEW
Maisha RulapaughIndiaIoni Bowcher UNQUALIFIED
Maisha RulapaughUnited KingdomElwin Sharvill UNQUALIFIED
Arvin AlbaresGermanyBernardo Dominic NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Rodrigues CampainGermanyAnna Fali RENEWAL
Claire TollnerItalyXuxue Feng PROPOSAL
Claire TollnerAustraliaAnna Fali QUALIFIED
Alejandro PerinJapanAnna Fali RENEWAL
Mayumi KolmetzUnited KingdomStephen Shaw PROPOSAL
Claire TollnerArgentinaElwin Sharvill RENEWAL
Stacey MacleadIndiaElwin Sharvill RENEWAL
Misaki RoysterItalyAnna Fali NEW
Deepesh ChuiItalyStephen Shaw PROPOSAL
Clifford RimFranceAnna Fali PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Greenwood BologniaGermany2026-05-22Printing Dimensions QUALIFIED37Amy Elsner
1001Cody SaylorsBrazil2026-05-21Dorl, James J Esq NEW18Anna Fali
1002Salvatore StockhamGermany2026-05-25Commercial Press PROPOSAL94Stephen Shaw
1003Darci PoquetteGermany2026-05-07Truhlar And Truhlar Attys PROPOSAL34Anna Fali
1004Maisha RulapaughFrance2026-05-05Dorl, James J Esq PROPOSAL20Stephen Shaw
1005Salvatore StockhamCanada2026-05-31Morlong Associates UNQUALIFIED84Ioni Bowcher
1006Maria MarrierGermany2026-05-14Buckley Miller Wright QUALIFIED60Ivan Magalhaes
1007Jones VocelkaGermany2026-05-24Rangoni Of Florence NEGOTIATION76Asiya Javayant
1008Costa DilliardItaly2026-05-23Buckley Miller Wright QUALIFIED36Elwin Sharvill
1009Murillo MaletIndia2026-05-05King, Christopher A Esq NEW85Amy Elsner
1010Darci PoquetteJapan2026-05-08Truhlar And Truhlar Attys NEGOTIATION59Amy Elsner
1011Darci PoquetteSpain2026-05-29Chapman, Ross E Esq UNQUALIFIED96Ioni Bowcher
1012Francesco ShinkoArgentina2026-05-28Buckley Miller Wright RENEWAL33Ioni Bowcher
1013Nicolas IturbideSpain2026-05-27Rousseaux, Michael Esq NEW95Asiya Javayant
1014Octavia MaletJapan2026-05-06Feiner Bros RENEWAL47Amy Elsner
1015Deepesh ChuiFrance2026-05-17Commercial Press NEW30Elwin Sharvill
1016Clifford RimCanada2026-05-13Morlong Associates NEGOTIATION99Elwin Sharvill
1017Morrow RutaItaly2026-05-08Printing Dimensions RENEWAL29Onyama Limba
1018Mujtaba NickaArgentina2026-05-17King, Christopher A Esq NEGOTIATION19Ioni Bowcher
1019Maria MarrierAustralia2026-05-10Buckley Miller Wright UNQUALIFIED67Asiya Javayant
1020Izzy GarufiBrazil2026-06-01Morlong Associates UNQUALIFIED38Anna Fali
1021David DarakjySpain2026-05-25Commercial Press NEW84Stephen Shaw
1022Smith GlickIndia2026-05-14Chapman, Ross E Esq UNQUALIFIED64Ioni Bowcher
1023Arvin AlbaresUnited Kingdom2026-05-24Benton, John B Jr QUALIFIED7Asiya Javayant
1024Nicolas IturbideBrazil2026-05-22Rousseaux, Michael Esq NEW49Ioni Bowcher
1025Stacey MacleadArgentina2026-05-15Dorl, James J Esq QUALIFIED43Anna Fali
1026Claire TollnerUnited Kingdom2026-06-03Rangoni Of Florence QUALIFIED14Xuxue Feng
1027Aika InouyeRussia2026-05-05Rangoni Of Florence QUALIFIED36Asiya Javayant
1028Maisha RulapaughFrance2026-06-01Dorl, James J Esq NEW14Asiya Javayant
1029Kadeem FlosiCanada2026-05-24Rousseaux, Michael Esq PROPOSAL8Bernardo Dominic
1030Johnson SergiFrance2026-05-13Feltz Printing Service QUALIFIED91Elwin Sharvill
1031Murillo MaletJapan2026-05-27Morlong Associates NEW55Bernardo Dominic
1032Octavia MaletIndia2026-05-19Chemel, James L Cpa NEGOTIATION56Amy Elsner
1033Julie StensethUnited Kingdom2026-06-03Dorl, James J Esq NEW71Ivan Magalhaes
1034Claire TollnerSpain2026-05-06King, Christopher A Esq PROPOSAL80Ioni Bowcher
1035Arvin AlbaresJapan2026-06-02Dorl, James J Esq NEGOTIATION44Amy Elsner
1036Ricardo GauchoGermany2026-05-10Rangoni Of Florence NEGOTIATION97Amy Elsner
1037Tony FollerGermany2026-05-28Buckley Miller Wright RENEWAL57Stephen Shaw
1038Claire TollnerAustralia2026-06-02Chanay, Jeffrey A Esq QUALIFIED95Asiya Javayant
1039Jones VocelkaFrance2026-05-30Feltz Printing Service PROPOSAL89Xuxue Feng
1040Rodrigues CampainGermany2026-06-03Chemel, James L Cpa PROPOSAL29Stephen Shaw
1041Jefferson SchemmerIndia2026-05-11Chapman, Ross E Esq NEW74Amy Elsner
1042Kaitlin OstroskyIndia2026-06-01Morlong Associates UNQUALIFIED25Xuxue Feng
1043Cody SaylorsBrazil2026-05-08King, Christopher A Esq RENEWAL56Ioni Bowcher
1044Maisha RulapaughArgentina2026-05-09Commercial Press NEGOTIATION75Amy Elsner
1045Nicolas IturbideSpain2026-05-11Truhlar And Truhlar Attys QUALIFIED83Stephen Shaw
1046Smith GlickBrazil2026-05-10Chapman, Ross E Esq RENEWAL35Amy Elsner
1047Darci PoquetteGermany2026-05-28Chapman, Ross E Esq PROPOSAL74Asiya Javayant
1048Kaitlin OstroskyJapan2026-06-01Chanay, Jeffrey A Esq RENEWAL10Anna Fali
1049Costa DilliardAustralia2026-05-24King, Christopher A Esq QUALIFIED83Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Mujtaba NickaIndiaOnyama Limba RENEWAL
Nicolas IturbideJapanXuxue Feng NEW
Salvatore StockhamGermanyIoni Bowcher NEW
David DarakjyBrazilAsiya Javayant NEW
Deepesh ChuiArgentinaOnyama Limba NEW
Claire TollnerRussiaElwin Sharvill NEGOTIATION
Salvatore StockhamGermanyAsiya Javayant NEGOTIATION
Jones VocelkaArgentinaOnyama Limba NEGOTIATION
Ashley DoeIndiaBernardo Dominic NEW
Johnson SergiFranceAnna Fali PROPOSAL
Misaki RoysterArgentinaElwin Sharvill RENEWAL
Maria MarrierJapanOnyama Limba NEW
Maisha RulapaughSpainOnyama Limba QUALIFIED
Kadeem FlosiCanadaXuxue Feng QUALIFIED
Chavez BriddickFranceAmy Elsner UNQUALIFIED
Emily WhobreyItalyAnna Fali PROPOSAL
Claire TollnerSpainIoni Bowcher QUALIFIED
Ricardo GauchoCanadaIoni Bowcher UNQUALIFIED
Claire TollnerCanadaOnyama Limba PROPOSAL
Wickens NestleItalyAnna Fali NEW
Rodrigues CampainRussiaStephen Shaw UNQUALIFIED
Ricardo GauchoJapanElwin Sharvill NEW
Chavez BriddickRussiaStephen Shaw QUALIFIED
Jeanfrancois VenereItalyIoni Bowcher NEW
Costa DilliardGermanyXuxue Feng RENEWAL
Sinclair WaycottJapanAsiya Javayant NEW
Cody SaylorsAustraliaOnyama Limba QUALIFIED
Francesco ShinkoItalyAmy Elsner QUALIFIED
Izzy GarufiAustraliaIoni Bowcher NEW
Adams MorascaGermanyIoni Bowcher NEW
Aika InouyeBrazilXuxue Feng PROPOSAL
Maria MarrierRussiaXuxue Feng RENEWAL
Isabel BowleyUnited KingdomOnyama Limba NEGOTIATION
Alejandro PerinGermanyBernardo Dominic UNQUALIFIED
Faith GillianBrazilIoni Bowcher NEGOTIATION
Claire TollnerIndiaStephen Shaw QUALIFIED
Maria MarrierArgentinaOnyama Limba NEW
Chavez BriddickJapanOnyama Limba UNQUALIFIED
Faith GillianArgentinaIvan Magalhaes QUALIFIED
Jefferson SchemmerBrazilBernardo Dominic PROPOSAL
Aika InouyeFranceXuxue Feng QUALIFIED
Antonio CaudyGermanyBernardo Dominic PROPOSAL
Morrow RutaBrazilStephen Shaw NEGOTIATION
Julie StensethIndiaXuxue Feng QUALIFIED
Stacey MacleadBrazilIoni Bowcher QUALIFIED
Jennifer AmigonAustraliaAnna Fali QUALIFIED
Alejandro PerinItalyXuxue Feng NEW
Tony FollerIndiaAnna Fali PROPOSAL
Cody SaylorsJapanBernardo Dominic UNQUALIFIED
Jones VocelkaRussiaElwin Sharvill UNQUALIFIED
Frozen Columns
Name
Adams Morasca
Stacey Maclead
David Darakjy
Claire Tollner
Munro Ferencz
Murillo Malet
Ashley Doe
Faith Gillian
Murillo Malet
Arvin Albares
Mayumi Kolmetz
Francesco Shinko
Leon Oldroyd
Johnson Sergi
Mujtaba Nicka
Antonio Caudy
Emily Whobrey
Izzy Garufi
Nicolas Iturbide
Mujtaba Nicka
Clifford Rim
Antonio Caudy
Rodrigues Campain
Sinclair Waycott
Ricardo Gaucho
Mujtaba Nicka
Adams Morasca
Cody Saylors
David Darakjy
Maria Marrier
Clifford Rim
Clifford Rim
Kaitlin Ostrosky
Greenwood Bolognia
Munro Ferencz
Leja Caldarera
Leja Caldarera
Arvin Albares
Greenwood Bolognia
David Darakjy
Kadeem Flosi
Silvio Slusarski
Juan Wieser
Stacey Maclead
Mujtaba Nicka
Leon Oldroyd
Rodrigues Campain
Chavez Briddick
Faith Gillian
Kaitlin Ostrosky
IdCountryDate
1000Argentina2026-05-16
1001United Kingdom2026-05-17
1002Japan2026-05-12
1003Australia2026-05-22
1004United Kingdom2026-05-05
1005India2026-05-10
1006Brazil2026-05-24
1007India2026-05-22
1008Italy2026-05-14
1009Brazil2026-05-11
1010India2026-05-27
1011Spain2026-06-03
1012Japan2026-05-23
1013Brazil2026-05-21
1014Russia2026-05-29
1015Argentina2026-05-10
1016India2026-05-17
1017India2026-05-27
1018Canada2026-05-27
1019Spain2026-05-08
1020Canada2026-05-14
1021Germany2026-05-06
1022Australia2026-05-07
1023Germany2026-06-02
1024France2026-05-23
1025Australia2026-05-22
1026Germany2026-05-18
1027Argentina2026-06-01
1028India2026-06-03
1029Spain2026-05-07
1030Australia2026-05-15
1031Argentina2026-06-01
1032Australia2026-05-10
1033Russia2026-05-20
1034France2026-05-10
1035Germany2026-05-05
1036Brazil2026-05-13
1037France2026-05-29
1038Russia2026-05-09
1039Japan2026-05-27
1040Canada2026-05-08
1041India2026-05-10
1042Spain2026-05-22
1043Japan2026-05-27
1044Germany2026-05-25
1045Brazil2026-05-16
1046Argentina2026-05-30
1047Italy2026-05-18
1048India2026-05-18
1049Australia2026-06-03

On-Demand Data

NameIdCountryDate
Salvatore Stockham1000Russia2026-05-30
Aditya Kusko1001Russia2026-05-06
Morrow Ruta1002India2026-05-13
Murillo Malet1003Russia2026-05-16
Mayumi Kolmetz1004Italy2026-05-23
James Butt1005Argentina2026-05-10
Jefferson Schemmer1006Argentina2026-05-28
Greenwood Bolognia1007United Kingdom2026-05-23
Mayumi Kolmetz1008India2026-05-24
Chavez Briddick1009United Kingdom2026-05-19
Francesco Shinko1010India2026-05-24
Aika Inouye1011France2026-05-22
Smith Glick1012Australia2026-05-13
Maria Marrier1013France2026-05-31
Jones Vocelka1014United Kingdom2026-05-05
James Butt1015Italy2026-05-14
Greenwood Bolognia1016Spain2026-05-15
Munro Ferencz1017Brazil2026-05-07
Alejandro Perin1018India2026-05-05
Aika Inouye1019India2026-05-16
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Johnson SergiSpainIvan Magalhaes NEW
Emily WhobreyAustraliaAsiya Javayant NEW
Emily WhobreyGermanyIoni Bowcher RENEWAL
Murillo MaletSpainOnyama Limba NEW
Mujtaba NickaRussiaIvan Magalhaes QUALIFIED
Darci PoquetteItalyAsiya Javayant NEGOTIATION
Chavez BriddickBrazilElwin Sharvill QUALIFIED
Kadeem FlosiItalyAmy Elsner QUALIFIED
Claire TollnerArgentinaOnyama Limba RENEWAL
Francesco ShinkoUnited KingdomIvan Magalhaes UNQUALIFIED
Arvin AlbaresSpainIoni Bowcher QUALIFIED
Sinclair WaycottSpainStephen Shaw RENEWAL
Munro FerenczSpainAsiya Javayant UNQUALIFIED
Munro FerenczIndiaOnyama Limba RENEWAL
Wickens NestleItalyIoni Bowcher RENEWAL
Octavia MaletFranceStephen Shaw PROPOSAL
Maria MarrierRussiaAsiya Javayant NEW
Mayumi KolmetzFranceElwin Sharvill UNQUALIFIED
Aruna FigeroaArgentinaElwin Sharvill QUALIFIED
Francesco ShinkoFranceXuxue Feng NEW
Salvatore StockhamCanadaElwin Sharvill QUALIFIED
Antonio CaudyFranceIvan Magalhaes NEW
Tony FollerSpainStephen Shaw PROPOSAL
Isabel BowleyJapanOnyama Limba PROPOSAL
Chavez BriddickBrazilAmy Elsner PROPOSAL
Jefferson SchemmerItalyStephen Shaw UNQUALIFIED
David DarakjyJapanAnna Fali UNQUALIFIED
Octavia MaletUnited KingdomXuxue Feng NEGOTIATION
Faith GillianAustraliaAnna Fali NEGOTIATION
Tony FollerArgentinaBernardo Dominic RENEWAL
Wickens NestleItalyIvan Magalhaes UNQUALIFIED
Costa DilliardFranceAmy Elsner RENEWAL
Maisha RulapaughAustraliaAmy Elsner NEW
Morrow RutaFranceIoni Bowcher NEGOTIATION
Jeanfrancois VenereRussiaAsiya Javayant PROPOSAL
Kaitlin OstroskyCanadaOnyama Limba NEGOTIATION
Morrow RutaBrazilXuxue Feng QUALIFIED
Alejandro PerinFranceAnna Fali PROPOSAL
Clifford RimArgentinaXuxue Feng NEW
Costa DilliardSpainIvan Magalhaes 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>