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
Emily WhobreyCanadaBernardo Dominic UNQUALIFIED
Aika InouyeIndiaOnyama Limba RENEWAL
Leon OldroydIndiaXuxue Feng QUALIFIED
Maria MarrierJapanBernardo Dominic UNQUALIFIED
Rodrigues CampainArgentinaIoni Bowcher NEW
Ricardo GauchoUnited KingdomAnna Fali RENEWAL
Mayumi KolmetzCanadaAsiya Javayant PROPOSAL
Munro FerenczIndiaAsiya Javayant UNQUALIFIED
Arvin AlbaresJapanAsiya Javayant NEW
Mayumi KolmetzAustraliaElwin Sharvill UNQUALIFIED
Leja CaldareraArgentinaElwin Sharvill UNQUALIFIED
Misaki RoysterSpainXuxue Feng NEGOTIATION
Cody SaylorsSpainXuxue Feng PROPOSAL
Silvio SlusarskiJapanXuxue Feng PROPOSAL
Munro FerenczGermanyOnyama Limba PROPOSAL
Morrow RutaArgentinaElwin Sharvill QUALIFIED
Julie StensethBrazilXuxue Feng RENEWAL
Stacey MacleadJapanOnyama Limba NEW
Octavia MaletArgentinaIvan Magalhaes PROPOSAL
Alejandro PerinBrazilOnyama Limba NEGOTIATION
Morrow RutaCanadaXuxue Feng QUALIFIED
Leon OldroydJapanElwin Sharvill PROPOSAL
Maisha RulapaughSpainElwin Sharvill RENEWAL
Wickens NestleArgentinaStephen Shaw NEW
Wickens NestleCanadaIoni Bowcher QUALIFIED
Cody SaylorsUnited KingdomAmy Elsner PROPOSAL
Rodrigues CampainBrazilAsiya Javayant UNQUALIFIED
Costa DilliardIndiaBernardo Dominic RENEWAL
Costa DilliardCanadaOnyama Limba PROPOSAL
Salvatore StockhamItalyAmy Elsner PROPOSAL
Francesco ShinkoIndiaXuxue Feng QUALIFIED
Salvatore StockhamIndiaElwin Sharvill PROPOSAL
Jefferson SchemmerCanadaIoni Bowcher NEW
Greenwood BologniaItalyBernardo Dominic NEGOTIATION
Juan WieserIndiaXuxue Feng UNQUALIFIED
Kaitlin OstroskyJapanAsiya Javayant RENEWAL
Jefferson SchemmerIndiaStephen Shaw PROPOSAL
Leon OldroydCanadaIoni Bowcher RENEWAL
Johnson SergiArgentinaBernardo Dominic NEW
Morrow RutaAustraliaOnyama Limba NEGOTIATION
Munro FerenczBrazilOnyama Limba NEW
Clifford RimGermanyXuxue Feng NEW
Morrow RutaCanadaElwin Sharvill QUALIFIED
Leja CaldareraSpainIoni Bowcher NEGOTIATION
Faith GillianArgentinaXuxue Feng QUALIFIED
Arvin AlbaresBrazilIoni Bowcher PROPOSAL
Stacey MacleadSpainBernardo Dominic NEW
Aruna FigeroaItalyIvan Magalhaes PROPOSAL
Jefferson SchemmerJapanOnyama Limba NEGOTIATION
Aika InouyeBrazilAsiya Javayant NEW
Horizontal
NameCountryRepresentativeStatus
Julie StensethIndiaBernardo Dominic PROPOSAL
Ricardo GauchoAustraliaAsiya Javayant UNQUALIFIED
Izzy GarufiItalyStephen Shaw NEW
Wickens NestleJapanOnyama Limba QUALIFIED
Johnson SergiItalyAnna Fali NEGOTIATION
Kaitlin OstroskyJapanBernardo Dominic NEW
Cody SaylorsUnited KingdomElwin Sharvill NEW
Jones VocelkaAustraliaStephen Shaw RENEWAL
Tony FollerCanadaStephen Shaw RENEWAL
Ashley DoeUnited KingdomIoni Bowcher NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Maisha RulapaughBrazil2026-05-11Buckley Miller Wright NEW11Ivan Magalhaes
1001Alejandro PerinCanada2026-04-12Rousseaux, Michael Esq NEW36Anna Fali
1002Jennifer AmigonArgentina2026-04-23Rangoni Of Florence PROPOSAL78Amy Elsner
1003Darci PoquetteItaly2026-04-30Morlong Associates UNQUALIFIED62Ioni Bowcher
1004Aruna FigeroaBrazil2026-04-16Chapman, Ross E Esq PROPOSAL58Xuxue Feng
1005Smith GlickArgentina2026-04-26Buckley Miller Wright NEGOTIATION97Bernardo Dominic
1006Aika InouyeSpain2026-04-29Chanay, Jeffrey A Esq UNQUALIFIED89Asiya Javayant
1007Mujtaba NickaItaly2026-04-13Dorl, James J Esq PROPOSAL65Asiya Javayant
1008Rodrigues CampainRussia2026-04-14Rangoni Of Florence NEGOTIATION27Amy Elsner
1009Jennifer AmigonRussia2026-05-02Chanay, Jeffrey A Esq PROPOSAL10Asiya Javayant
1010Isabel BowleyItaly2026-04-14Truhlar And Truhlar Attys NEW36Ioni Bowcher
1011Deepesh ChuiCanada2026-04-18Buckley Miller Wright NEW82Ivan Magalhaes
1012Deepesh ChuiJapan2026-05-09King, Christopher A Esq QUALIFIED20Amy Elsner
1013Smith GlickArgentina2026-05-06Benton, John B Jr RENEWAL22Bernardo Dominic
1014Mujtaba NickaUnited Kingdom2026-04-19Commercial Press RENEWAL53Xuxue Feng
1015David DarakjyItaly2026-05-06Rangoni Of Florence PROPOSAL1Xuxue Feng
1016Juan WieserArgentina2026-04-22Feltz Printing Service PROPOSAL83Ioni Bowcher
1017Murillo MaletAustralia2026-05-11Dorl, James J Esq QUALIFIED45Onyama Limba
1018Maisha RulapaughAustralia2026-05-04Chapman, Ross E Esq RENEWAL81Asiya Javayant
1019Smith GlickGermany2026-05-07Dorl, James J Esq NEGOTIATION70Bernardo Dominic
1020Claire TollnerRussia2026-05-07Chemel, James L Cpa RENEWAL75Elwin Sharvill
1021Tony FollerItaly2026-04-28Commercial Press NEGOTIATION59Ivan Magalhaes
1022Alejandro PerinBrazil2026-05-05Commercial Press UNQUALIFIED13Anna Fali
1023Murillo MaletFrance2026-04-13Rangoni Of Florence NEW45Ioni Bowcher
1024Cody SaylorsBrazil2026-05-08King, Christopher A Esq QUALIFIED27Asiya Javayant
1025Emily WhobreyBrazil2026-04-30Benton, John B Jr UNQUALIFIED63Asiya Javayant
1026Darci PoquetteSpain2026-04-14Rangoni Of Florence NEW21Elwin Sharvill
1027Maria MarrierAustralia2026-04-21Rousseaux, Michael Esq UNQUALIFIED32Stephen Shaw
1028Ivar PaprockiUnited Kingdom2026-04-12Dorl, James J Esq UNQUALIFIED56Stephen Shaw
1029Kadeem FlosiFrance2026-04-18Feiner Bros NEW2Xuxue Feng
1030Chavez BriddickCanada2026-05-04Rangoni Of Florence NEGOTIATION49Stephen Shaw
1031Francesco ShinkoUnited Kingdom2026-04-16Feiner Bros RENEWAL34Anna Fali
1032Alejandro PerinBrazil2026-04-15Rangoni Of Florence PROPOSAL97Anna Fali
1033Adams MorascaArgentina2026-04-16Commercial Press PROPOSAL78Elwin Sharvill
1034Misaki RoysterGermany2026-04-28Truhlar And Truhlar Attys RENEWAL78Amy Elsner
1035Johnson SergiJapan2026-05-09King, Christopher A Esq QUALIFIED77Elwin Sharvill
1036Greenwood BologniaGermany2026-04-26Benton, John B Jr NEGOTIATION7Xuxue Feng
1037Aditya KuskoSpain2026-04-30Morlong Associates QUALIFIED47Xuxue Feng
1038Darci PoquetteBrazil2026-04-26Buckley Miller Wright UNQUALIFIED60Xuxue Feng
1039Adams MorascaUnited Kingdom2026-05-02Feiner Bros PROPOSAL30Onyama Limba
1040Clifford RimIndia2026-05-07Chapman, Ross E Esq RENEWAL80Stephen Shaw
1041Morrow RutaSpain2026-05-02Rangoni Of Florence RENEWAL94Elwin Sharvill
1042Jones VocelkaCanada2026-04-29Printing Dimensions PROPOSAL25Elwin Sharvill
1043Misaki RoysterGermany2026-05-06Chapman, Ross E Esq NEGOTIATION69Asiya Javayant
1044Clifford RimAustralia2026-05-11Rangoni Of Florence NEGOTIATION91Xuxue Feng
1045Ivar PaprockiJapan2026-05-02Feltz Printing Service UNQUALIFIED65Xuxue Feng
1046Stacey MacleadBrazil2026-05-04Feltz Printing Service RENEWAL75Ivan Magalhaes
1047Kadeem FlosiAustralia2026-04-23Rousseaux, Michael Esq RENEWAL3Onyama Limba
1048Aika InouyeUnited Kingdom2026-04-23King, Christopher A Esq NEW13Elwin Sharvill
1049Aika InouyeSpain2026-05-09Buckley Miller Wright NEGOTIATION77Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Tony FollerSpainBernardo Dominic QUALIFIED
Tony FollerAustraliaXuxue Feng QUALIFIED
Rodrigues CampainItalyBernardo Dominic NEGOTIATION
Maria MarrierCanadaAsiya Javayant QUALIFIED
Kadeem FlosiBrazilStephen Shaw UNQUALIFIED
Aika InouyeArgentinaStephen Shaw NEGOTIATION
Costa DilliardAustraliaIoni Bowcher RENEWAL
Nicolas IturbideRussiaBernardo Dominic RENEWAL
Julie StensethBrazilIoni Bowcher NEW
Cody SaylorsFranceOnyama Limba NEGOTIATION
Darci PoquetteJapanAmy Elsner RENEWAL
Ashley DoeBrazilStephen Shaw NEW
Antonio CaudyBrazilIoni Bowcher NEGOTIATION
Octavia MaletGermanyXuxue Feng PROPOSAL
Jennifer AmigonGermanyOnyama Limba PROPOSAL
Costa DilliardGermanyAsiya Javayant UNQUALIFIED
Tony FollerSpainAsiya Javayant RENEWAL
Jeanfrancois VenereJapanIoni Bowcher RENEWAL
Faith GillianCanadaIvan Magalhaes UNQUALIFIED
Morrow RutaRussiaIvan Magalhaes NEW
Julie StensethSpainStephen Shaw QUALIFIED
Leon OldroydSpainIoni Bowcher UNQUALIFIED
Deepesh ChuiCanadaBernardo Dominic QUALIFIED
Johnson SergiFranceStephen Shaw RENEWAL
Misaki RoysterAustraliaIvan Magalhaes UNQUALIFIED
James ButtArgentinaStephen Shaw PROPOSAL
Claire TollnerFranceAmy Elsner PROPOSAL
Deepesh ChuiArgentinaXuxue Feng NEW
Chavez BriddickBrazilAnna Fali UNQUALIFIED
Arvin AlbaresSpainAnna Fali NEW
Morrow RutaGermanyBernardo Dominic UNQUALIFIED
Morrow RutaRussiaAsiya Javayant RENEWAL
Jefferson SchemmerArgentinaIoni Bowcher PROPOSAL
Adams MorascaGermanyAsiya Javayant PROPOSAL
Antonio CaudyUnited KingdomIoni Bowcher NEGOTIATION
Emily WhobreyIndiaIvan Magalhaes NEW
Tony FollerGermanyBernardo Dominic QUALIFIED
Smith GlickAustraliaBernardo Dominic RENEWAL
Cody SaylorsCanadaStephen Shaw QUALIFIED
Mayumi KolmetzJapanElwin Sharvill PROPOSAL
Francesco ShinkoItalyXuxue Feng PROPOSAL
Aditya KuskoArgentinaBernardo Dominic UNQUALIFIED
Cody SaylorsSpainStephen Shaw UNQUALIFIED
Mayumi KolmetzItalyOnyama Limba NEW
Jeanfrancois VenereSpainOnyama Limba UNQUALIFIED
Emily WhobreyUnited KingdomBernardo Dominic UNQUALIFIED
Julie StensethUnited KingdomAnna Fali PROPOSAL
Julie StensethIndiaXuxue Feng NEGOTIATION
Emily WhobreyBrazilIvan Magalhaes QUALIFIED
Ashley DoeGermanyXuxue Feng PROPOSAL
Frozen Columns
Name
Julie Stenseth
Tony Foller
Stacey Maclead
Costa Dilliard
Alejandro Perin
James Butt
Silvio Slusarski
Leon Oldroyd
Aditya Kusko
Leja Caldarera
Nicolas Iturbide
Francesco Shinko
Ashley Doe
Morrow Ruta
Octavia Malet
Antonio Caudy
Sinclair Waycott
Adams Morasca
Juan Wieser
Smith Glick
Maria Marrier
Mujtaba Nicka
Ashley Doe
Jefferson Schemmer
Leja Caldarera
James Butt
Juan Wieser
Aika Inouye
Darci Poquette
Mayumi Kolmetz
Maisha Rulapaugh
Tony Foller
Emily Whobrey
Wickens Nestle
Morrow Ruta
Aditya Kusko
Isabel Bowley
James Butt
Aruna Figeroa
Julie Stenseth
Maria Marrier
Izzy Garufi
Alejandro Perin
Wickens Nestle
Rodrigues Campain
Silvio Slusarski
Maisha Rulapaugh
Silvio Slusarski
Faith Gillian
Tony Foller
IdCountryDate
1000Italy2026-04-26
1001Japan2026-05-04
1002France2026-05-07
1003France2026-04-28
1004United Kingdom2026-04-29
1005Germany2026-04-13
1006Russia2026-04-14
1007Argentina2026-04-18
1008Spain2026-04-12
1009Spain2026-04-24
1010Spain2026-04-20
1011India2026-04-20
1012India2026-05-02
1013Argentina2026-04-12
1014Spain2026-05-10
1015Spain2026-05-11
1016Brazil2026-04-14
1017France2026-04-20
1018Spain2026-04-21
1019Canada2026-05-10
1020Australia2026-04-27
1021Italy2026-04-24
1022Brazil2026-04-29
1023Brazil2026-04-22
1024Spain2026-05-05
1025United Kingdom2026-04-23
1026Canada2026-04-20
1027Australia2026-04-21
1028Canada2026-04-20
1029Australia2026-04-24
1030Spain2026-04-20
1031Russia2026-05-11
1032Japan2026-04-15
1033France2026-05-04
1034United Kingdom2026-04-25
1035Canada2026-05-02
1036United Kingdom2026-04-30
1037Brazil2026-04-30
1038France2026-05-03
1039Canada2026-04-20
1040Russia2026-04-16
1041United Kingdom2026-05-09
1042United Kingdom2026-04-19
1043Russia2026-04-29
1044Argentina2026-05-01
1045Australia2026-05-03
1046Brazil2026-05-10
1047Australia2026-04-25
1048Japan2026-05-01
1049Japan2026-04-14

