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
Maisha RulapaughCanadaOnyama Limba NEW
David DarakjyArgentinaBernardo Dominic NEW
Isabel BowleyUnited KingdomAmy Elsner QUALIFIED
Smith GlickArgentinaOnyama Limba NEW
Clifford RimArgentinaStephen Shaw PROPOSAL
Sinclair WaycottItalyIoni Bowcher NEGOTIATION
Leon OldroydIndiaIoni Bowcher UNQUALIFIED
Isabel BowleyIndiaIoni Bowcher NEW
Morrow RutaCanadaAsiya Javayant NEGOTIATION
Stacey MacleadFranceAsiya Javayant NEGOTIATION
Julie StensethSpainAnna Fali RENEWAL
Munro FerenczBrazilAnna Fali NEGOTIATION
Leon OldroydCanadaIoni Bowcher NEW
Greenwood BologniaArgentinaOnyama Limba NEGOTIATION
Murillo MaletAustraliaIvan Magalhaes NEGOTIATION
Kadeem FlosiSpainOnyama Limba NEW
Mayumi KolmetzCanadaAmy Elsner RENEWAL
David DarakjyGermanyXuxue Feng QUALIFIED
Cody SaylorsRussiaIvan Magalhaes UNQUALIFIED
Mujtaba NickaCanadaAmy Elsner RENEWAL
Leja CaldareraGermanyOnyama Limba RENEWAL
Munro FerenczFranceAsiya Javayant QUALIFIED
Clifford RimItalyAnna Fali NEW
Aruna FigeroaIndiaXuxue Feng RENEWAL
Emily WhobreyArgentinaIvan Magalhaes NEW
Mujtaba NickaGermanyIvan Magalhaes NEW
Ivar PaprockiRussiaElwin Sharvill PROPOSAL
Jones VocelkaJapanElwin Sharvill QUALIFIED
Izzy GarufiUnited KingdomIvan Magalhaes PROPOSAL
Maria MarrierIndiaStephen Shaw NEW
Leja CaldareraFranceIvan Magalhaes NEW
David DarakjyIndiaStephen Shaw UNQUALIFIED
Cody SaylorsUnited KingdomElwin Sharvill UNQUALIFIED
Cody SaylorsFranceIvan Magalhaes NEW
Kadeem FlosiAustraliaIoni Bowcher NEGOTIATION
Mujtaba NickaArgentinaBernardo Dominic UNQUALIFIED
Morrow RutaBrazilOnyama Limba NEGOTIATION
Kadeem FlosiAustraliaAmy Elsner QUALIFIED
Alejandro PerinGermanyElwin Sharvill PROPOSAL
Ashley DoeItalyAsiya Javayant NEW
Greenwood BologniaAustraliaXuxue Feng RENEWAL
Julie StensethUnited KingdomIoni Bowcher UNQUALIFIED
Julie StensethIndiaAnna Fali RENEWAL
Wickens NestleUnited KingdomIoni Bowcher QUALIFIED
Julie StensethAustraliaIoni Bowcher NEW
Silvio SlusarskiUnited KingdomAnna Fali PROPOSAL
Izzy GarufiUnited KingdomAnna Fali QUALIFIED
Adams MorascaGermanyBernardo Dominic RENEWAL
Ivar PaprockiRussiaXuxue Feng NEGOTIATION
Francesco ShinkoJapanAnna Fali QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Murillo MaletUnited KingdomOnyama Limba PROPOSAL
Stacey MacleadSpainAnna Fali QUALIFIED
Wickens NestleRussiaElwin Sharvill UNQUALIFIED
Misaki RoysterBrazilOnyama Limba RENEWAL
Cody SaylorsAustraliaXuxue Feng NEGOTIATION
Murillo MaletAustraliaXuxue Feng NEW
Ashley DoeUnited KingdomElwin Sharvill NEW
Costa DilliardItalyIvan Magalhaes RENEWAL
Juan WieserUnited KingdomXuxue Feng NEW
Darci PoquetteItalyBernardo Dominic PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Johnson SergiArgentina2026-04-12Morlong Associates QUALIFIED52Asiya Javayant
1001Francesco ShinkoIndia2026-04-04Chanay, Jeffrey A Esq PROPOSAL28Elwin Sharvill
1002Isabel BowleyGermany2026-03-28Chapman, Ross E Esq NEGOTIATION95Xuxue Feng
1003Leon OldroydSpain2026-04-11Chapman, Ross E Esq NEGOTIATION14Asiya Javayant
1004Darci PoquetteCanada2026-04-20Commercial Press PROPOSAL69Asiya Javayant
1005Ivar PaprockiJapan2026-04-04Rousseaux, Michael Esq UNQUALIFIED88Anna Fali
1006Leja CaldareraBrazil2026-04-07Benton, John B Jr UNQUALIFIED79Amy Elsner
1007Chavez BriddickCanada2026-03-31Buckley Miller Wright QUALIFIED30Stephen Shaw
1008James ButtBrazil2026-04-11Rousseaux, Michael Esq RENEWAL48Anna Fali
1009Emily WhobreyGermany2026-03-26Chanay, Jeffrey A Esq UNQUALIFIED43Elwin Sharvill
1010Julie StensethGermany2026-04-13Morlong Associates NEW36Ioni Bowcher
1011Leon OldroydUnited Kingdom2026-04-22Rangoni Of Florence QUALIFIED84Amy Elsner
1012Munro FerenczRussia2026-04-05Benton, John B Jr RENEWAL86Anna Fali
1013Julie StensethGermany2026-03-31Feltz Printing Service NEW5Bernardo Dominic
1014Rodrigues CampainItaly2026-04-02Chanay, Jeffrey A Esq RENEWAL66Bernardo Dominic
1015Johnson SergiBrazil2026-04-22Chemel, James L Cpa PROPOSAL15Amy Elsner
1016Jones VocelkaGermany2026-04-08Morlong Associates RENEWAL64Stephen Shaw
1017Aruna FigeroaJapan2026-03-29Dorl, James J Esq RENEWAL52Xuxue Feng
1018Silvio SlusarskiBrazil2026-04-22Morlong Associates NEW26Ivan Magalhaes
1019Ashley DoeFrance2026-03-29Rangoni Of Florence QUALIFIED85Amy Elsner
1020Misaki RoysterUnited Kingdom2026-04-04Commercial Press RENEWAL3Stephen Shaw
1021Morrow RutaCanada2026-04-20Dorl, James J Esq NEGOTIATION87Asiya Javayant
1022Jefferson SchemmerJapan2026-03-29Dorl, James J Esq QUALIFIED28Xuxue Feng
1023Stacey MacleadIndia2026-04-05Chemel, James L Cpa RENEWAL4Ioni Bowcher
1024Jefferson SchemmerUnited Kingdom2026-03-31Morlong Associates PROPOSAL59Ioni Bowcher
1025Adams MorascaAustralia2026-04-15Benton, John B Jr PROPOSAL42Stephen Shaw
1026Isabel BowleyRussia2026-04-04Truhlar And Truhlar Attys QUALIFIED8Bernardo Dominic
1027Julie StensethSpain2026-03-29Truhlar And Truhlar Attys PROPOSAL3Ivan Magalhaes
1028Ashley DoeUnited Kingdom2026-04-18Morlong Associates UNQUALIFIED22Anna Fali
1029Aika InouyeUnited Kingdom2026-04-16Chanay, Jeffrey A Esq NEGOTIATION55Bernardo Dominic
1030Emily WhobreyUnited Kingdom2026-04-16Rangoni Of Florence NEGOTIATION94Anna Fali
1031Juan WieserCanada2026-03-27Buckley Miller Wright NEW63Anna Fali
1032Antonio CaudyBrazil2026-04-16King, Christopher A Esq RENEWAL88Elwin Sharvill
1033Octavia MaletUnited Kingdom2026-04-16Commercial Press NEW39Ioni Bowcher
1034Kaitlin OstroskyUnited Kingdom2026-03-26Truhlar And Truhlar Attys UNQUALIFIED68Bernardo Dominic
1035Silvio SlusarskiRussia2026-04-02Rangoni Of Florence RENEWAL38Anna Fali
1036Ashley DoeUnited Kingdom2026-04-12Chanay, Jeffrey A Esq NEW7Ivan Magalhaes
1037Aruna FigeroaGermany2026-04-18Feltz Printing Service QUALIFIED90Onyama Limba
1038Stacey MacleadIndia2026-04-22Benton, John B Jr UNQUALIFIED39Ioni Bowcher
1039Silvio SlusarskiRussia2026-04-09Chapman, Ross E Esq QUALIFIED76Amy Elsner
1040Greenwood BologniaRussia2026-04-19Rangoni Of Florence UNQUALIFIED83Stephen Shaw
1041Aditya KuskoFrance2026-04-05Chanay, Jeffrey A Esq PROPOSAL91Xuxue Feng
1042Aditya KuskoJapan2026-04-11Commercial Press UNQUALIFIED0Ioni Bowcher
1043Alejandro PerinSpain2026-04-23Chanay, Jeffrey A Esq QUALIFIED6Elwin Sharvill
1044Clifford RimBrazil2026-04-15Commercial Press PROPOSAL25Amy Elsner
1045Rodrigues CampainItaly2026-04-03Feiner Bros UNQUALIFIED14Elwin Sharvill
1046Chavez BriddickGermany2026-04-10King, Christopher A Esq PROPOSAL48Bernardo Dominic
1047Stacey MacleadAustralia2026-04-02Rangoni Of Florence PROPOSAL46Elwin Sharvill
1048Morrow RutaAustralia2026-04-11Commercial Press PROPOSAL97Xuxue Feng
1049Leja CaldareraArgentina2026-03-30Feltz Printing Service UNQUALIFIED8Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Claire TollnerCanadaAmy Elsner RENEWAL
Silvio SlusarskiGermanyXuxue Feng RENEWAL
David DarakjyItalyIvan Magalhaes QUALIFIED
Silvio SlusarskiCanadaBernardo Dominic RENEWAL
Ricardo GauchoUnited KingdomElwin Sharvill QUALIFIED
Tony FollerCanadaStephen Shaw NEGOTIATION
Ricardo GauchoBrazilElwin Sharvill NEW
Maisha RulapaughSpainBernardo Dominic NEW
Costa DilliardAustraliaElwin Sharvill QUALIFIED
Aruna FigeroaJapanAsiya Javayant PROPOSAL
Costa DilliardCanadaAsiya Javayant NEGOTIATION
Silvio SlusarskiArgentinaOnyama Limba NEGOTIATION
Jefferson SchemmerAustraliaAmy Elsner NEGOTIATION
Aditya KuskoAustraliaIoni Bowcher QUALIFIED
Deepesh ChuiRussiaIvan Magalhaes NEW
Darci PoquetteSpainAmy Elsner RENEWAL
Kaitlin OstroskyJapanOnyama Limba QUALIFIED
Alejandro PerinFranceOnyama Limba UNQUALIFIED
Maisha RulapaughArgentinaOnyama Limba NEGOTIATION
Rodrigues CampainSpainBernardo Dominic UNQUALIFIED
Aditya KuskoIndiaBernardo Dominic RENEWAL
Mayumi KolmetzCanadaAnna Fali NEW
Murillo MaletCanadaBernardo Dominic QUALIFIED
Greenwood BologniaSpainXuxue Feng RENEWAL
Rodrigues CampainArgentinaAmy Elsner NEGOTIATION
Costa DilliardCanadaXuxue Feng NEGOTIATION
Leja CaldareraRussiaBernardo Dominic NEGOTIATION
Isabel BowleyFranceAmy Elsner RENEWAL
Tony FollerJapanAnna Fali PROPOSAL
Ricardo GauchoItalyAnna Fali QUALIFIED
Costa DilliardBrazilBernardo Dominic UNQUALIFIED
Mujtaba NickaFranceOnyama Limba NEGOTIATION
Misaki RoysterFranceIoni Bowcher PROPOSAL
Maisha RulapaughAustraliaIoni Bowcher QUALIFIED
Arvin AlbaresJapanBernardo Dominic UNQUALIFIED
Arvin AlbaresUnited KingdomIvan Magalhaes NEW
Murillo MaletFranceAnna Fali NEGOTIATION
David DarakjyCanadaAsiya Javayant NEW
Maisha RulapaughCanadaAnna Fali PROPOSAL
Greenwood BologniaCanadaOnyama Limba QUALIFIED
Misaki RoysterGermanyAsiya Javayant QUALIFIED
Octavia MaletFranceOnyama Limba PROPOSAL
Ricardo GauchoItalyBernardo Dominic NEGOTIATION
Jennifer AmigonJapanAnna Fali QUALIFIED
Salvatore StockhamArgentinaXuxue Feng NEW
David DarakjyItalyXuxue Feng UNQUALIFIED
Aruna FigeroaFranceBernardo Dominic PROPOSAL
Morrow RutaItalyBernardo Dominic UNQUALIFIED
James ButtItalyIoni Bowcher NEGOTIATION
David DarakjyFranceAsiya Javayant UNQUALIFIED
Frozen Columns
Name
Faith Gillian
Johnson Sergi
Kadeem Flosi
Francesco Shinko
Chavez Briddick
Jeanfrancois Venere
Leja Caldarera
Claire Tollner
Darci Poquette
Aika Inouye
Isabel Bowley
Mujtaba Nicka
Nicolas Iturbide
Leon Oldroyd
Darci Poquette
Murillo Malet
Aruna Figeroa
Cody Saylors
Smith Glick
Jefferson Schemmer
Ivar Paprocki
Leja Caldarera
Maria Marrier
Francesco Shinko
Nicolas Iturbide
Rodrigues Campain
Jones Vocelka
Adams Morasca
Jefferson Schemmer
Darci Poquette
James Butt
Emily Whobrey
Mayumi Kolmetz
Faith Gillian
Salvatore Stockham
Greenwood Bolognia
Alejandro Perin
Morrow Ruta
Ashley Doe
Morrow Ruta
Darci Poquette
Stacey Maclead
Salvatore Stockham
Nicolas Iturbide
Darci Poquette
Chavez Briddick
Aika Inouye
Cody Saylors
Juan Wieser
James Butt
IdCountryDate
1000Russia2026-04-04
1001Australia2026-04-12
1002Japan2026-04-17
1003France2026-04-22
1004Japan2026-04-20
1005Argentina2026-04-05
1006India2026-04-20
1007Spain2026-04-17
1008Argentina2026-04-04
1009United Kingdom2026-04-18
1010Brazil2026-04-05
1011Brazil2026-04-21
1012Argentina2026-03-30
1013Germany2026-04-12
1014United Kingdom2026-04-02
1015United Kingdom2026-03-25
1016Italy2026-04-17
1017Argentina2026-03-30
1018Australia2026-03-30
1019India2026-04-20
1020Brazil2026-03-28
1021Japan2026-03-30
1022Argentina2026-03-25
1023Canada2026-04-02
1024Italy2026-04-01
1025Japan2026-04-03
1026Germany2026-04-01
1027Russia2026-04-05
1028India2026-03-27
1029Japan2026-04-21
1030Canada2026-04-21
1031Canada2026-03-30
1032Italy2026-04-14
1033Canada2026-04-20
1034Japan2026-04-19
1035Japan2026-04-10
1036Germany2026-03-26
1037Australia2026-03-30
1038Brazil2026-04-07
1039Italy2026-04-20
1040Japan2026-04-14
1041United Kingdom2026-04-23
1042Canada2026-04-19
1043France2026-04-22
1044Russia2026-04-23
1045France2026-04-13
1046Brazil2026-03-30
1047France2026-04-23
1048India2026-04-14
1049Argentina2026-03-27

