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
James ButtItalyAmy Elsner PROPOSAL
Juan WieserBrazilOnyama Limba QUALIFIED
Johnson SergiIndiaElwin Sharvill UNQUALIFIED
Ricardo GauchoCanadaBernardo Dominic PROPOSAL
Arvin AlbaresBrazilAmy Elsner UNQUALIFIED
Chavez BriddickSpainIoni Bowcher QUALIFIED
Mayumi KolmetzSpainIvan Magalhaes QUALIFIED
Jefferson SchemmerRussiaBernardo Dominic QUALIFIED
Mayumi KolmetzFranceAsiya Javayant NEGOTIATION
Juan WieserRussiaOnyama Limba NEW
Mujtaba NickaJapanAsiya Javayant NEW
Murillo MaletIndiaElwin Sharvill UNQUALIFIED
Greenwood BologniaCanadaIvan Magalhaes RENEWAL
Alejandro PerinSpainBernardo Dominic NEW
Jennifer AmigonSpainAsiya Javayant RENEWAL
Francesco ShinkoItalyXuxue Feng NEW
Francesco ShinkoItalyIoni Bowcher UNQUALIFIED
Deepesh ChuiRussiaOnyama Limba UNQUALIFIED
Deepesh ChuiUnited KingdomElwin Sharvill QUALIFIED
Izzy GarufiArgentinaBernardo Dominic NEW
Jefferson SchemmerItalyOnyama Limba RENEWAL
Wickens NestleFranceIoni Bowcher RENEWAL
Aruna FigeroaGermanyOnyama Limba NEW
Ricardo GauchoAustraliaIoni Bowcher NEGOTIATION
Rodrigues CampainFranceOnyama Limba UNQUALIFIED
Leon OldroydJapanXuxue Feng PROPOSAL
Francesco ShinkoJapanAsiya Javayant UNQUALIFIED
Cody SaylorsGermanyAmy Elsner NEGOTIATION
Arvin AlbaresAustraliaOnyama Limba PROPOSAL
Juan WieserSpainIoni Bowcher QUALIFIED
Rodrigues CampainJapanXuxue Feng RENEWAL
Kadeem FlosiArgentinaAmy Elsner UNQUALIFIED
Claire TollnerUnited KingdomElwin Sharvill NEW
Izzy GarufiIndiaAsiya Javayant UNQUALIFIED
Darci PoquetteRussiaIvan Magalhaes NEW
Adams MorascaGermanyAmy Elsner QUALIFIED
Darci PoquetteCanadaXuxue Feng NEW
Sinclair WaycottRussiaIvan Magalhaes RENEWAL
Munro FerenczGermanyAsiya Javayant QUALIFIED
Johnson SergiUnited KingdomOnyama Limba QUALIFIED
Rodrigues CampainBrazilIvan Magalhaes NEW
Ricardo GauchoUnited KingdomAnna Fali PROPOSAL
Aruna FigeroaGermanyIoni Bowcher PROPOSAL
Murillo MaletGermanyAsiya Javayant NEGOTIATION
Mayumi KolmetzIndiaElwin Sharvill PROPOSAL
Costa DilliardAustraliaElwin Sharvill NEGOTIATION
Nicolas IturbideIndiaXuxue Feng QUALIFIED
Silvio SlusarskiFranceBernardo Dominic UNQUALIFIED
Juan WieserRussiaXuxue Feng PROPOSAL
Rodrigues CampainAustraliaAsiya Javayant RENEWAL
Horizontal
NameCountryRepresentativeStatus
Johnson SergiRussiaBernardo Dominic QUALIFIED
Adams MorascaCanadaOnyama Limba NEW
Alejandro PerinRussiaAmy Elsner QUALIFIED
Darci PoquetteRussiaIoni Bowcher NEGOTIATION
Salvatore StockhamRussiaAmy Elsner RENEWAL
Deepesh ChuiBrazilStephen Shaw NEW
Jennifer AmigonSpainElwin Sharvill QUALIFIED
Salvatore StockhamIndiaIoni Bowcher UNQUALIFIED
Munro FerenczArgentinaElwin Sharvill NEW
Octavia MaletItalyBernardo Dominic QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Adams MorascaAustralia2026-04-18Rangoni Of Florence QUALIFIED1Stephen Shaw
1001James ButtJapan2026-04-29Chanay, Jeffrey A Esq QUALIFIED8Anna Fali
1002Johnson SergiGermany2026-04-18King, Christopher A Esq NEW75Asiya Javayant
1003Jefferson SchemmerRussia2026-04-29Printing Dimensions QUALIFIED7Bernardo Dominic
1004Murillo MaletUnited Kingdom2026-05-05Benton, John B Jr UNQUALIFIED4Amy Elsner
1005Munro FerenczCanada2026-04-17Benton, John B Jr PROPOSAL47Elwin Sharvill
1006Costa DilliardGermany2026-04-19Morlong Associates UNQUALIFIED71Xuxue Feng
1007Greenwood BologniaSpain2026-05-10Chanay, Jeffrey A Esq NEGOTIATION4Amy Elsner
1008Salvatore StockhamItaly2026-04-19Chemel, James L Cpa QUALIFIED17Anna Fali
1009Chavez BriddickAustralia2026-04-16Dorl, James J Esq NEGOTIATION99Elwin Sharvill
1010Silvio SlusarskiIndia2026-04-20Feltz Printing Service UNQUALIFIED85Xuxue Feng
1011Antonio CaudyArgentina2026-04-27Chanay, Jeffrey A Esq PROPOSAL71Amy Elsner
1012Wickens NestleGermany2026-05-05Chemel, James L Cpa NEW84Bernardo Dominic
1013Morrow RutaUnited Kingdom2026-04-12Buckley Miller Wright RENEWAL70Onyama Limba
1014Antonio CaudyArgentina2026-04-24Chemel, James L Cpa NEGOTIATION25Anna Fali
1015Ivar PaprockiUnited Kingdom2026-05-11Chemel, James L Cpa PROPOSAL73Xuxue Feng
1016James ButtItaly2026-05-09Chanay, Jeffrey A Esq NEGOTIATION36Stephen Shaw
1017Antonio CaudyArgentina2026-04-23Feltz Printing Service RENEWAL7Ivan Magalhaes
1018Aruna FigeroaRussia2026-04-23Feltz Printing Service QUALIFIED47Ivan Magalhaes
1019Arvin AlbaresCanada2026-04-29Chanay, Jeffrey A Esq NEW66Elwin Sharvill
1020Darci PoquetteItaly2026-05-07Benton, John B Jr UNQUALIFIED34Xuxue Feng
1021Jeanfrancois VenereArgentina2026-05-07Feiner Bros UNQUALIFIED74Ioni Bowcher
1022Clifford RimJapan2026-04-23Chemel, James L Cpa PROPOSAL26Elwin Sharvill
1023Munro FerenczGermany2026-04-26Rangoni Of Florence UNQUALIFIED13Ivan Magalhaes
1024Greenwood BologniaIndia2026-04-12Morlong Associates NEW77Asiya Javayant
1025Octavia MaletItaly2026-04-24Commercial Press RENEWAL47Xuxue Feng
1026Aditya KuskoJapan2026-04-18Feiner Bros QUALIFIED83Ioni Bowcher
1027Silvio SlusarskiBrazil2026-05-11Commercial Press PROPOSAL21Xuxue Feng
1028Clifford RimIndia2026-05-07Chapman, Ross E Esq NEGOTIATION49Stephen Shaw
1029Silvio SlusarskiIndia2026-04-26Feiner Bros NEGOTIATION65Amy Elsner
1030Jennifer AmigonIndia2026-04-18Feiner Bros PROPOSAL72Anna Fali
1031Maisha RulapaughSpain2026-04-15Feiner Bros PROPOSAL65Ioni Bowcher
1032Johnson SergiGermany2026-04-30Rousseaux, Michael Esq RENEWAL7Bernardo Dominic
1033Chavez BriddickItaly2026-04-22Feltz Printing Service PROPOSAL37Ioni Bowcher
1034Ivar PaprockiAustralia2026-04-28Rousseaux, Michael Esq RENEWAL44Asiya Javayant
1035Leja CaldareraGermany2026-04-29Morlong Associates UNQUALIFIED13Bernardo Dominic
1036Jefferson SchemmerIndia2026-04-24Dorl, James J Esq UNQUALIFIED72Bernardo Dominic
1037Emily WhobreyFrance2026-05-04Feltz Printing Service QUALIFIED52Stephen Shaw
1038James ButtRussia2026-04-28Chapman, Ross E Esq QUALIFIED44Stephen Shaw
1039Izzy GarufiCanada2026-04-18Commercial Press NEGOTIATION95Onyama Limba
1040Francesco ShinkoAustralia2026-04-24Morlong Associates QUALIFIED7Ivan Magalhaes
1041Kaitlin OstroskyUnited Kingdom2026-05-08Benton, John B Jr PROPOSAL14Onyama Limba
1042Darci PoquetteSpain2026-05-09Chapman, Ross E Esq UNQUALIFIED88Asiya Javayant
1043Maria MarrierItaly2026-04-22Chemel, James L Cpa QUALIFIED37Ivan Magalhaes
1044Adams MorascaCanada2026-04-13Buckley Miller Wright UNQUALIFIED66Ivan Magalhaes
1045Deepesh ChuiRussia2026-04-18Chemel, James L Cpa UNQUALIFIED48Anna Fali
1046Claire TollnerItaly2026-05-02Chapman, Ross E Esq NEGOTIATION38Xuxue Feng
1047Ashley DoeArgentina2026-04-26Chanay, Jeffrey A Esq UNQUALIFIED91Amy Elsner
1048Morrow RutaSpain2026-05-03King, Christopher A Esq NEGOTIATION59Stephen Shaw
1049Arvin AlbaresGermany2026-04-21Commercial Press UNQUALIFIED32Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Maria MarrierRussiaAsiya Javayant NEW
Clifford RimJapanAsiya Javayant NEW
Jeanfrancois VenereBrazilOnyama Limba NEW
Leja CaldareraAustraliaXuxue Feng QUALIFIED
Johnson SergiItalyElwin Sharvill QUALIFIED
Alejandro PerinUnited KingdomIoni Bowcher UNQUALIFIED
Silvio SlusarskiAustraliaAnna Fali UNQUALIFIED
Arvin AlbaresItalyAsiya Javayant RENEWAL
Maisha RulapaughUnited KingdomOnyama Limba RENEWAL
Darci PoquetteCanadaXuxue Feng NEGOTIATION
Izzy GarufiFranceBernardo Dominic NEW
Arvin AlbaresIndiaStephen Shaw PROPOSAL
Izzy GarufiJapanIvan Magalhaes NEGOTIATION
Rodrigues CampainItalyAmy Elsner UNQUALIFIED
Nicolas IturbideIndiaIvan Magalhaes UNQUALIFIED
Aruna FigeroaCanadaIvan Magalhaes QUALIFIED
Rodrigues CampainItalyElwin Sharvill UNQUALIFIED
Jones VocelkaUnited KingdomIoni Bowcher UNQUALIFIED
Aika InouyeAustraliaStephen Shaw NEGOTIATION
Jennifer AmigonSpainStephen Shaw QUALIFIED
Octavia MaletItalyAmy Elsner NEW
Rodrigues CampainUnited KingdomIvan Magalhaes NEW
Aditya KuskoAustraliaIvan Magalhaes UNQUALIFIED
Tony FollerAustraliaElwin Sharvill QUALIFIED
Morrow RutaGermanyAnna Fali PROPOSAL
Ricardo GauchoAustraliaIoni Bowcher RENEWAL
Clifford RimUnited KingdomOnyama Limba NEW
Aditya KuskoItalyIvan Magalhaes RENEWAL
Julie StensethAustraliaElwin Sharvill NEW
Darci PoquetteRussiaAmy Elsner PROPOSAL
Clifford RimRussiaStephen Shaw QUALIFIED
Julie StensethIndiaAsiya Javayant RENEWAL
Deepesh ChuiBrazilIvan Magalhaes UNQUALIFIED
Silvio SlusarskiCanadaAmy Elsner QUALIFIED
Izzy GarufiSpainAsiya Javayant QUALIFIED
Morrow RutaJapanBernardo Dominic QUALIFIED
Leon OldroydItalyIoni Bowcher NEW
Maria MarrierArgentinaStephen Shaw UNQUALIFIED
Salvatore StockhamUnited KingdomIvan Magalhaes NEW
Morrow RutaItalyAsiya Javayant UNQUALIFIED
Munro FerenczGermanyAsiya Javayant NEGOTIATION
Adams MorascaGermanyAsiya Javayant NEW
Mujtaba NickaGermanyBernardo Dominic RENEWAL
Jones VocelkaAustraliaAnna Fali NEW
Aruna FigeroaItalyStephen Shaw QUALIFIED
Francesco ShinkoIndiaStephen Shaw QUALIFIED
Leon OldroydItalyAsiya Javayant NEGOTIATION
Salvatore StockhamSpainIoni Bowcher QUALIFIED
Mayumi KolmetzAustraliaBernardo Dominic NEW
Munro FerenczFranceAnna Fali UNQUALIFIED
Frozen Columns
Name
Chavez Briddick
Clifford Rim
Ivar Paprocki
Jefferson Schemmer
Deepesh Chui
Arvin Albares
Leja Caldarera
Jeanfrancois Venere
Claire Tollner
Murillo Malet
Aika Inouye
Ivar Paprocki
Johnson Sergi
Francesco Shinko
Greenwood Bolognia
Rodrigues Campain
Isabel Bowley
Munro Ferencz
Murillo Malet
Munro Ferencz
Emily Whobrey
Kaitlin Ostrosky
Ashley Doe
Claire Tollner
Ashley Doe
Kadeem Flosi
Kaitlin Ostrosky
Leja Caldarera
Clifford Rim
Arvin Albares
Rodrigues Campain
Francesco Shinko
Johnson Sergi
James Butt
David Darakjy
Jefferson Schemmer
Maisha Rulapaugh
Adams Morasca
Costa Dilliard
Aditya Kusko
Aruna Figeroa
Ricardo Gaucho
Maria Marrier
Murillo Malet
Johnson Sergi
Greenwood Bolognia
Chavez Briddick
Rodrigues Campain
Chavez Briddick
Aditya Kusko
IdCountryDate
1000United Kingdom2026-04-29
1001Canada2026-05-09
1002Italy2026-05-02
1003Russia2026-05-01
1004India2026-04-20
1005Spain2026-05-09
1006Argentina2026-05-05
1007Argentina2026-05-03
1008Australia2026-04-24
1009Brazil2026-04-14
1010Russia2026-05-04
1011Japan2026-05-10
1012Australia2026-05-04
1013India2026-04-19
1014Italy2026-05-04
1015Canada2026-05-03
1016Brazil2026-05-09
1017Russia2026-04-14
1018United Kingdom2026-04-30
1019Russia2026-05-04
1020France2026-04-14
1021United Kingdom2026-04-13
1022Japan2026-05-08
1023Australia2026-04-16
1024France2026-05-11
1025Italy2026-05-07
1026Australia2026-05-03
1027India2026-04-15
1028Japan2026-05-04
1029Brazil2026-04-14
1030Russia2026-05-01
1031Russia2026-04-30
1032United Kingdom2026-04-17
1033Canada2026-04-18
1034Canada2026-05-05
1035Canada2026-05-07
1036India2026-05-07
1037Canada2026-05-07
1038Spain2026-04-17
1039Italy2026-04-28
1040France2026-05-10
1041Russia2026-05-10
1042France2026-04-19
1043Brazil2026-04-26
1044Canada2026-04-28
1045India2026-04-23
1046Argentina2026-04-16
1047India2026-05-03
1048France2026-04-21
1049Australia2026-04-17

