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
Maria MarrierUnited KingdomIvan Magalhaes QUALIFIED
Maisha RulapaughSpainAmy Elsner NEGOTIATION
Jennifer AmigonFranceStephen Shaw PROPOSAL
Salvatore StockhamArgentinaAsiya Javayant PROPOSAL
Wickens NestleItalyElwin Sharvill RENEWAL
Murillo MaletBrazilOnyama Limba NEW
James ButtBrazilBernardo Dominic RENEWAL
Johnson SergiItalyIoni Bowcher UNQUALIFIED
Aika InouyeCanadaAmy Elsner NEW
Nicolas IturbideSpainStephen Shaw PROPOSAL
Costa DilliardFranceBernardo Dominic RENEWAL
Smith GlickCanadaAmy Elsner UNQUALIFIED
Jones VocelkaBrazilIvan Magalhaes UNQUALIFIED
Jeanfrancois VenereGermanyBernardo Dominic NEW
Aruna FigeroaFranceOnyama Limba NEGOTIATION
Francesco ShinkoFranceBernardo Dominic PROPOSAL
Jeanfrancois VenereCanadaOnyama Limba RENEWAL
Aruna FigeroaGermanyXuxue Feng PROPOSAL
Maria MarrierJapanOnyama Limba NEW
Wickens NestleRussiaOnyama Limba RENEWAL
Jeanfrancois VenereJapanOnyama Limba NEGOTIATION
Clifford RimJapanStephen Shaw QUALIFIED
Nicolas IturbideItalyOnyama Limba NEGOTIATION
Smith GlickJapanAmy Elsner PROPOSAL
Kadeem FlosiGermanyOnyama Limba UNQUALIFIED
Leon OldroydSpainXuxue Feng QUALIFIED
Francesco ShinkoBrazilAmy Elsner QUALIFIED
Jeanfrancois VenereAustraliaAnna Fali NEW
Izzy GarufiIndiaElwin Sharvill RENEWAL
Morrow RutaUnited KingdomAmy Elsner PROPOSAL
Jennifer AmigonRussiaIvan Magalhaes RENEWAL
David DarakjyFranceAnna Fali RENEWAL
Nicolas IturbideIndiaBernardo Dominic PROPOSAL
Isabel BowleyIndiaOnyama Limba QUALIFIED
Tony FollerFranceIvan Magalhaes NEGOTIATION
Jefferson SchemmerSpainAnna Fali UNQUALIFIED
Aika InouyeArgentinaXuxue Feng UNQUALIFIED
Kaitlin OstroskyArgentinaIoni Bowcher RENEWAL
David DarakjyArgentinaAsiya Javayant QUALIFIED
Ashley DoeArgentinaIvan Magalhaes RENEWAL
Costa DilliardRussiaIvan Magalhaes NEGOTIATION
Murillo MaletGermanyXuxue Feng UNQUALIFIED
Jeanfrancois VenereUnited KingdomIvan Magalhaes QUALIFIED
Munro FerenczIndiaBernardo Dominic RENEWAL
Jennifer AmigonArgentinaBernardo Dominic RENEWAL
Emily WhobreyBrazilIvan Magalhaes PROPOSAL
Chavez BriddickGermanyAmy Elsner NEGOTIATION
Ashley DoeFranceAnna Fali QUALIFIED
Octavia MaletGermanyIvan Magalhaes NEGOTIATION
Chavez BriddickGermanyStephen Shaw NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Emily WhobreyIndiaIvan Magalhaes QUALIFIED
Deepesh ChuiArgentinaAnna Fali NEGOTIATION
Darci PoquetteGermanyBernardo Dominic UNQUALIFIED
Munro FerenczCanadaStephen Shaw PROPOSAL
Isabel BowleyArgentinaStephen Shaw QUALIFIED
Claire TollnerUnited KingdomAsiya Javayant PROPOSAL
Murillo MaletFranceIoni Bowcher QUALIFIED
Rodrigues CampainArgentinaOnyama Limba UNQUALIFIED
Aruna FigeroaSpainAsiya Javayant PROPOSAL
Leon OldroydGermanyStephen Shaw UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jefferson SchemmerItaly2026-05-18Commercial Press NEGOTIATION79Ivan Magalhaes
1001Cody SaylorsJapan2026-05-25Morlong Associates QUALIFIED94Ivan Magalhaes
1002Cody SaylorsIndia2026-05-16Feltz Printing Service NEGOTIATION36Ivan Magalhaes
1003Murillo MaletAustralia2026-05-13Chapman, Ross E Esq RENEWAL92Elwin Sharvill
1004Johnson SergiArgentina2026-05-10King, Christopher A Esq UNQUALIFIED10Bernardo Dominic
1005Claire TollnerUnited Kingdom2026-05-31Commercial Press NEGOTIATION74Stephen Shaw
1006David DarakjyIndia2026-05-18Commercial Press NEGOTIATION31Elwin Sharvill
1007Rodrigues CampainRussia2026-05-28Chapman, Ross E Esq NEW85Asiya Javayant
1008Maria MarrierItaly2026-05-08King, Christopher A Esq NEGOTIATION71Amy Elsner
1009Murillo MaletUnited Kingdom2026-05-07Printing Dimensions RENEWAL27Elwin Sharvill
1010Cody SaylorsIndia2026-05-12Chemel, James L Cpa QUALIFIED94Anna Fali
1011Misaki RoysterCanada2026-05-10Morlong Associates PROPOSAL71Anna Fali
1012Aditya KuskoJapan2026-05-13Feltz Printing Service NEW7Stephen Shaw
1013Ricardo GauchoUnited Kingdom2026-05-14Chapman, Ross E Esq PROPOSAL37Ioni Bowcher
1014Deepesh ChuiGermany2026-06-02Chapman, Ross E Esq NEGOTIATION37Amy Elsner
1015Morrow RutaItaly2026-06-02Buckley Miller Wright UNQUALIFIED22Ivan Magalhaes
1016Greenwood BologniaBrazil2026-05-07Morlong Associates NEGOTIATION73Amy Elsner
1017Salvatore StockhamBrazil2026-05-28Chemel, James L Cpa PROPOSAL61Xuxue Feng
1018Jennifer AmigonBrazil2026-05-14King, Christopher A Esq RENEWAL96Elwin Sharvill
1019Aditya KuskoBrazil2026-05-23Rangoni Of Florence RENEWAL41Onyama Limba
1020Ivar PaprockiBrazil2026-05-22Chemel, James L Cpa PROPOSAL62Onyama Limba
1021David DarakjyUnited Kingdom2026-05-22Commercial Press QUALIFIED38Amy Elsner
1022Costa DilliardUnited Kingdom2026-05-21Chemel, James L Cpa UNQUALIFIED28Asiya Javayant
1023Kaitlin OstroskyAustralia2026-05-24Printing Dimensions UNQUALIFIED67Ivan Magalhaes
1024Mujtaba NickaIndia2026-05-30Chanay, Jeffrey A Esq NEW56Ioni Bowcher
1025Jeanfrancois VenereUnited Kingdom2026-06-02Dorl, James J Esq NEW74Anna Fali
1026Jefferson SchemmerItaly2026-05-29Benton, John B Jr NEGOTIATION88Ioni Bowcher
1027Francesco ShinkoUnited Kingdom2026-05-30Printing Dimensions PROPOSAL44Elwin Sharvill
1028Munro FerenczBrazil2026-05-10Feiner Bros NEW62Elwin Sharvill
1029Faith GillianSpain2026-05-21Buckley Miller Wright QUALIFIED99Amy Elsner
1030Emily WhobreyAustralia2026-05-25Buckley Miller Wright UNQUALIFIED77Elwin Sharvill
1031Adams MorascaArgentina2026-05-29Chemel, James L Cpa PROPOSAL81Amy Elsner
1032Johnson SergiAustralia2026-05-28King, Christopher A Esq RENEWAL7Elwin Sharvill
1033Aruna FigeroaSpain2026-05-12Printing Dimensions QUALIFIED34Stephen Shaw
1034Izzy GarufiBrazil2026-05-14Buckley Miller Wright NEW35Onyama Limba
1035Jeanfrancois VenereIndia2026-05-12Commercial Press PROPOSAL85Ivan Magalhaes
1036Chavez BriddickArgentina2026-06-03Rangoni Of Florence PROPOSAL24Elwin Sharvill
1037Mujtaba NickaCanada2026-05-07Truhlar And Truhlar Attys RENEWAL41Xuxue Feng
1038Silvio SlusarskiFrance2026-05-14Chapman, Ross E Esq NEGOTIATION97Asiya Javayant
1039Tony FollerFrance2026-05-06Benton, John B Jr UNQUALIFIED51Stephen Shaw
1040Francesco ShinkoSpain2026-05-23Rousseaux, Michael Esq PROPOSAL43Bernardo Dominic
1041Emily WhobreyItaly2026-05-31Morlong Associates NEW77Amy Elsner
1042Deepesh ChuiArgentina2026-05-09King, Christopher A Esq RENEWAL69Asiya Javayant
1043Faith GillianUnited Kingdom2026-05-29Rangoni Of Florence PROPOSAL31Xuxue Feng
1044Leon OldroydFrance2026-06-02Buckley Miller Wright PROPOSAL92Anna Fali
1045Isabel BowleyBrazil2026-05-07Benton, John B Jr NEW81Bernardo Dominic
1046Wickens NestleItaly2026-05-29Dorl, James J Esq RENEWAL71Anna Fali
1047Salvatore StockhamJapan2026-06-02Chanay, Jeffrey A Esq PROPOSAL31Elwin Sharvill
1048Smith GlickJapan2026-05-07Buckley Miller Wright NEW63Onyama Limba
1049Leja CaldareraAustralia2026-05-19Rangoni Of Florence RENEWAL24Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Stacey MacleadGermanyBernardo Dominic NEGOTIATION
Francesco ShinkoUnited KingdomElwin Sharvill UNQUALIFIED
Leon OldroydUnited KingdomElwin Sharvill PROPOSAL
Emily WhobreyItalyOnyama Limba UNQUALIFIED
Chavez BriddickIndiaBernardo Dominic RENEWAL
Murillo MaletIndiaIvan Magalhaes NEW
Smith GlickItalyElwin Sharvill RENEWAL
Antonio CaudyAustraliaXuxue Feng RENEWAL
Munro FerenczJapanAsiya Javayant NEW
Claire TollnerArgentinaOnyama Limba NEGOTIATION
Maria MarrierBrazilAnna Fali NEW
Johnson SergiCanadaStephen Shaw RENEWAL
Maria MarrierRussiaAnna Fali NEW
Munro FerenczJapanAmy Elsner UNQUALIFIED
Aruna FigeroaBrazilAmy Elsner QUALIFIED
David DarakjyRussiaAmy Elsner NEW
Cody SaylorsSpainStephen Shaw NEW
Jennifer AmigonJapanBernardo Dominic NEW
Aruna FigeroaRussiaAsiya Javayant PROPOSAL
Nicolas IturbideBrazilBernardo Dominic QUALIFIED
Maisha RulapaughBrazilAnna Fali QUALIFIED
Greenwood BologniaBrazilOnyama Limba PROPOSAL
Misaki RoysterGermanyElwin Sharvill NEW
Johnson SergiJapanOnyama Limba UNQUALIFIED
Jeanfrancois VenereFranceAnna Fali UNQUALIFIED
Chavez BriddickAustraliaAsiya Javayant RENEWAL
Greenwood BologniaAustraliaAnna Fali NEGOTIATION
Darci PoquetteItalyStephen Shaw NEW
Aika InouyeAustraliaAsiya Javayant PROPOSAL
Darci PoquetteFranceOnyama Limba PROPOSAL
Aditya KuskoUnited KingdomXuxue Feng RENEWAL
Kadeem FlosiRussiaAnna Fali UNQUALIFIED
Greenwood BologniaSpainElwin Sharvill NEW
Ashley DoeItalyStephen Shaw QUALIFIED
Aruna FigeroaUnited KingdomBernardo Dominic UNQUALIFIED
Ricardo GauchoSpainIvan Magalhaes QUALIFIED
Jennifer AmigonGermanyStephen Shaw UNQUALIFIED
Alejandro PerinBrazilAsiya Javayant NEGOTIATION
Morrow RutaFranceElwin Sharvill NEGOTIATION
Aditya KuskoSpainXuxue Feng QUALIFIED
Costa DilliardArgentinaOnyama Limba QUALIFIED
Mayumi KolmetzItalyAnna Fali NEW
Ivar PaprockiSpainStephen Shaw PROPOSAL
Faith GillianRussiaBernardo Dominic PROPOSAL
Aruna FigeroaAustraliaBernardo Dominic QUALIFIED
Rodrigues CampainJapanAsiya Javayant NEGOTIATION
Mayumi KolmetzJapanIoni Bowcher RENEWAL
Cody SaylorsFranceAnna Fali UNQUALIFIED
Isabel BowleyArgentinaXuxue Feng UNQUALIFIED
Cody SaylorsCanadaStephen Shaw RENEWAL
Frozen Columns
Name
Izzy Garufi
Ivar Paprocki
Deepesh Chui
Morrow Ruta
Faith Gillian
Kadeem Flosi
Kaitlin Ostrosky
Octavia Malet
Ashley Doe
Claire Tollner
Wickens Nestle
Antonio Caudy
Sinclair Waycott
Jefferson Schemmer
Jennifer Amigon
Aika Inouye
Alejandro Perin
Silvio Slusarski
Costa Dilliard
Tony Foller
Nicolas Iturbide
Maisha Rulapaugh
Murillo Malet
Leon Oldroyd
Murillo Malet
Maria Marrier
Jones Vocelka
Aika Inouye
Morrow Ruta
Antonio Caudy
Murillo Malet
Aditya Kusko
Murillo Malet
Morrow Ruta
Rodrigues Campain
Ashley Doe
Rodrigues Campain
Claire Tollner
Rodrigues Campain
Alejandro Perin
Nicolas Iturbide
Maisha Rulapaugh
Mujtaba Nicka
Isabel Bowley
Ashley Doe
Kaitlin Ostrosky
Isabel Bowley
Claire Tollner
Misaki Royster
Mujtaba Nicka
IdCountryDate
1000Italy2026-05-18
1001India2026-05-26
1002France2026-05-30
1003Brazil2026-05-20
1004Canada2026-06-02
1005Argentina2026-05-09
1006Australia2026-05-18
1007Australia2026-06-02
1008Russia2026-05-14
1009United Kingdom2026-05-06
1010Spain2026-05-07
1011Brazil2026-05-19
1012Argentina2026-06-01
1013Spain2026-06-01
1014Germany2026-05-24
1015Germany2026-05-19
1016Russia2026-05-29
1017India2026-05-26
1018Italy2026-06-01
1019Australia2026-05-22
1020Spain2026-05-29
1021Italy2026-05-20
1022Russia2026-06-02
1023France2026-05-07
1024Spain2026-05-21
1025United Kingdom2026-05-20
1026Argentina2026-05-14
1027Canada2026-06-02
1028France2026-05-27
1029Canada2026-05-27
1030Russia2026-06-03
1031Spain2026-05-27
1032Italy2026-05-15
1033France2026-06-04
1034United Kingdom2026-05-12
1035Germany2026-05-23
1036United Kingdom2026-05-22
1037Japan2026-05-08
1038Argentina2026-05-29
1039Australia2026-05-28
1040Argentina2026-05-09
1041Australia2026-05-27
1042France2026-05-16
1043Brazil2026-05-23
1044Brazil2026-05-17
1045Argentina2026-05-14
1046France2026-05-14
1047Canada2026-06-04
1048France2026-05-31
1049France2026-05-29

