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
Jennifer AmigonRussiaElwin Sharvill NEW
Jones VocelkaIndiaBernardo Dominic QUALIFIED
Aruna FigeroaAustraliaXuxue Feng NEW
Wickens NestleSpainAnna Fali UNQUALIFIED
Kadeem FlosiArgentinaStephen Shaw QUALIFIED
Maisha RulapaughSpainAmy Elsner RENEWAL
Sinclair WaycottBrazilAsiya Javayant QUALIFIED
Kadeem FlosiAustraliaElwin Sharvill RENEWAL
Chavez BriddickSpainIvan Magalhaes RENEWAL
Ashley DoeItalyElwin Sharvill RENEWAL
Murillo MaletGermanyIvan Magalhaes RENEWAL
Ashley DoeCanadaAmy Elsner NEGOTIATION
Nicolas IturbideIndiaIvan Magalhaes NEW
Cody SaylorsRussiaIoni Bowcher UNQUALIFIED
Claire TollnerFranceBernardo Dominic RENEWAL
Jones VocelkaUnited KingdomIvan Magalhaes QUALIFIED
Chavez BriddickFranceIvan Magalhaes NEGOTIATION
Kadeem FlosiJapanOnyama Limba RENEWAL
Maisha RulapaughAustraliaElwin Sharvill QUALIFIED
Julie StensethBrazilBernardo Dominic QUALIFIED
Aditya KuskoBrazilBernardo Dominic RENEWAL
Misaki RoysterSpainIvan Magalhaes QUALIFIED
Ricardo GauchoJapanBernardo Dominic NEGOTIATION
Jones VocelkaBrazilAmy Elsner QUALIFIED
Izzy GarufiUnited KingdomIvan Magalhaes QUALIFIED
Aruna FigeroaSpainBernardo Dominic RENEWAL
Izzy GarufiGermanyAnna Fali NEGOTIATION
Ivar PaprockiBrazilBernardo Dominic NEGOTIATION
Octavia MaletArgentinaBernardo Dominic QUALIFIED
Darci PoquetteGermanyIoni Bowcher PROPOSAL
Aruna FigeroaAustraliaAmy Elsner RENEWAL
Mujtaba NickaIndiaOnyama Limba NEGOTIATION
Cody SaylorsArgentinaOnyama Limba NEW
Jefferson SchemmerRussiaBernardo Dominic QUALIFIED
Stacey MacleadIndiaStephen Shaw UNQUALIFIED
Maria MarrierFranceElwin Sharvill PROPOSAL
Silvio SlusarskiFranceBernardo Dominic NEW
Aruna FigeroaArgentinaXuxue Feng PROPOSAL
Sinclair WaycottJapanStephen Shaw NEW
Aruna FigeroaRussiaIoni Bowcher RENEWAL
Aruna FigeroaJapanOnyama Limba RENEWAL
Aika InouyeBrazilBernardo Dominic NEGOTIATION
Jennifer AmigonBrazilXuxue Feng QUALIFIED
Darci PoquetteItalyAsiya Javayant RENEWAL
Julie StensethJapanAsiya Javayant NEGOTIATION
Nicolas IturbideFranceAnna Fali QUALIFIED
Ashley DoeRussiaBernardo Dominic QUALIFIED
Chavez BriddickBrazilIoni Bowcher QUALIFIED
Rodrigues CampainBrazilBernardo Dominic QUALIFIED
Kadeem FlosiJapanElwin Sharvill RENEWAL
Horizontal
NameCountryRepresentativeStatus
Chavez BriddickArgentinaIvan Magalhaes UNQUALIFIED
Maria MarrierBrazilIvan Magalhaes QUALIFIED
David DarakjyUnited KingdomBernardo Dominic PROPOSAL
Octavia MaletArgentinaOnyama Limba PROPOSAL
Morrow RutaCanadaXuxue Feng QUALIFIED
Leon OldroydArgentinaIoni Bowcher QUALIFIED
Leon OldroydUnited KingdomIoni Bowcher UNQUALIFIED
Arvin AlbaresSpainBernardo Dominic UNQUALIFIED
Maria MarrierFranceBernardo Dominic NEW
Rodrigues CampainAustraliaBernardo Dominic RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Ricardo GauchoItaly2026-05-20Rousseaux, Michael Esq NEGOTIATION5Xuxue Feng
1001Mayumi KolmetzCanada2026-05-22Commercial Press NEGOTIATION63Xuxue Feng
1002Salvatore StockhamIndia2026-05-23Rangoni Of Florence NEGOTIATION13Elwin Sharvill
1003Darci PoquetteIndia2026-05-24Chanay, Jeffrey A Esq UNQUALIFIED27Amy Elsner
1004Emily WhobreyItaly2026-05-29Buckley Miller Wright PROPOSAL31Ivan Magalhaes
1005Arvin AlbaresUnited Kingdom2026-06-14Chanay, Jeffrey A Esq NEW91Onyama Limba
1006Stacey MacleadJapan2026-06-16King, Christopher A Esq NEGOTIATION69Elwin Sharvill
1007Alejandro PerinCanada2026-06-06Commercial Press PROPOSAL0Amy Elsner
1008Francesco ShinkoRussia2026-06-04Rousseaux, Michael Esq QUALIFIED94Elwin Sharvill
1009Morrow RutaCanada2026-06-09Feiner Bros UNQUALIFIED43Asiya Javayant
1010Misaki RoysterItaly2026-06-02Chapman, Ross E Esq PROPOSAL13Onyama Limba
1011Darci PoquetteAustralia2026-06-07Morlong Associates UNQUALIFIED1Asiya Javayant
1012Ivar PaprockiArgentina2026-05-21Chanay, Jeffrey A Esq RENEWAL94Elwin Sharvill
1013Isabel BowleyAustralia2026-05-22Chanay, Jeffrey A Esq PROPOSAL83Asiya Javayant
1014Ivar PaprockiFrance2026-05-27Truhlar And Truhlar Attys QUALIFIED56Onyama Limba
1015Leja CaldareraGermany2026-06-12Printing Dimensions RENEWAL27Bernardo Dominic
1016Greenwood BologniaIndia2026-06-17Printing Dimensions QUALIFIED64Asiya Javayant
1017Nicolas IturbideRussia2026-06-14Truhlar And Truhlar Attys QUALIFIED60Elwin Sharvill
1018Ashley DoeItaly2026-05-26Rousseaux, Michael Esq QUALIFIED32Ioni Bowcher
1019Jefferson SchemmerArgentina2026-06-07Printing Dimensions NEGOTIATION47Stephen Shaw
1020Mayumi KolmetzGermany2026-05-21Dorl, James J Esq RENEWAL4Anna Fali
1021Kadeem FlosiItaly2026-05-22Morlong Associates NEGOTIATION27Anna Fali
1022Rodrigues CampainItaly2026-06-07Chapman, Ross E Esq RENEWAL92Elwin Sharvill
1023Faith GillianRussia2026-06-05Chanay, Jeffrey A Esq QUALIFIED65Onyama Limba
1024Maisha RulapaughAustralia2026-06-07Chapman, Ross E Esq NEGOTIATION87Anna Fali
1025Johnson SergiItaly2026-06-06Rangoni Of Florence NEGOTIATION49Stephen Shaw
1026Ricardo GauchoRussia2026-06-09Rousseaux, Michael Esq UNQUALIFIED97Elwin Sharvill
1027Sinclair WaycottAustralia2026-05-28Truhlar And Truhlar Attys NEGOTIATION95Amy Elsner
1028Mujtaba NickaRussia2026-06-04Benton, John B Jr PROPOSAL13Asiya Javayant
1029Smith GlickJapan2026-06-05Truhlar And Truhlar Attys NEW45Ivan Magalhaes
1030Kaitlin OstroskyGermany2026-06-01Chemel, James L Cpa QUALIFIED50Xuxue Feng
1031Leja CaldareraCanada2026-05-27Feltz Printing Service QUALIFIED22Bernardo Dominic
1032Kadeem FlosiArgentina2026-06-18Buckley Miller Wright NEW18Asiya Javayant
1033Kadeem FlosiUnited Kingdom2026-05-26Chanay, Jeffrey A Esq RENEWAL56Stephen Shaw
1034Francesco ShinkoRussia2026-06-06Commercial Press NEGOTIATION84Asiya Javayant
1035Aika InouyeUnited Kingdom2026-05-26Chanay, Jeffrey A Esq PROPOSAL73Onyama Limba
1036Chavez BriddickAustralia2026-05-23Rousseaux, Michael Esq NEW20Bernardo Dominic
1037David DarakjyGermany2026-05-24Chemel, James L Cpa UNQUALIFIED2Elwin Sharvill
1038Deepesh ChuiItaly2026-06-09Rangoni Of Florence RENEWAL2Ioni Bowcher
1039Clifford RimGermany2026-06-02Chanay, Jeffrey A Esq QUALIFIED32Ivan Magalhaes
1040Emily WhobreyBrazil2026-05-25Chapman, Ross E Esq RENEWAL34Xuxue Feng
1041David DarakjyUnited Kingdom2026-06-01Dorl, James J Esq UNQUALIFIED43Anna Fali
1042Ricardo GauchoArgentina2026-06-07Benton, John B Jr NEW21Bernardo Dominic
1043Octavia MaletBrazil2026-05-23Chapman, Ross E Esq QUALIFIED60Ivan Magalhaes
1044Stacey MacleadCanada2026-05-20Morlong Associates RENEWAL81Onyama Limba
1045Johnson SergiIndia2026-05-26Rangoni Of Florence PROPOSAL65Asiya Javayant
1046Juan WieserArgentina2026-05-29Chapman, Ross E Esq RENEWAL92Elwin Sharvill
1047David DarakjyBrazil2026-05-30Commercial Press RENEWAL83Ivan Magalhaes
1048Johnson SergiJapan2026-05-25Chemel, James L Cpa NEW57Ivan Magalhaes
1049Darci PoquetteIndia2026-05-21Truhlar And Truhlar Attys QUALIFIED45Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Izzy GarufiAustraliaAmy Elsner PROPOSAL
Jeanfrancois VenereCanadaIvan Magalhaes NEGOTIATION
Adams MorascaItalyAmy Elsner PROPOSAL
Izzy GarufiArgentinaBernardo Dominic RENEWAL
Greenwood BologniaIndiaIoni Bowcher PROPOSAL
Isabel BowleyArgentinaElwin Sharvill NEW
Francesco ShinkoRussiaIoni Bowcher NEW
Jeanfrancois VenereFranceOnyama Limba RENEWAL
Juan WieserArgentinaIvan Magalhaes NEW
Julie StensethSpainAmy Elsner RENEWAL
Aruna FigeroaAustraliaOnyama Limba QUALIFIED
Sinclair WaycottItalyXuxue Feng NEGOTIATION
Murillo MaletSpainAmy Elsner NEW
Antonio CaudyJapanAsiya Javayant NEW
Morrow RutaCanadaIoni Bowcher NEW
Antonio CaudyCanadaXuxue Feng NEW
Claire TollnerArgentinaAnna Fali RENEWAL
Morrow RutaJapanBernardo Dominic RENEWAL
Rodrigues CampainJapanIvan Magalhaes PROPOSAL
Deepesh ChuiIndiaElwin Sharvill NEGOTIATION
Clifford RimSpainAnna Fali NEW
Maisha RulapaughJapanAnna Fali RENEWAL
Antonio CaudyCanadaIvan Magalhaes NEW
Kaitlin OstroskyItalyBernardo Dominic RENEWAL
Aditya KuskoFranceStephen Shaw NEGOTIATION
Stacey MacleadSpainStephen Shaw UNQUALIFIED
Cody SaylorsJapanOnyama Limba PROPOSAL
Sinclair WaycottCanadaIoni Bowcher NEW
Izzy GarufiRussiaBernardo Dominic QUALIFIED
Misaki RoysterAustraliaAsiya Javayant NEW
Julie StensethBrazilAnna Fali RENEWAL
Izzy GarufiJapanIoni Bowcher RENEWAL
Jeanfrancois VenereCanadaAnna Fali UNQUALIFIED
Isabel BowleyItalyElwin Sharvill QUALIFIED
Ivar PaprockiGermanyXuxue Feng NEW
Julie StensethSpainXuxue Feng NEW
Jones VocelkaSpainStephen Shaw NEGOTIATION
Emily WhobreyAustraliaOnyama Limba RENEWAL
Salvatore StockhamIndiaAnna Fali RENEWAL
Kadeem FlosiItalyAnna Fali NEW
Greenwood BologniaCanadaBernardo Dominic NEW
Cody SaylorsFranceBernardo Dominic RENEWAL
Ivar PaprockiRussiaAmy Elsner NEGOTIATION
Juan WieserAustraliaIoni Bowcher UNQUALIFIED
Rodrigues CampainUnited KingdomAmy Elsner NEW
Stacey MacleadSpainIvan Magalhaes NEGOTIATION
Cody SaylorsAustraliaIoni Bowcher NEW
Arvin AlbaresGermanyElwin Sharvill NEW
Ashley DoeGermanyIoni Bowcher NEW
Tony FollerIndiaStephen Shaw UNQUALIFIED
Frozen Columns
Name
Johnson Sergi
Silvio Slusarski
Izzy Garufi
Adams Morasca
Aditya Kusko
Munro Ferencz
Emily Whobrey
Sinclair Waycott
Cody Saylors
Silvio Slusarski
Wickens Nestle
Antonio Caudy
Faith Gillian
Isabel Bowley
Silvio Slusarski
Silvio Slusarski
James Butt
Deepesh Chui
Aika Inouye
Tony Foller
Ivar Paprocki
Mujtaba Nicka
Jeanfrancois Venere
Costa Dilliard
Leon Oldroyd
Kaitlin Ostrosky
Adams Morasca
Faith Gillian
Maisha Rulapaugh
Kaitlin Ostrosky
Mayumi Kolmetz
Claire Tollner
James Butt
Isabel Bowley
James Butt
Wickens Nestle
Antonio Caudy
Costa Dilliard
Kadeem Flosi
Salvatore Stockham
Aditya Kusko
Smith Glick
Leja Caldarera
Arvin Albares
Silvio Slusarski
Antonio Caudy
Mujtaba Nicka
Smith Glick
Jefferson Schemmer
Chavez Briddick
IdCountryDate
1000France2026-06-12
1001France2026-05-26
1002France2026-06-03
1003Brazil2026-06-04
1004Germany2026-05-28
1005India2026-06-18
1006Germany2026-06-18
1007Italy2026-05-30
1008France2026-05-23
1009Australia2026-05-25
1010Russia2026-05-31
1011Japan2026-05-20
1012Brazil2026-06-11
1013Russia2026-06-15
1014Italy2026-05-26
1015Brazil2026-06-08
1016Germany2026-06-07
1017Brazil2026-05-22
1018India2026-05-24
1019India2026-06-09
1020Italy2026-05-24
1021Japan2026-06-09
1022Brazil2026-05-25
1023Russia2026-06-04
1024Australia2026-05-29
1025Russia2026-06-12
1026Australia2026-06-11
1027Japan2026-06-13
1028France2026-05-23
1029Germany2026-06-16
1030Spain2026-06-07
1031Italy2026-05-28
1032Germany2026-06-07
1033Argentina2026-06-09
1034Russia2026-05-23
1035Brazil2026-06-12
1036United Kingdom2026-05-21
1037Japan2026-06-05
1038Brazil2026-06-03
1039Australia2026-05-29
1040India2026-06-04
1041Italy2026-06-13
1042Italy2026-06-01
1043India2026-06-17
1044Russia2026-06-03
1045Japan2026-06-03
1046Germany2026-06-17
1047Argentina2026-05-25
1048Russia2026-06-18
1049Japan2026-06-12

