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
Jennifer AmigonFranceOnyama Limba QUALIFIED
Deepesh ChuiRussiaIoni Bowcher RENEWAL
Clifford RimGermanyIoni Bowcher RENEWAL
Izzy GarufiCanadaOnyama Limba NEW
Mujtaba NickaFranceAmy Elsner UNQUALIFIED
Julie StensethItalyXuxue Feng RENEWAL
Salvatore StockhamCanadaAnna Fali NEGOTIATION
James ButtCanadaIoni Bowcher QUALIFIED
Alejandro PerinAustraliaStephen Shaw PROPOSAL
Tony FollerJapanStephen Shaw RENEWAL
James ButtSpainElwin Sharvill NEGOTIATION
Adams MorascaCanadaAsiya Javayant RENEWAL
Maisha RulapaughGermanyIvan Magalhaes UNQUALIFIED
Claire TollnerItalyAmy Elsner PROPOSAL
Leja CaldareraCanadaBernardo Dominic RENEWAL
Rodrigues CampainIndiaOnyama Limba NEW
Mujtaba NickaFranceElwin Sharvill PROPOSAL
Greenwood BologniaArgentinaElwin Sharvill PROPOSAL
Silvio SlusarskiCanadaAmy Elsner RENEWAL
Morrow RutaIndiaAmy Elsner RENEWAL
Smith GlickRussiaBernardo Dominic RENEWAL
Isabel BowleyBrazilOnyama Limba NEW
Juan WieserGermanyBernardo Dominic QUALIFIED
Johnson SergiFranceOnyama Limba NEGOTIATION
Maria MarrierIndiaIvan Magalhaes NEW
Kaitlin OstroskyBrazilAsiya Javayant QUALIFIED
Emily WhobreyItalyOnyama Limba RENEWAL
Ricardo GauchoItalyBernardo Dominic QUALIFIED
Morrow RutaGermanyXuxue Feng NEW
Kadeem FlosiCanadaBernardo Dominic NEGOTIATION
Chavez BriddickBrazilAnna Fali PROPOSAL
Chavez BriddickUnited KingdomIoni Bowcher NEGOTIATION
Chavez BriddickCanadaBernardo Dominic NEW
Wickens NestleBrazilAsiya Javayant QUALIFIED
Cody SaylorsFranceOnyama Limba QUALIFIED
Ivar PaprockiAustraliaAmy Elsner PROPOSAL
Ricardo GauchoCanadaElwin Sharvill NEW
Clifford RimArgentinaStephen Shaw QUALIFIED
Claire TollnerJapanIoni Bowcher UNQUALIFIED
Antonio CaudyArgentinaXuxue Feng PROPOSAL
Tony FollerArgentinaAnna Fali NEW
David DarakjyUnited KingdomAsiya Javayant NEW
Maria MarrierGermanyAnna Fali UNQUALIFIED
Darci PoquetteFranceIvan Magalhaes UNQUALIFIED
Leon OldroydRussiaAnna Fali NEW
Munro FerenczIndiaAmy Elsner QUALIFIED
Darci PoquetteFranceAmy Elsner UNQUALIFIED
Ivar PaprockiBrazilStephen Shaw QUALIFIED
Claire TollnerIndiaBernardo Dominic RENEWAL
Aika InouyeAustraliaAmy Elsner NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Jennifer AmigonAustraliaAmy Elsner PROPOSAL
Kaitlin OstroskyAustraliaAsiya Javayant NEGOTIATION
Isabel BowleyUnited KingdomElwin Sharvill PROPOSAL
Maria MarrierIndiaAnna Fali QUALIFIED
Johnson SergiBrazilXuxue Feng NEGOTIATION
Faith GillianCanadaIoni Bowcher QUALIFIED
Deepesh ChuiRussiaStephen Shaw NEGOTIATION
Mayumi KolmetzUnited KingdomAmy Elsner PROPOSAL
Maria MarrierGermanyAsiya Javayant UNQUALIFIED
Juan WieserArgentinaXuxue Feng QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Leja CaldareraRussia2026-04-29Dorl, James J Esq QUALIFIED80Bernardo Dominic
1001Francesco ShinkoUnited Kingdom2026-04-21Morlong Associates RENEWAL94Elwin Sharvill
1002Leon OldroydArgentina2026-04-21Dorl, James J Esq NEGOTIATION36Asiya Javayant
1003Stacey MacleadGermany2026-05-07Chemel, James L Cpa NEGOTIATION21Amy Elsner
1004Aditya KuskoCanada2026-05-10Rangoni Of Florence PROPOSAL58Onyama Limba
1005Isabel BowleyCanada2026-05-12Benton, John B Jr NEGOTIATION3Stephen Shaw
1006Munro FerenczArgentina2026-04-24Morlong Associates RENEWAL60Bernardo Dominic
1007Silvio SlusarskiUnited Kingdom2026-04-23Feiner Bros NEW9Ioni Bowcher
1008Julie StensethIndia2026-04-18Chanay, Jeffrey A Esq NEW57Xuxue Feng
1009Aika InouyeArgentina2026-05-03Commercial Press QUALIFIED97Xuxue Feng
1010Clifford RimUnited Kingdom2026-05-05Rousseaux, Michael Esq QUALIFIED78Bernardo Dominic
1011Misaki RoysterUnited Kingdom2026-04-20Chapman, Ross E Esq QUALIFIED4Amy Elsner
1012Nicolas IturbideRussia2026-04-29Commercial Press RENEWAL87Xuxue Feng
1013Ashley DoeArgentina2026-04-24Chapman, Ross E Esq QUALIFIED73Anna Fali
1014Maria MarrierSpain2026-04-13Benton, John B Jr RENEWAL85Amy Elsner
1015Jefferson SchemmerRussia2026-04-16Feiner Bros QUALIFIED86Onyama Limba
1016Greenwood BologniaJapan2026-04-27Commercial Press NEW75Asiya Javayant
1017Kaitlin OstroskyAustralia2026-05-12Chemel, James L Cpa PROPOSAL48Bernardo Dominic
1018Francesco ShinkoCanada2026-04-25Commercial Press NEW57Xuxue Feng
1019Ashley DoeUnited Kingdom2026-04-26King, Christopher A Esq NEGOTIATION44Elwin Sharvill
1020Adams MorascaGermany2026-04-15Buckley Miller Wright PROPOSAL95Anna Fali
1021Aditya KuskoIndia2026-05-06Printing Dimensions PROPOSAL77Onyama Limba
1022Johnson SergiCanada2026-04-21Commercial Press RENEWAL54Onyama Limba
1023Jeanfrancois VenereItaly2026-05-03Chanay, Jeffrey A Esq RENEWAL83Asiya Javayant
1024Jennifer AmigonGermany2026-05-03Feiner Bros NEGOTIATION57Amy Elsner
1025Rodrigues CampainSpain2026-05-10Benton, John B Jr RENEWAL15Asiya Javayant
1026Tony FollerArgentina2026-04-29Chapman, Ross E Esq QUALIFIED34Xuxue Feng
1027Jeanfrancois VenereGermany2026-04-22Chapman, Ross E Esq NEW50Anna Fali
1028Ivar PaprockiArgentina2026-04-15Morlong Associates PROPOSAL79Amy Elsner
1029Alejandro PerinIndia2026-04-28Truhlar And Truhlar Attys RENEWAL79Asiya Javayant
1030Julie StensethUnited Kingdom2026-05-03Chemel, James L Cpa QUALIFIED34Anna Fali
1031Misaki RoysterRussia2026-04-22King, Christopher A Esq NEW6Asiya Javayant
1032David DarakjyItaly2026-04-20Benton, John B Jr QUALIFIED79Bernardo Dominic
1033Octavia MaletSpain2026-05-03Chemel, James L Cpa NEGOTIATION95Ioni Bowcher
1034Murillo MaletArgentina2026-04-16Chanay, Jeffrey A Esq NEW59Stephen Shaw
1035Wickens NestleRussia2026-05-12Printing Dimensions RENEWAL51Anna Fali
1036Chavez BriddickRussia2026-04-18Benton, John B Jr NEW70Asiya Javayant
1037Cody SaylorsCanada2026-04-19Chemel, James L Cpa PROPOSAL27Xuxue Feng
1038Maria MarrierAustralia2026-05-07Buckley Miller Wright PROPOSAL36Asiya Javayant
1039Izzy GarufiAustralia2026-04-14Chemel, James L Cpa NEW71Xuxue Feng
1040Mujtaba NickaJapan2026-05-09Feiner Bros RENEWAL28Stephen Shaw
1041Tony FollerIndia2026-05-10Feltz Printing Service NEGOTIATION31Onyama Limba
1042Johnson SergiAustralia2026-05-07Morlong Associates RENEWAL38Bernardo Dominic
1043Ivar PaprockiSpain2026-04-23Chanay, Jeffrey A Esq UNQUALIFIED60Amy Elsner
1044Johnson SergiSpain2026-05-11Chanay, Jeffrey A Esq NEGOTIATION57Anna Fali
1045Faith GillianRussia2026-05-09Feltz Printing Service RENEWAL7Bernardo Dominic
1046Costa DilliardSpain2026-04-14Truhlar And Truhlar Attys QUALIFIED78Ioni Bowcher
1047James ButtJapan2026-04-29Chanay, Jeffrey A Esq RENEWAL18Elwin Sharvill
1048Adams MorascaJapan2026-04-18Benton, John B Jr RENEWAL78Onyama Limba
1049Faith GillianAustralia2026-05-11Buckley Miller Wright RENEWAL55Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Juan WieserGermanyXuxue Feng PROPOSAL
David DarakjyCanadaElwin Sharvill PROPOSAL
David DarakjyItalyXuxue Feng NEW
Mujtaba NickaSpainBernardo Dominic RENEWAL
James ButtJapanElwin Sharvill QUALIFIED
Mayumi KolmetzArgentinaAnna Fali QUALIFIED
Cody SaylorsCanadaIvan Magalhaes NEGOTIATION
Emily WhobreyGermanyIoni Bowcher PROPOSAL
Greenwood BologniaCanadaIoni Bowcher QUALIFIED
Octavia MaletCanadaStephen Shaw UNQUALIFIED
Maisha RulapaughUnited KingdomStephen Shaw RENEWAL
Ivar PaprockiIndiaElwin Sharvill UNQUALIFIED
Ashley DoeSpainAnna Fali NEGOTIATION
Juan WieserArgentinaIvan Magalhaes QUALIFIED
Johnson SergiItalyIvan Magalhaes NEW
Stacey MacleadItalyOnyama Limba NEGOTIATION
Costa DilliardJapanAsiya Javayant NEGOTIATION
Tony FollerSpainAnna Fali UNQUALIFIED
Salvatore StockhamSpainAnna Fali QUALIFIED
Murillo MaletSpainXuxue Feng NEW
Tony FollerRussiaStephen Shaw QUALIFIED
Murillo MaletCanadaOnyama Limba QUALIFIED
Juan WieserCanadaOnyama Limba NEGOTIATION
Julie StensethBrazilElwin Sharvill QUALIFIED
Aika InouyeItalyBernardo Dominic PROPOSAL
Clifford RimAustraliaXuxue Feng UNQUALIFIED
Chavez BriddickBrazilAmy Elsner NEGOTIATION
Adams MorascaArgentinaIoni Bowcher NEGOTIATION
Antonio CaudyJapanElwin Sharvill QUALIFIED
Costa DilliardItalyIvan Magalhaes PROPOSAL
Leon OldroydBrazilAsiya Javayant NEW
Ricardo GauchoSpainAsiya Javayant UNQUALIFIED
Ashley DoeJapanElwin Sharvill RENEWAL
Aruna FigeroaCanadaOnyama Limba NEGOTIATION
David DarakjyRussiaXuxue Feng NEGOTIATION
Ashley DoeItalyOnyama Limba RENEWAL
Julie StensethFranceElwin Sharvill UNQUALIFIED
Greenwood BologniaGermanyAsiya Javayant PROPOSAL
Darci PoquetteJapanElwin Sharvill PROPOSAL
Juan WieserItalyOnyama Limba UNQUALIFIED
Kaitlin OstroskyIndiaElwin Sharvill NEW
Aika InouyeRussiaAnna Fali QUALIFIED
Maria MarrierGermanyXuxue Feng NEW
Maria MarrierJapanStephen Shaw NEGOTIATION
Clifford RimSpainAnna Fali NEGOTIATION
Chavez BriddickGermanyIoni Bowcher NEW
Antonio CaudyIndiaOnyama Limba PROPOSAL
Chavez BriddickFranceXuxue Feng RENEWAL
Chavez BriddickIndiaIoni Bowcher RENEWAL
David DarakjyArgentinaAmy Elsner NEW
Frozen Columns
Name
Clifford Rim
Octavia Malet
Johnson Sergi
Kadeem Flosi
Adams Morasca
Jefferson Schemmer
Salvatore Stockham
Mayumi Kolmetz
Jeanfrancois Venere
Julie Stenseth
Maisha Rulapaugh
Stacey Maclead
Aruna Figeroa
Kadeem Flosi
Juan Wieser
Silvio Slusarski
Nicolas Iturbide
Maisha Rulapaugh
Ricardo Gaucho
Kadeem Flosi
Morrow Ruta
Stacey Maclead
Isabel Bowley
Emily Whobrey
Kadeem Flosi
Aruna Figeroa
Smith Glick
Alejandro Perin
Aruna Figeroa
David Darakjy
Clifford Rim
David Darakjy
Jeanfrancois Venere
Costa Dilliard
Octavia Malet
Johnson Sergi
Ivar Paprocki
Kaitlin Ostrosky
James Butt
Tony Foller
Greenwood Bolognia
Nicolas Iturbide
Chavez Briddick
Ashley Doe
Rodrigues Campain
Leja Caldarera
Stacey Maclead
Greenwood Bolognia
Jeanfrancois Venere
Clifford Rim
IdCountryDate
1000Italy2026-04-21
1001Brazil2026-04-21
1002Spain2026-04-15
1003Germany2026-04-27
1004Canada2026-04-13
1005Canada2026-04-19
1006Japan2026-05-12
1007Italy2026-04-29
1008Argentina2026-04-13
1009Argentina2026-04-15
1010Russia2026-04-30
1011France2026-05-11
1012Canada2026-04-23
1013France2026-04-28
1014Italy2026-04-19
1015Canada2026-04-27
1016Germany2026-04-14
1017Germany2026-05-09
1018Australia2026-04-29
1019Italy2026-05-07
1020Australia2026-05-07
1021India2026-04-24
1022Germany2026-04-29
1023Canada2026-05-04
1024France2026-04-19
1025Japan2026-04-25
1026Canada2026-04-16
1027India2026-05-01
1028Germany2026-04-26
1029Australia2026-04-26
1030Japan2026-04-20
1031India2026-04-18
1032France2026-04-26
1033United Kingdom2026-04-28
1034India2026-04-22
1035France2026-04-21
1036Spain2026-04-30
1037Italy2026-05-09
1038Japan2026-05-09
1039France2026-04-26
1040Argentina2026-04-23
1041Canada2026-04-24
1042Germany2026-04-26
1043Australia2026-04-17
1044Spain2026-05-08
1045Japan2026-04-30
1046India2026-04-26
1047Brazil2026-04-20
1048India2026-04-29
1049Canada2026-04-27