On-Demand Data

NameIdCountryDate
Antonio Caudy1000Argentina2026-05-26
James Butt1001Brazil2026-06-03
Leon Oldroyd1002Australia2026-05-15
Maisha Rulapaugh1003Canada2026-05-16
Ivar Paprocki1004Germany2026-06-02
Wickens Nestle1005Brazil2026-05-17
Juan Wieser1006Australia2026-05-07
Greenwood Bolognia1007Brazil2026-05-16
Isabel Bowley1008Japan2026-05-26
Stacey Maclead1009Japan2026-05-23
Claire Tollner1010Australia2026-05-11
Misaki Royster1011Germany2026-05-08
Julie Stenseth1012France2026-05-18
Maisha Rulapaugh1013Australia2026-05-29
Ivar Paprocki1014Canada2026-05-29
Leja Caldarera1015France2026-05-12
Francesco Shinko1016France2026-05-06
Leja Caldarera1017Japan2026-05-08
Jeanfrancois Venere1018France2026-05-15
Munro Ferencz1019Australia2026-05-09
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Stacey MacleadRussiaAsiya Javayant NEW
Maisha RulapaughBrazilOnyama Limba RENEWAL
Misaki RoysterRussiaOnyama Limba UNQUALIFIED
Deepesh ChuiBrazilAmy Elsner NEGOTIATION
Clifford RimRussiaBernardo Dominic PROPOSAL
Izzy GarufiIndiaElwin Sharvill NEW
Jefferson SchemmerUnited KingdomAsiya Javayant NEW
Emily WhobreyRussiaAnna Fali UNQUALIFIED
Munro FerenczBrazilAmy Elsner RENEWAL
Deepesh ChuiFranceElwin Sharvill UNQUALIFIED
Mujtaba NickaGermanyElwin Sharvill UNQUALIFIED
Faith GillianRussiaAnna Fali QUALIFIED
Jones VocelkaGermanyAsiya Javayant NEW
Kadeem FlosiRussiaXuxue Feng NEGOTIATION
Mayumi KolmetzArgentinaIvan Magalhaes NEW
Jefferson SchemmerUnited KingdomIvan Magalhaes RENEWAL
Stacey MacleadIndiaAmy Elsner NEW
Arvin AlbaresItalyElwin Sharvill UNQUALIFIED
Chavez BriddickItalyElwin Sharvill PROPOSAL
Silvio SlusarskiRussiaXuxue Feng QUALIFIED
Leja CaldareraJapanIoni Bowcher UNQUALIFIED
Claire TollnerGermanyAsiya Javayant QUALIFIED
Jennifer AmigonGermanyAnna Fali UNQUALIFIED
Jefferson SchemmerJapanXuxue Feng UNQUALIFIED
Francesco ShinkoItalyXuxue Feng NEGOTIATION
Silvio SlusarskiBrazilStephen Shaw RENEWAL
Costa DilliardArgentinaIvan Magalhaes NEW
Faith GillianGermanyOnyama Limba NEGOTIATION
Murillo MaletRussiaXuxue Feng UNQUALIFIED
Jefferson SchemmerItalyIvan Magalhaes PROPOSAL
Munro FerenczRussiaXuxue Feng PROPOSAL
Murillo MaletRussiaXuxue Feng PROPOSAL
Arvin AlbaresCanadaOnyama Limba RENEWAL
James ButtItalyIoni Bowcher QUALIFIED
Morrow RutaSpainOnyama Limba PROPOSAL
Leon OldroydGermanyAnna Fali NEW
Deepesh ChuiFranceAsiya Javayant RENEWAL
Morrow RutaRussiaIoni Bowcher UNQUALIFIED
Jennifer AmigonAustraliaBernardo Dominic QUALIFIED
Arvin AlbaresRussiaBernardo Dominic 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>