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
Jefferson SchemmerFranceStephen Shaw UNQUALIFIED
Kaitlin OstroskyUnited KingdomIoni Bowcher NEGOTIATION
Aditya KuskoFranceIoni Bowcher NEW
Morrow RutaAustraliaAmy Elsner QUALIFIED
Leja CaldareraRussiaXuxue Feng RENEWAL
Claire TollnerUnited KingdomXuxue Feng QUALIFIED
Nicolas IturbideJapanXuxue Feng NEW
Leon OldroydArgentinaOnyama Limba NEGOTIATION
Misaki RoysterCanadaAsiya Javayant UNQUALIFIED
Jeanfrancois VenereAustraliaBernardo Dominic UNQUALIFIED
Aika InouyeFranceXuxue Feng QUALIFIED
Antonio CaudyUnited KingdomAnna Fali NEGOTIATION
Wickens NestleBrazilAsiya Javayant QUALIFIED
James ButtUnited KingdomAmy Elsner RENEWAL
Emily WhobreyAustraliaAnna Fali QUALIFIED
Arvin AlbaresJapanXuxue Feng RENEWAL
Maisha RulapaughAustraliaAsiya Javayant NEGOTIATION
Jeanfrancois VenereUnited KingdomAmy Elsner UNQUALIFIED
Leon OldroydArgentinaXuxue Feng NEGOTIATION
Nicolas IturbideJapanIoni Bowcher UNQUALIFIED
Alejandro PerinItalyIvan Magalhaes NEW
Emily WhobreyUnited KingdomIvan Magalhaes UNQUALIFIED
Ivar PaprockiIndiaElwin Sharvill RENEWAL
Adams MorascaRussiaBernardo Dominic RENEWAL
Faith GillianItalyAnna Fali NEGOTIATION
Tony FollerSpainXuxue Feng NEGOTIATION
Ricardo GauchoSpainAmy Elsner PROPOSAL
Juan WieserAustraliaIvan Magalhaes RENEWAL
Claire TollnerArgentinaIoni Bowcher UNQUALIFIED
Isabel BowleyCanadaElwin Sharvill NEGOTIATION
Deepesh ChuiFranceIoni Bowcher QUALIFIED
Faith GillianGermanyXuxue Feng RENEWAL
Jennifer AmigonIndiaAsiya Javayant UNQUALIFIED
Stacey MacleadFranceXuxue Feng NEGOTIATION
Isabel BowleyCanadaXuxue Feng QUALIFIED
Claire TollnerFranceXuxue Feng PROPOSAL
David DarakjyIndiaXuxue Feng QUALIFIED
Faith GillianSpainOnyama Limba NEW
Adams MorascaRussiaBernardo Dominic PROPOSAL
Munro FerenczBrazilAmy Elsner RENEWAL
Izzy GarufiAustraliaElwin Sharvill RENEWAL
Silvio SlusarskiJapanIoni Bowcher UNQUALIFIED
Wickens NestleGermanyAnna Fali RENEWAL
Greenwood BologniaItalyAsiya Javayant PROPOSAL
Tony FollerAustraliaXuxue Feng NEW
Aditya KuskoJapanOnyama Limba UNQUALIFIED
Nicolas IturbideSpainAsiya Javayant QUALIFIED
Greenwood BologniaRussiaIoni Bowcher NEGOTIATION
Costa DilliardBrazilXuxue Feng UNQUALIFIED
Stacey MacleadCanadaXuxue Feng PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Rodrigues CampainArgentinaStephen Shaw QUALIFIED
Isabel BowleyIndiaElwin Sharvill QUALIFIED
Greenwood BologniaFranceXuxue Feng NEGOTIATION
Emily WhobreyFranceElwin Sharvill PROPOSAL
Maria MarrierRussiaStephen Shaw NEGOTIATION
Ivar PaprockiArgentinaOnyama Limba RENEWAL
Jefferson SchemmerSpainIvan Magalhaes PROPOSAL
Murillo MaletGermanyAsiya Javayant PROPOSAL
Silvio SlusarskiArgentinaIvan Magalhaes RENEWAL
Clifford RimAustraliaIoni Bowcher QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Clifford RimSpain2026-04-08Chemel, James L Cpa UNQUALIFIED52Amy Elsner
1001Tony FollerCanada2026-03-26Feiner Bros NEW97Bernardo Dominic
1002Costa DilliardBrazil2026-03-25Feiner Bros PROPOSAL51Elwin Sharvill
1003Antonio CaudyIndia2026-04-03Chanay, Jeffrey A Esq NEGOTIATION24Anna Fali
1004Kaitlin OstroskyAustralia2026-04-10King, Christopher A Esq PROPOSAL16Bernardo Dominic
1005Clifford RimAustralia2026-04-13Commercial Press QUALIFIED21Amy Elsner
1006Ricardo GauchoSpain2026-04-15Rangoni Of Florence UNQUALIFIED99Onyama Limba
1007James ButtSpain2026-04-15Buckley Miller Wright PROPOSAL38Onyama Limba
1008Munro FerenczSpain2026-04-19Morlong Associates NEW60Anna Fali
1009Stacey MacleadRussia2026-04-16Truhlar And Truhlar Attys PROPOSAL88Ivan Magalhaes
1010Leja CaldareraFrance2026-04-11Feltz Printing Service QUALIFIED35Amy Elsner
1011Arvin AlbaresFrance2026-04-09Feltz Printing Service NEGOTIATION89Stephen Shaw
1012Mayumi KolmetzArgentina2026-04-07Commercial Press QUALIFIED92Amy Elsner
1013Deepesh ChuiUnited Kingdom2026-03-26Commercial Press RENEWAL44Stephen Shaw
1014Johnson SergiRussia2026-04-05Feiner Bros NEGOTIATION2Xuxue Feng
1015Jones VocelkaIndia2026-03-25Buckley Miller Wright PROPOSAL80Amy Elsner
1016Ricardo GauchoJapan2026-04-06Truhlar And Truhlar Attys QUALIFIED68Bernardo Dominic
1017Emily WhobreyRussia2026-04-10Rangoni Of Florence RENEWAL34Asiya Javayant
1018Nicolas IturbideJapan2026-04-06Truhlar And Truhlar Attys RENEWAL25Xuxue Feng
1019Julie StensethRussia2026-03-29Benton, John B Jr QUALIFIED48Anna Fali
1020Jeanfrancois VenereJapan2026-03-31Rousseaux, Michael Esq NEGOTIATION53Xuxue Feng
1021Misaki RoysterSpain2026-04-03Truhlar And Truhlar Attys UNQUALIFIED1Xuxue Feng
1022Jefferson SchemmerCanada2026-04-14Chapman, Ross E Esq NEGOTIATION59Bernardo Dominic
1023Leja CaldareraBrazil2026-04-19Feltz Printing Service UNQUALIFIED1Ivan Magalhaes
1024Leon OldroydIndia2026-04-14King, Christopher A Esq NEGOTIATION49Bernardo Dominic
1025Ashley DoeSpain2026-04-04Feiner Bros PROPOSAL1Stephen Shaw
1026Mujtaba NickaCanada2026-04-22Commercial Press UNQUALIFIED1Ioni Bowcher
1027Aruna FigeroaCanada2026-03-30Feiner Bros PROPOSAL73Stephen Shaw
1028Murillo MaletJapan2026-04-06Buckley Miller Wright QUALIFIED76Stephen Shaw
1029Jeanfrancois VenereRussia2026-03-29Commercial Press QUALIFIED94Anna Fali
1030Sinclair WaycottJapan2026-03-26Feltz Printing Service RENEWAL46Bernardo Dominic
1031Aika InouyeCanada2026-03-25Buckley Miller Wright QUALIFIED82Xuxue Feng
1032Faith GillianJapan2026-04-04Feltz Printing Service UNQUALIFIED14Stephen Shaw
1033Greenwood BologniaUnited Kingdom2026-04-11Commercial Press PROPOSAL80Stephen Shaw
1034Aruna FigeroaCanada2026-04-08Commercial Press NEGOTIATION11Elwin Sharvill
1035Munro FerenczFrance2026-04-04Commercial Press UNQUALIFIED49Xuxue Feng
1036Jefferson SchemmerBrazil2026-04-04Rousseaux, Michael Esq PROPOSAL91Stephen Shaw
1037Isabel BowleyJapan2026-03-30King, Christopher A Esq RENEWAL90Onyama Limba
1038Adams MorascaCanada2026-03-24Truhlar And Truhlar Attys UNQUALIFIED9Elwin Sharvill
1039Leon OldroydRussia2026-04-04Buckley Miller Wright NEGOTIATION6Elwin Sharvill
1040Morrow RutaAustralia2026-04-15Chapman, Ross E Esq UNQUALIFIED86Anna Fali
1041Aditya KuskoFrance2026-04-10Buckley Miller Wright UNQUALIFIED54Amy Elsner
1042Jones VocelkaBrazil2026-04-01Truhlar And Truhlar Attys NEGOTIATION34Xuxue Feng
1043Rodrigues CampainSpain2026-03-26Printing Dimensions UNQUALIFIED39Ioni Bowcher
1044Faith GillianJapan2026-03-31Chemel, James L Cpa PROPOSAL91Amy Elsner
1045Jeanfrancois VenereGermany2026-04-22Feiner Bros PROPOSAL55Bernardo Dominic
1046Julie StensethArgentina2026-04-13Buckley Miller Wright QUALIFIED3Anna Fali
1047Octavia MaletArgentina2026-03-25Truhlar And Truhlar Attys PROPOSAL3Stephen Shaw
1048Jones VocelkaSpain2026-04-06King, Christopher A Esq UNQUALIFIED23Onyama Limba
1049Ricardo GauchoArgentina2026-03-29Printing Dimensions NEW90Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Claire TollnerUnited KingdomElwin Sharvill UNQUALIFIED
Greenwood BologniaSpainAnna Fali NEGOTIATION
Johnson SergiFranceIoni Bowcher PROPOSAL
Aika InouyeAustraliaAmy Elsner RENEWAL
David DarakjyGermanyElwin Sharvill PROPOSAL
Francesco ShinkoGermanyOnyama Limba PROPOSAL
Faith GillianSpainIvan Magalhaes NEW
Kaitlin OstroskyItalyOnyama Limba NEGOTIATION
Adams MorascaItalyOnyama Limba QUALIFIED
Arvin AlbaresCanadaBernardo Dominic UNQUALIFIED
Murillo MaletArgentinaAnna Fali NEGOTIATION
Claire TollnerRussiaXuxue Feng RENEWAL
Clifford RimCanadaAnna Fali RENEWAL
Chavez BriddickSpainBernardo Dominic NEW
Mujtaba NickaGermanyAmy Elsner PROPOSAL
Ivar PaprockiJapanIoni Bowcher NEW
Murillo MaletIndiaAsiya Javayant PROPOSAL
Deepesh ChuiItalyBernardo Dominic NEW
James ButtCanadaAmy Elsner PROPOSAL
Mujtaba NickaCanadaIoni Bowcher RENEWAL
Cody SaylorsSpainIoni Bowcher RENEWAL
Rodrigues CampainGermanyElwin Sharvill UNQUALIFIED
Ricardo GauchoIndiaIvan Magalhaes RENEWAL
Arvin AlbaresFranceOnyama Limba QUALIFIED
David DarakjyArgentinaAnna Fali NEGOTIATION
Jennifer AmigonJapanXuxue Feng NEW
Jefferson SchemmerArgentinaAnna Fali RENEWAL
James ButtCanadaStephen Shaw QUALIFIED
Adams MorascaItalyAsiya Javayant UNQUALIFIED
Tony FollerItalyOnyama Limba PROPOSAL
Ashley DoeIndiaAsiya Javayant QUALIFIED
Izzy GarufiAustraliaIvan Magalhaes PROPOSAL
Chavez BriddickCanadaStephen Shaw NEW
Aika InouyeBrazilOnyama Limba NEW
Deepesh ChuiFranceAnna Fali NEGOTIATION
Mujtaba NickaUnited KingdomElwin Sharvill PROPOSAL
Sinclair WaycottFranceBernardo Dominic NEGOTIATION
Darci PoquetteArgentinaIvan Magalhaes QUALIFIED
Octavia MaletCanadaElwin Sharvill NEGOTIATION
Faith GillianItalyStephen Shaw PROPOSAL
Salvatore StockhamRussiaElwin Sharvill QUALIFIED
Rodrigues CampainRussiaIoni Bowcher NEW
Emily WhobreyCanadaAmy Elsner QUALIFIED
Octavia MaletIndiaAmy Elsner PROPOSAL
Deepesh ChuiAustraliaElwin Sharvill QUALIFIED
Julie StensethArgentinaIvan Magalhaes UNQUALIFIED
Tony FollerBrazilXuxue Feng QUALIFIED
Maria MarrierJapanIvan Magalhaes NEW
Ricardo GauchoIndiaOnyama Limba UNQUALIFIED
Aika InouyeSpainStephen Shaw NEGOTIATION
Frozen Columns
Name
Clifford Rim
Murillo Malet
Claire Tollner
Maisha Rulapaugh
Jefferson Schemmer
Greenwood Bolognia
Cody Saylors
Tony Foller
Jefferson Schemmer
Aditya Kusko
Silvio Slusarski
Nicolas Iturbide
James Butt
Jones Vocelka
Chavez Briddick
Salvatore Stockham
Greenwood Bolognia
Kadeem Flosi
Claire Tollner
Maisha Rulapaugh
Jefferson Schemmer
Kaitlin Ostrosky
David Darakjy
Aika Inouye
Kadeem Flosi
Silvio Slusarski
Maria Marrier
Maisha Rulapaugh
Ashley Doe
Cody Saylors
Alejandro Perin
Claire Tollner
Leja Caldarera
Mujtaba Nicka
Leja Caldarera
Leja Caldarera
Antonio Caudy
Ashley Doe
Silvio Slusarski
Francesco Shinko
Morrow Ruta
Maria Marrier
Leon Oldroyd
Kaitlin Ostrosky
Antonio Caudy
Maisha Rulapaugh
Juan Wieser
Maisha Rulapaugh
Morrow Ruta
Izzy Garufi
IdCountryDate
1000Canada2026-04-02
1001India2026-03-28
1002Australia2026-04-21
1003United Kingdom2026-04-09
1004Germany2026-04-09
1005Australia2026-03-29
1006Brazil2026-03-24
1007Spain2026-04-19
1008Spain2026-04-02
1009Germany2026-04-08
1010India2026-04-07
1011Japan2026-03-25
1012Germany2026-04-08
1013Australia2026-04-12
1014France2026-04-21
1015Italy2026-04-11
1016Canada2026-04-21
1017France2026-04-04
1018Spain2026-04-19
1019Canada2026-04-02
1020United Kingdom2026-04-02
1021Argentina2026-04-09
1022Australia2026-03-24
1023Japan2026-04-06
1024Brazil2026-03-31
1025France2026-03-25
1026France2026-04-09
1027United Kingdom2026-04-07
1028Australia2026-04-05
1029France2026-04-09
1030United Kingdom2026-04-16
1031Italy2026-04-08
1032Brazil2026-04-22
1033Argentina2026-03-29
1034Argentina2026-04-08
1035Spain2026-04-10
1036Russia2026-04-16
1037Spain2026-03-25
1038India2026-04-05
1039Brazil2026-04-06
1040Brazil2026-04-07
1041United Kingdom2026-04-21
1042India2026-04-13
1043Italy2026-04-19
1044India2026-03-30
1045Italy2026-04-03
1046France2026-03-31
1047Germany2026-04-21
1048Japan2026-04-20
1049France2026-04-18