On-Demand Data

NameIdCountryDate
Morrow Ruta1000United Kingdom2026-05-01
Adams Morasca1001Canada2026-05-09
Claire Tollner1002Germany2026-04-20
Leon Oldroyd1003Japan2026-04-28
Isabel Bowley1004United Kingdom2026-04-26
Clifford Rim1005United Kingdom2026-04-29
Misaki Royster1006Russia2026-05-04
Emily Whobrey1007Russia2026-04-30
Ivar Paprocki1008Canada2026-05-03
Leja Caldarera1009Spain2026-04-22
Mujtaba Nicka1010Canada2026-04-28
Emily Whobrey1011Germany2026-04-29
Isabel Bowley1012Germany2026-04-19
Misaki Royster1013Spain2026-04-14
Aika Inouye1014United Kingdom2026-04-28
Adams Morasca1015Russia2026-04-17
Maria Marrier1016Japan2026-05-04
Emily Whobrey1017France2026-04-19
Nicolas Iturbide1018India2026-05-03
Murillo Malet1019France2026-05-03
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Murillo MaletIndiaBernardo Dominic NEW
Nicolas IturbideIndiaAmy Elsner NEW
Jennifer AmigonBrazilStephen Shaw UNQUALIFIED
Morrow RutaSpainStephen Shaw PROPOSAL
Morrow RutaItalyAmy Elsner QUALIFIED
Mayumi KolmetzGermanyAnna Fali QUALIFIED
Mayumi KolmetzJapanAsiya Javayant RENEWAL
Mayumi KolmetzRussiaElwin Sharvill QUALIFIED
Jeanfrancois VenereIndiaAnna Fali QUALIFIED
Ivar PaprockiFranceIvan Magalhaes NEW
Izzy GarufiArgentinaXuxue Feng NEGOTIATION
Jefferson SchemmerUnited KingdomAnna Fali UNQUALIFIED
Maisha RulapaughJapanIoni Bowcher NEGOTIATION
Johnson SergiAustraliaElwin Sharvill QUALIFIED
Darci PoquetteJapanBernardo Dominic QUALIFIED
Kadeem FlosiGermanyAnna Fali PROPOSAL
Nicolas IturbideCanadaIvan Magalhaes QUALIFIED
Ivar PaprockiFranceXuxue Feng UNQUALIFIED
Jefferson SchemmerCanadaAsiya Javayant NEW
Smith GlickSpainAmy Elsner UNQUALIFIED
Emily WhobreySpainXuxue Feng PROPOSAL
Ricardo GauchoGermanyStephen Shaw RENEWAL
Chavez BriddickAustraliaElwin Sharvill NEW
Johnson SergiRussiaIvan Magalhaes QUALIFIED
Wickens NestleJapanBernardo Dominic UNQUALIFIED
Aditya KuskoItalyAmy Elsner NEW
Juan WieserFranceAmy Elsner PROPOSAL
Silvio SlusarskiSpainAnna Fali NEW
Maria MarrierAustraliaAnna Fali PROPOSAL
Kadeem FlosiIndiaXuxue Feng UNQUALIFIED
Mayumi KolmetzBrazilElwin Sharvill PROPOSAL
Faith GillianSpainXuxue Feng QUALIFIED
Maisha RulapaughItalyAsiya Javayant UNQUALIFIED
David DarakjyFranceAnna Fali NEGOTIATION
Jefferson SchemmerFranceAnna Fali NEW
Faith GillianFranceOnyama Limba NEGOTIATION
Munro FerenczIndiaIoni Bowcher UNQUALIFIED
Ivar PaprockiIndiaStephen Shaw QUALIFIED
Jeanfrancois VenereIndiaBernardo Dominic NEGOTIATION
Kaitlin OstroskyAustraliaAsiya Javayant 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>