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
Maisha RulapaughCanadaBernardo Dominic RENEWAL
Emily WhobreyArgentinaAsiya Javayant UNQUALIFIED
Claire TollnerBrazilAmy Elsner NEGOTIATION
Izzy GarufiBrazilIvan Magalhaes RENEWAL
Greenwood BologniaIndiaXuxue Feng PROPOSAL
Ricardo GauchoGermanyIvan Magalhaes RENEWAL
Munro FerenczFranceAmy Elsner NEGOTIATION
Alejandro PerinArgentinaAnna Fali UNQUALIFIED
Murillo MaletGermanyIoni Bowcher UNQUALIFIED
Cody SaylorsJapanAmy Elsner NEGOTIATION
Munro FerenczIndiaIvan Magalhaes NEGOTIATION
Maria MarrierSpainIvan Magalhaes NEW
Morrow RutaGermanyAnna Fali NEW
Wickens NestleArgentinaIvan Magalhaes NEGOTIATION
Juan WieserBrazilBernardo Dominic PROPOSAL
Faith GillianGermanyIoni Bowcher NEGOTIATION
Tony FollerSpainOnyama Limba PROPOSAL
Costa DilliardSpainIvan Magalhaes RENEWAL
Kaitlin OstroskyGermanyOnyama Limba UNQUALIFIED
Salvatore StockhamSpainXuxue Feng NEGOTIATION
Smith GlickFranceBernardo Dominic NEGOTIATION
Isabel BowleyIndiaBernardo Dominic PROPOSAL
Aruna FigeroaFranceXuxue Feng NEGOTIATION
Johnson SergiItalyAnna Fali QUALIFIED
Maria MarrierCanadaAsiya Javayant NEGOTIATION
James ButtSpainIoni Bowcher RENEWAL
Aruna FigeroaFranceAnna Fali RENEWAL
Kadeem FlosiIndiaAmy Elsner RENEWAL
Faith GillianUnited KingdomAnna Fali QUALIFIED
Deepesh ChuiAustraliaBernardo Dominic RENEWAL
Leon OldroydRussiaIoni Bowcher PROPOSAL
Leja CaldareraArgentinaElwin Sharvill RENEWAL
Salvatore StockhamFranceStephen Shaw PROPOSAL
Octavia MaletSpainAmy Elsner UNQUALIFIED
Leja CaldareraIndiaIvan Magalhaes QUALIFIED
Aditya KuskoAustraliaIoni Bowcher QUALIFIED
Julie StensethSpainElwin Sharvill UNQUALIFIED
Munro FerenczAustraliaStephen Shaw NEGOTIATION
Octavia MaletAustraliaOnyama Limba NEW
Ashley DoeRussiaBernardo Dominic UNQUALIFIED
Silvio SlusarskiCanadaIoni Bowcher QUALIFIED
Mayumi KolmetzRussiaBernardo Dominic QUALIFIED
Costa DilliardGermanyElwin Sharvill QUALIFIED
Deepesh ChuiIndiaElwin Sharvill PROPOSAL
Darci PoquetteCanadaIvan Magalhaes QUALIFIED
Antonio CaudyCanadaElwin Sharvill UNQUALIFIED
Greenwood BologniaRussiaAmy Elsner UNQUALIFIED
Cody SaylorsFranceIoni Bowcher UNQUALIFIED
Leon OldroydJapanIvan Magalhaes UNQUALIFIED
Salvatore StockhamCanadaAmy Elsner PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Adams MorascaUnited KingdomIvan Magalhaes UNQUALIFIED
Nicolas IturbideAustraliaBernardo Dominic PROPOSAL
Chavez BriddickUnited KingdomAnna Fali UNQUALIFIED
Maisha RulapaughBrazilElwin Sharvill NEGOTIATION
Leja CaldareraCanadaAmy Elsner NEGOTIATION
Maria MarrierItalyElwin Sharvill PROPOSAL
Clifford RimSpainStephen Shaw RENEWAL
Misaki RoysterBrazilAmy Elsner PROPOSAL
Faith GillianRussiaAsiya Javayant NEGOTIATION
Aruna FigeroaIndiaBernardo Dominic PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jennifer AmigonJapan2026-05-07Rousseaux, Michael Esq PROPOSAL80Ivan Magalhaes
1001Clifford RimItaly2026-05-06Truhlar And Truhlar Attys NEW54Stephen Shaw
1002Arvin AlbaresJapan2026-05-10Truhlar And Truhlar Attys NEGOTIATION25Asiya Javayant
1003Francesco ShinkoAustralia2026-05-20Chapman, Ross E Esq UNQUALIFIED26Amy Elsner
1004Kadeem FlosiJapan2026-04-28Morlong Associates NEW31Bernardo Dominic
1005Cody SaylorsSpain2026-05-04Chanay, Jeffrey A Esq RENEWAL57Bernardo Dominic
1006Ivar PaprockiItaly2026-05-10Chapman, Ross E Esq RENEWAL61Amy Elsner
1007Claire TollnerArgentina2026-05-18Chapman, Ross E Esq PROPOSAL26Asiya Javayant
1008Morrow RutaGermany2026-05-21Chapman, Ross E Esq RENEWAL65Amy Elsner
1009Maria MarrierArgentina2026-05-17Printing Dimensions UNQUALIFIED58Stephen Shaw
1010Misaki RoysterJapan2026-05-24Commercial Press QUALIFIED86Xuxue Feng
1011Salvatore StockhamCanada2026-04-29Feltz Printing Service UNQUALIFIED74Stephen Shaw
1012Francesco ShinkoFrance2026-05-21Chemel, James L Cpa UNQUALIFIED29Stephen Shaw
1013Sinclair WaycottRussia2026-05-15Printing Dimensions UNQUALIFIED22Bernardo Dominic
1014Jefferson SchemmerArgentina2026-05-26Rousseaux, Michael Esq QUALIFIED11Onyama Limba
1015Jefferson SchemmerBrazil2026-05-16Buckley Miller Wright PROPOSAL27Ioni Bowcher
1016Arvin AlbaresIndia2026-05-08Feiner Bros RENEWAL32Asiya Javayant
1017Smith GlickSpain2026-05-04Commercial Press QUALIFIED2Onyama Limba
1018Faith GillianFrance2026-05-10Printing Dimensions RENEWAL76Bernardo Dominic
1019Tony FollerAustralia2026-05-13King, Christopher A Esq RENEWAL12Bernardo Dominic
1020Octavia MaletRussia2026-05-13Benton, John B Jr QUALIFIED74Anna Fali
1021Murillo MaletFrance2026-05-19Printing Dimensions RENEWAL6Bernardo Dominic
1022Clifford RimGermany2026-04-29Truhlar And Truhlar Attys RENEWAL40Elwin Sharvill
1023Ivar PaprockiFrance2026-05-06Printing Dimensions NEGOTIATION11Anna Fali
1024Stacey MacleadRussia2026-05-12Chemel, James L Cpa PROPOSAL9Onyama Limba
1025Smith GlickJapan2026-05-24Truhlar And Truhlar Attys NEW71Anna Fali
1026Mujtaba NickaBrazil2026-05-14Chanay, Jeffrey A Esq UNQUALIFIED71Asiya Javayant
1027Emily WhobreyRussia2026-05-19Feiner Bros PROPOSAL86Amy Elsner
1028Faith GillianItaly2026-05-21Benton, John B Jr NEGOTIATION61Asiya Javayant
1029Maisha RulapaughJapan2026-05-21Truhlar And Truhlar Attys NEW8Anna Fali
1030Ivar PaprockiIndia2026-05-21Feiner Bros PROPOSAL61Ivan Magalhaes
1031Aika InouyeArgentina2026-05-15Feiner Bros RENEWAL81Anna Fali
1032Faith GillianBrazil2026-05-20Truhlar And Truhlar Attys NEW71Anna Fali
1033James ButtBrazil2026-04-29Buckley Miller Wright PROPOSAL31Xuxue Feng
1034Antonio CaudyBrazil2026-05-20Buckley Miller Wright RENEWAL77Elwin Sharvill
1035Octavia MaletGermany2026-05-11Rangoni Of Florence NEW42Xuxue Feng
1036Octavia MaletFrance2026-05-13Feltz Printing Service NEW16Ivan Magalhaes
1037Ricardo GauchoItaly2026-05-19Dorl, James J Esq NEW94Ioni Bowcher
1038Chavez BriddickUnited Kingdom2026-05-07Truhlar And Truhlar Attys NEGOTIATION84Stephen Shaw
1039Aika InouyeItaly2026-05-18Rangoni Of Florence NEW71Bernardo Dominic
1040Rodrigues CampainRussia2026-05-06Benton, John B Jr PROPOSAL39Stephen Shaw
1041Misaki RoysterCanada2026-05-13Feltz Printing Service NEW87Asiya Javayant
1042Maria MarrierAustralia2026-05-24Printing Dimensions UNQUALIFIED54Bernardo Dominic
1043Aditya KuskoRussia2026-05-17Dorl, James J Esq UNQUALIFIED29Elwin Sharvill
1044Alejandro PerinIndia2026-04-28Buckley Miller Wright NEGOTIATION86Elwin Sharvill
1045Stacey MacleadGermany2026-05-04Printing Dimensions RENEWAL72Amy Elsner
1046Silvio SlusarskiArgentina2026-05-09Buckley Miller Wright RENEWAL30Ivan Magalhaes
1047Mujtaba NickaGermany2026-05-12Benton, John B Jr NEW88Anna Fali
1048Nicolas IturbideRussia2026-05-24Rousseaux, Michael Esq UNQUALIFIED76Stephen Shaw
1049Kaitlin OstroskyBrazil2026-05-23Rangoni Of Florence NEW88Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Aruna FigeroaAustraliaAsiya Javayant NEW
Aruna FigeroaCanadaIoni Bowcher RENEWAL
Mayumi KolmetzFranceBernardo Dominic NEGOTIATION
Smith GlickRussiaAmy Elsner NEW
Leja CaldareraFranceAsiya Javayant RENEWAL
Aditya KuskoCanadaElwin Sharvill RENEWAL
Ricardo GauchoFranceStephen Shaw UNQUALIFIED
Chavez BriddickItalyAsiya Javayant RENEWAL
Johnson SergiGermanyIoni Bowcher UNQUALIFIED
Ricardo GauchoAustraliaIvan Magalhaes UNQUALIFIED
Julie StensethAustraliaIvan Magalhaes QUALIFIED
Aditya KuskoBrazilIoni Bowcher NEW
Ricardo GauchoUnited KingdomAnna Fali PROPOSAL
Juan WieserGermanyXuxue Feng PROPOSAL
Francesco ShinkoAustraliaStephen Shaw NEW
Rodrigues CampainUnited KingdomBernardo Dominic NEW
James ButtUnited KingdomAnna Fali PROPOSAL
Julie StensethCanadaStephen Shaw RENEWAL
Kaitlin OstroskyAustraliaAsiya Javayant NEW
Jeanfrancois VenereBrazilElwin Sharvill QUALIFIED
Adams MorascaGermanyIvan Magalhaes QUALIFIED
Mujtaba NickaIndiaXuxue Feng RENEWAL
Jefferson SchemmerAustraliaOnyama Limba NEW
Sinclair WaycottRussiaOnyama Limba NEW
Stacey MacleadFranceIvan Magalhaes NEGOTIATION
Johnson SergiGermanyIoni Bowcher UNQUALIFIED
Costa DilliardRussiaIvan Magalhaes PROPOSAL
Tony FollerFranceAsiya Javayant UNQUALIFIED
Jones VocelkaBrazilStephen Shaw RENEWAL
Nicolas IturbideFranceStephen Shaw QUALIFIED
Izzy GarufiRussiaStephen Shaw QUALIFIED
James ButtFranceAnna Fali NEW
Stacey MacleadRussiaIvan Magalhaes PROPOSAL
Aika InouyeCanadaXuxue Feng PROPOSAL
Clifford RimCanadaAsiya Javayant PROPOSAL
Antonio CaudyFranceBernardo Dominic QUALIFIED
Adams MorascaItalyXuxue Feng QUALIFIED
Ashley DoeIndiaAmy Elsner NEW
Ricardo GauchoGermanyIvan Magalhaes UNQUALIFIED
Tony FollerJapanOnyama Limba NEW
Mayumi KolmetzBrazilAmy Elsner UNQUALIFIED
Francesco ShinkoBrazilElwin Sharvill UNQUALIFIED
Silvio SlusarskiAustraliaIoni Bowcher NEW
Kadeem FlosiUnited KingdomBernardo Dominic QUALIFIED
Isabel BowleyBrazilStephen Shaw NEW
Isabel BowleyGermanyIoni Bowcher UNQUALIFIED
Smith GlickIndiaOnyama Limba NEW
Smith GlickItalyIvan Magalhaes QUALIFIED
Maria MarrierBrazilXuxue Feng QUALIFIED
Nicolas IturbideSpainOnyama Limba NEW
Frozen Columns
Name
Greenwood Bolognia
Smith Glick
Ivar Paprocki
Aruna Figeroa
Sinclair Waycott
Antonio Caudy
Ashley Doe
Octavia Malet
Adams Morasca
Misaki Royster
Ivar Paprocki
Francesco Shinko
Ricardo Gaucho
Deepesh Chui
Ricardo Gaucho
Silvio Slusarski
Ivar Paprocki
Mayumi Kolmetz
Greenwood Bolognia
Munro Ferencz
Sinclair Waycott
Mujtaba Nicka
Julie Stenseth
Francesco Shinko
Octavia Malet
Murillo Malet
Johnson Sergi
Mayumi Kolmetz
Clifford Rim
Aruna Figeroa
Nicolas Iturbide
James Butt
Jones Vocelka
Maria Marrier
Jennifer Amigon
Murillo Malet
Kaitlin Ostrosky
Murillo Malet
Maria Marrier
Jeanfrancois Venere
Ashley Doe
Jones Vocelka
Octavia Malet
Smith Glick
Isabel Bowley
Tony Foller
Deepesh Chui
Mujtaba Nicka
Faith Gillian
Julie Stenseth
IdCountryDate
1000Japan2026-05-19
1001India2026-05-14
1002Australia2026-05-22
1003Italy2026-05-02
1004France2026-05-22
1005Australia2026-05-21
1006Australia2026-05-09
1007Brazil2026-05-16
1008Spain2026-05-25
1009Brazil2026-05-04
1010Russia2026-05-13
1011France2026-05-02
1012Germany2026-05-13
1013Japan2026-05-20
1014Australia2026-05-12
1015India2026-05-01
1016Japan2026-05-22
1017Germany2026-05-20
1018Australia2026-05-26
1019Spain2026-05-16
1020India2026-04-28
1021France2026-05-11
1022Argentina2026-04-30
1023Spain2026-05-26
1024Italy2026-05-10
1025Germany2026-05-22
1026Spain2026-05-05
1027United Kingdom2026-04-30
1028Australia2026-05-19
1029Russia2026-05-13
1030Japan2026-05-26
1031Canada2026-04-29
1032Argentina2026-05-08
1033Spain2026-05-05
1034Russia2026-05-04
1035Canada2026-05-14
1036France2026-05-01
1037Japan2026-05-24
1038Japan2026-05-10
1039Japan2026-05-26
1040Italy2026-05-04
1041Brazil2026-05-10
1042United Kingdom2026-05-04
1043Argentina2026-04-29
1044United Kingdom2026-05-26
1045India2026-05-07
1046Canada2026-05-25
1047Argentina2026-05-08
1048Russia2026-05-01
1049Germany2026-05-09