On-Demand Data

NameIdCountryDate
David Darakjy1000Brazil2026-04-22
Faith Gillian1001Italy2026-04-19
Jones Vocelka1002Australia2026-05-02
Jeanfrancois Venere1003Russia2026-05-01
Faith Gillian1004Germany2026-05-09
Ivar Paprocki1005Italy2026-05-06
Smith Glick1006Italy2026-05-02
Emily Whobrey1007Argentina2026-04-13
Clifford Rim1008United Kingdom2026-04-15
Clifford Rim1009Australia2026-05-01
Izzy Garufi1010Spain2026-04-22
Isabel Bowley1011Japan2026-05-10
Mujtaba Nicka1012United Kingdom2026-04-24
Leja Caldarera1013Germany2026-05-09
Sinclair Waycott1014Brazil2026-04-20
Maria Marrier1015Italy2026-04-30
Darci Poquette1016Italy2026-04-27
Silvio Slusarski1017Spain2026-05-09
Antonio Caudy1018Canada2026-04-21
Emily Whobrey1019Canada2026-04-22
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Darci PoquetteCanadaElwin Sharvill PROPOSAL
Nicolas IturbideArgentinaBernardo Dominic RENEWAL
Chavez BriddickBrazilXuxue Feng UNQUALIFIED
Misaki RoysterArgentinaStephen Shaw NEGOTIATION
Munro FerenczCanadaOnyama Limba QUALIFIED
Stacey MacleadUnited KingdomAsiya Javayant RENEWAL
Leon OldroydArgentinaStephen Shaw NEGOTIATION
Murillo MaletIndiaElwin Sharvill RENEWAL
Cody SaylorsAustraliaXuxue Feng NEW
Arvin AlbaresSpainXuxue Feng PROPOSAL
Murillo MaletGermanyAnna Fali UNQUALIFIED
Johnson SergiRussiaIoni Bowcher NEGOTIATION
Aditya KuskoArgentinaStephen Shaw RENEWAL
Stacey MacleadBrazilIvan Magalhaes RENEWAL
Isabel BowleyJapanStephen Shaw NEGOTIATION
Ivar PaprockiRussiaAnna Fali UNQUALIFIED
Misaki RoysterSpainBernardo Dominic NEGOTIATION
Misaki RoysterAustraliaXuxue Feng QUALIFIED
Tony FollerRussiaStephen Shaw RENEWAL
Murillo MaletFranceElwin Sharvill PROPOSAL
Octavia MaletSpainAsiya Javayant RENEWAL
Nicolas IturbideJapanAsiya Javayant PROPOSAL
Salvatore StockhamItalyXuxue Feng NEW
Leon OldroydAustraliaOnyama Limba RENEWAL
Juan WieserIndiaAsiya Javayant QUALIFIED
Emily WhobreyRussiaBernardo Dominic NEGOTIATION
Arvin AlbaresArgentinaStephen Shaw QUALIFIED
Johnson SergiBrazilXuxue Feng UNQUALIFIED
Emily WhobreyArgentinaXuxue Feng UNQUALIFIED
Jeanfrancois VenereSpainXuxue Feng UNQUALIFIED
James ButtUnited KingdomStephen Shaw NEW
Tony FollerJapanAnna Fali UNQUALIFIED
James ButtFranceBernardo Dominic UNQUALIFIED
Ashley DoeGermanyElwin Sharvill UNQUALIFIED
Costa DilliardFranceXuxue Feng RENEWAL
Deepesh ChuiItalyAsiya Javayant RENEWAL
Aika InouyeAustraliaElwin Sharvill QUALIFIED
Johnson SergiCanadaOnyama Limba PROPOSAL
Emily WhobreyBrazilBernardo Dominic RENEWAL
Jeanfrancois VenereAustraliaAnna 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>