On-Demand Data

NameIdCountryDate
Munro Ferencz1000Argentina2026-06-04
Costa Dilliard1001Canada2026-05-30
Izzy Garufi1002Argentina2026-06-15
Kadeem Flosi1003Germany2026-06-08
Johnson Sergi1004India2026-06-13
Leja Caldarera1005Japan2026-05-26
Jones Vocelka1006Spain2026-06-01
Stacey Maclead1007Australia2026-06-10
Claire Tollner1008United Kingdom2026-06-01
Julie Stenseth1009Japan2026-06-04
Jennifer Amigon1010Japan2026-05-29
Izzy Garufi1011France2026-05-22
Chavez Briddick1012Spain2026-05-26
Isabel Bowley1013Russia2026-06-04
Sinclair Waycott1014Argentina2026-05-30
Morrow Ruta1015Spain2026-06-01
Rodrigues Campain1016France2026-06-01
Silvio Slusarski1017Russia2026-06-04
Smith Glick1018Japan2026-06-09
Tony Foller1019Russia2026-06-17
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
David DarakjyIndiaAmy Elsner UNQUALIFIED
Clifford RimBrazilBernardo Dominic RENEWAL
Silvio SlusarskiItalyElwin Sharvill UNQUALIFIED
Emily WhobreyGermanyStephen Shaw RENEWAL
Jennifer AmigonCanadaElwin Sharvill PROPOSAL
Murillo MaletItalyBernardo Dominic PROPOSAL
Silvio SlusarskiCanadaXuxue Feng QUALIFIED
Jefferson SchemmerBrazilAnna Fali UNQUALIFIED
Juan WieserIndiaElwin Sharvill PROPOSAL
Alejandro PerinCanadaAmy Elsner NEW
Kadeem FlosiCanadaIvan Magalhaes UNQUALIFIED
Rodrigues CampainItalyIoni Bowcher UNQUALIFIED
Aruna FigeroaArgentinaIoni Bowcher QUALIFIED
James ButtRussiaAmy Elsner NEGOTIATION
Aditya KuskoItalyAnna Fali UNQUALIFIED
Julie StensethBrazilStephen Shaw UNQUALIFIED
Leja CaldareraGermanyIoni Bowcher RENEWAL
Juan WieserRussiaAmy Elsner RENEWAL
Cody SaylorsSpainIoni Bowcher NEGOTIATION
Aditya KuskoArgentinaAnna Fali RENEWAL
David DarakjyFranceAnna Fali RENEWAL
David DarakjyGermanyAmy Elsner NEW
Stacey MacleadRussiaStephen Shaw QUALIFIED
Chavez BriddickSpainElwin Sharvill QUALIFIED
Murillo MaletUnited KingdomBernardo Dominic RENEWAL
Jeanfrancois VenereCanadaOnyama Limba NEW
Aika InouyeCanadaIvan Magalhaes QUALIFIED
Johnson SergiIndiaIvan Magalhaes PROPOSAL
Leja CaldareraItalyAsiya Javayant QUALIFIED
David DarakjyRussiaIoni Bowcher NEW
Morrow RutaBrazilElwin Sharvill UNQUALIFIED
Johnson SergiArgentinaOnyama Limba NEW
Jefferson SchemmerBrazilAnna Fali RENEWAL
Ivar PaprockiUnited KingdomIoni Bowcher QUALIFIED
Wickens NestleArgentinaElwin Sharvill QUALIFIED
Arvin AlbaresSpainElwin Sharvill PROPOSAL
Jones VocelkaFranceBernardo Dominic UNQUALIFIED
Jeanfrancois VenereArgentinaStephen Shaw QUALIFIED
Claire TollnerJapanElwin Sharvill PROPOSAL
Clifford RimArgentinaIvan Magalhaes 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>