On-Demand Data

NameIdCountryDate
Claire Tollner1000France2026-04-05
Stacey Maclead1001France2026-04-22
Jones Vocelka1002India2026-04-09
Silvio Slusarski1003Russia2026-04-22
Izzy Garufi1004France2026-03-28
Tony Foller1005Russia2026-03-28
Wickens Nestle1006Russia2026-04-03
Aika Inouye1007Argentina2026-03-28
Salvatore Stockham1008Italy2026-03-29
Aditya Kusko1009Italy2026-04-15
Morrow Ruta1010Canada2026-04-11
Kadeem Flosi1011Brazil2026-04-22
Faith Gillian1012Japan2026-04-02
Ashley Doe1013France2026-03-27
Izzy Garufi1014Australia2026-04-05
Wickens Nestle1015Russia2026-03-24
Mayumi Kolmetz1016Russia2026-03-25
Adams Morasca1017Spain2026-04-18
Alejandro Perin1018Russia2026-03-31
Deepesh Chui1019Australia2026-04-04
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ivar PaprockiCanadaOnyama Limba UNQUALIFIED
Francesco ShinkoRussiaAmy Elsner UNQUALIFIED
Aditya KuskoAustraliaIoni Bowcher NEW
Rodrigues CampainBrazilOnyama Limba NEW
Ashley DoeJapanAnna Fali NEW
Wickens NestleAustraliaStephen Shaw NEGOTIATION
Murillo MaletItalyXuxue Feng RENEWAL
Aruna FigeroaItalyAnna Fali PROPOSAL
Faith GillianGermanyIvan Magalhaes PROPOSAL
Silvio SlusarskiBrazilXuxue Feng NEW
Johnson SergiJapanAnna Fali RENEWAL
Murillo MaletUnited KingdomIvan Magalhaes QUALIFIED
Emily WhobreyIndiaAmy Elsner RENEWAL
David DarakjyCanadaBernardo Dominic QUALIFIED
Leon OldroydAustraliaIoni Bowcher NEW
Izzy GarufiBrazilIvan Magalhaes NEW
Rodrigues CampainArgentinaIvan Magalhaes NEGOTIATION
Munro FerenczUnited KingdomBernardo Dominic QUALIFIED
Jeanfrancois VenereIndiaIvan Magalhaes UNQUALIFIED
Leon OldroydRussiaIvan Magalhaes NEGOTIATION
Maisha RulapaughSpainElwin Sharvill RENEWAL
Chavez BriddickCanadaOnyama Limba QUALIFIED
Maria MarrierArgentinaBernardo Dominic NEW
Ivar PaprockiJapanBernardo Dominic PROPOSAL
Leon OldroydAustraliaOnyama Limba QUALIFIED
Rodrigues CampainRussiaAmy Elsner UNQUALIFIED
Julie StensethArgentinaAsiya Javayant PROPOSAL
Kadeem FlosiBrazilElwin Sharvill NEW
Nicolas IturbideCanadaAnna Fali UNQUALIFIED
Faith GillianGermanyElwin Sharvill RENEWAL
Smith GlickGermanyStephen Shaw UNQUALIFIED
Antonio CaudyBrazilAnna Fali NEGOTIATION
Ashley DoeSpainStephen Shaw PROPOSAL
Ricardo GauchoArgentinaIoni Bowcher RENEWAL
Faith GillianJapanOnyama Limba NEGOTIATION
Stacey MacleadBrazilIoni Bowcher RENEWAL
Deepesh ChuiGermanyOnyama Limba QUALIFIED
Stacey MacleadBrazilAsiya Javayant PROPOSAL
Nicolas IturbideCanadaOnyama Limba NEW
Misaki RoysterCanadaAmy Elsner 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>