On-Demand Data

NameIdCountryDate
Deepesh Chui1000Brazil2026-05-11
Aditya Kusko1001Japan2026-05-20
Johnson Sergi1002Germany2026-05-02
Isabel Bowley1003Argentina2026-05-07
Murillo Malet1004India2026-05-09
Julie Stenseth1005Germany2026-05-13
Sinclair Waycott1006France2026-05-16
Julie Stenseth1007Germany2026-05-25
Murillo Malet1008France2026-05-18
Darci Poquette1009Italy2026-05-09
Jefferson Schemmer1010Russia2026-05-12
Aruna Figeroa1011United Kingdom2026-05-15
Greenwood Bolognia1012France2026-05-09
Isabel Bowley1013United Kingdom2026-05-20
Claire Tollner1014Argentina2026-05-12
Kadeem Flosi1015Italy2026-05-25
Stacey Maclead1016Spain2026-05-07
Aditya Kusko1017Spain2026-04-29
Nicolas Iturbide1018Brazil2026-05-22
Kadeem Flosi1019Brazil2026-05-17
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Mayumi KolmetzUnited KingdomAnna Fali QUALIFIED
Morrow RutaCanadaElwin Sharvill NEW
Isabel BowleySpainIoni Bowcher NEGOTIATION
Silvio SlusarskiFranceXuxue Feng UNQUALIFIED
Nicolas IturbideJapanOnyama Limba PROPOSAL
Juan WieserIndiaOnyama Limba NEGOTIATION
Kaitlin OstroskyBrazilStephen Shaw NEW
Cody SaylorsBrazilIvan Magalhaes NEGOTIATION
Kadeem FlosiRussiaStephen Shaw NEW
Jeanfrancois VenereArgentinaElwin Sharvill RENEWAL
Silvio SlusarskiRussiaAsiya Javayant UNQUALIFIED
Sinclair WaycottBrazilStephen Shaw RENEWAL
James ButtIndiaAsiya Javayant RENEWAL
Izzy GarufiFranceBernardo Dominic RENEWAL
James ButtBrazilBernardo Dominic UNQUALIFIED
Adams MorascaUnited KingdomAsiya Javayant QUALIFIED
Octavia MaletRussiaStephen Shaw QUALIFIED
Murillo MaletRussiaOnyama Limba RENEWAL
Rodrigues CampainAustraliaOnyama Limba UNQUALIFIED
Faith GillianJapanAsiya Javayant NEGOTIATION
Aruna FigeroaFranceAmy Elsner QUALIFIED
Tony FollerCanadaAsiya Javayant NEW
David DarakjyUnited KingdomAnna Fali RENEWAL
Jones VocelkaFranceAnna Fali NEW
Leon OldroydIndiaIvan Magalhaes PROPOSAL
Stacey MacleadRussiaAnna Fali NEGOTIATION
Tony FollerArgentinaElwin Sharvill QUALIFIED
Adams MorascaSpainStephen Shaw RENEWAL
Rodrigues CampainCanadaOnyama Limba NEGOTIATION
Wickens NestleBrazilOnyama Limba NEW
Wickens NestleGermanyIoni Bowcher RENEWAL
Kadeem FlosiFranceAsiya Javayant PROPOSAL
Salvatore StockhamGermanyBernardo Dominic PROPOSAL
Silvio SlusarskiJapanIoni Bowcher NEGOTIATION
Emily WhobreyIndiaIoni Bowcher QUALIFIED
Misaki RoysterFranceStephen Shaw NEW
Francesco ShinkoUnited KingdomStephen Shaw UNQUALIFIED
Mayumi KolmetzAustraliaAmy Elsner PROPOSAL
Ivar PaprockiIndiaIoni Bowcher UNQUALIFIED
Salvatore StockhamCanadaAnna Fali 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>