On-Demand Data

NameIdCountryDate
Stacey Maclead1000Australia2026-04-21
Munro Ferencz1001Japan2026-04-14
Jones Vocelka1002Germany2026-04-10
Johnson Sergi1003United Kingdom2026-04-03
Nicolas Iturbide1004Japan2026-04-12
Sinclair Waycott1005Canada2026-04-05
Aditya Kusko1006Canada2026-04-05
Julie Stenseth1007Russia2026-04-04
Chavez Briddick1008Canada2026-04-02
Ivar Paprocki1009Russia2026-04-17
Silvio Slusarski1010Germany2026-03-26
Ashley Doe1011Australia2026-04-17
Munro Ferencz1012United Kingdom2026-03-28
Rodrigues Campain1013Russia2026-04-05
Ashley Doe1014Brazil2026-04-06
Faith Gillian1015Australia2026-04-11
Juan Wieser1016India2026-03-25
Aruna Figeroa1017United Kingdom2026-03-28
James Butt1018Italy2026-04-20
Salvatore Stockham1019Spain2026-04-14
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aditya KuskoArgentinaBernardo Dominic RENEWAL
Antonio CaudyAustraliaBernardo Dominic PROPOSAL
Jeanfrancois VenereCanadaAnna Fali QUALIFIED
Smith GlickCanadaAsiya Javayant PROPOSAL
Misaki RoysterAustraliaIoni Bowcher QUALIFIED
Chavez BriddickAustraliaAnna Fali UNQUALIFIED
Salvatore StockhamIndiaXuxue Feng UNQUALIFIED
Costa DilliardJapanXuxue Feng QUALIFIED
Smith GlickAustraliaXuxue Feng RENEWAL
Kaitlin OstroskyAustraliaElwin Sharvill NEGOTIATION
Mayumi KolmetzIndiaAnna Fali UNQUALIFIED
Aditya KuskoAustraliaStephen Shaw RENEWAL
Leon OldroydJapanElwin Sharvill RENEWAL
Isabel BowleyJapanAmy Elsner RENEWAL
Greenwood BologniaJapanElwin Sharvill NEW
Sinclair WaycottIndiaAsiya Javayant NEW
Tony FollerJapanOnyama Limba QUALIFIED
Mayumi KolmetzUnited KingdomElwin Sharvill QUALIFIED
Ashley DoeIndiaStephen Shaw UNQUALIFIED
James ButtUnited KingdomIoni Bowcher NEW
Isabel BowleyCanadaXuxue Feng QUALIFIED
Nicolas IturbideGermanyIoni Bowcher RENEWAL
Chavez BriddickCanadaBernardo Dominic PROPOSAL
Misaki RoysterArgentinaBernardo Dominic RENEWAL
Maria MarrierJapanElwin Sharvill UNQUALIFIED
Mayumi KolmetzFranceAnna Fali QUALIFIED
Wickens NestleUnited KingdomIoni Bowcher PROPOSAL
Jeanfrancois VenereBrazilElwin Sharvill PROPOSAL
Greenwood BologniaBrazilIvan Magalhaes NEGOTIATION
Arvin AlbaresAustraliaXuxue Feng NEGOTIATION
Adams MorascaBrazilAsiya Javayant NEW
Ashley DoeAustraliaStephen Shaw QUALIFIED
Darci PoquetteGermanyXuxue Feng PROPOSAL
Francesco ShinkoFranceXuxue Feng QUALIFIED
Izzy GarufiItalyElwin Sharvill QUALIFIED
Murillo MaletJapanXuxue Feng UNQUALIFIED
Maisha RulapaughBrazilIvan Magalhaes QUALIFIED
Julie StensethBrazilAmy Elsner UNQUALIFIED
Murillo MaletFranceBernardo Dominic RENEWAL
Julie StensethGermanyAnna Fali UNQUALIFIED

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