On-Demand Data

NameIdCountryDate
Stacey Maclead1000France2026-05-03
Jennifer Amigon1001Russia2026-04-27
Smith Glick1002Argentina2026-04-20
Kadeem Flosi1003France2026-04-29
Wickens Nestle1004Brazil2026-05-01
Alejandro Perin1005Argentina2026-05-07
Isabel Bowley1006Germany2026-04-28
Emily Whobrey1007India2026-04-25
Leja Caldarera1008Italy2026-04-21
Aditya Kusko1009Canada2026-04-21
Wickens Nestle1010Argentina2026-04-12
Deepesh Chui1011Canada2026-04-20
Smith Glick1012Argentina2026-05-05
Stacey Maclead1013Germany2026-04-14
Aruna Figeroa1014Spain2026-04-27
Mayumi Kolmetz1015Canada2026-05-05
Aditya Kusko1016India2026-04-20
Sinclair Waycott1017Italy2026-04-28
Greenwood Bolognia1018Italy2026-04-18
Rodrigues Campain1019Russia2026-05-02
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Leon OldroydItalyAsiya Javayant QUALIFIED
Kaitlin OstroskyGermanyBernardo Dominic PROPOSAL
Leon OldroydCanadaElwin Sharvill UNQUALIFIED
Rodrigues CampainSpainIvan Magalhaes PROPOSAL
Smith GlickArgentinaAmy Elsner RENEWAL
Jefferson SchemmerSpainBernardo Dominic PROPOSAL
Maria MarrierBrazilAnna Fali RENEWAL
Murillo MaletUnited KingdomElwin Sharvill NEGOTIATION
Smith GlickAustraliaIoni Bowcher QUALIFIED
Deepesh ChuiIndiaElwin Sharvill NEGOTIATION
Greenwood BologniaGermanyAmy Elsner NEW
Greenwood BologniaSpainAsiya Javayant NEW
Antonio CaudyRussiaOnyama Limba PROPOSAL
Ricardo GauchoFranceElwin Sharvill NEW
Kadeem FlosiUnited KingdomBernardo Dominic NEGOTIATION
Alejandro PerinArgentinaXuxue Feng NEGOTIATION
Jennifer AmigonIndiaAnna Fali RENEWAL
Octavia MaletUnited KingdomAmy Elsner NEGOTIATION
Smith GlickArgentinaAmy Elsner NEGOTIATION
Wickens NestleSpainOnyama Limba NEGOTIATION
Murillo MaletAustraliaIoni Bowcher NEGOTIATION
Mayumi KolmetzItalyIoni Bowcher UNQUALIFIED
Clifford RimRussiaIvan Magalhaes UNQUALIFIED
Adams MorascaJapanBernardo Dominic NEW
Clifford RimAustraliaOnyama Limba NEGOTIATION
Francesco ShinkoIndiaBernardo Dominic PROPOSAL
Misaki RoysterIndiaAmy Elsner PROPOSAL
Sinclair WaycottGermanyAnna Fali NEGOTIATION
Aditya KuskoJapanXuxue Feng NEGOTIATION
Stacey MacleadJapanAmy Elsner RENEWAL
Sinclair WaycottArgentinaElwin Sharvill QUALIFIED
Kaitlin OstroskyAustraliaAnna Fali UNQUALIFIED
Jennifer AmigonAustraliaAsiya Javayant NEGOTIATION
Clifford RimIndiaStephen Shaw RENEWAL
Emily WhobreyAustraliaAsiya Javayant UNQUALIFIED
Aruna FigeroaFranceAmy Elsner PROPOSAL
Leja CaldareraAustraliaAmy Elsner RENEWAL
James ButtArgentinaAsiya Javayant NEGOTIATION
Maisha RulapaughRussiaAsiya Javayant PROPOSAL
Kaitlin OstroskySpainElwin Sharvill NEW

<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>