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
Faith GillianBrazilAmy Elsner NEGOTIATION
Izzy GarufiCanadaAmy Elsner UNQUALIFIED
Morrow RutaCanadaAnna Fali PROPOSAL
Sinclair WaycottCanadaXuxue Feng NEW
Francesco ShinkoIndiaIvan Magalhaes UNQUALIFIED
Johnson SergiBrazilIoni Bowcher UNQUALIFIED
Cody SaylorsSpainAsiya Javayant QUALIFIED
Aruna FigeroaAustraliaStephen Shaw UNQUALIFIED
Jones VocelkaSpainAmy Elsner RENEWAL
Jennifer AmigonGermanyStephen Shaw RENEWAL
Nicolas IturbideRussiaAnna Fali PROPOSAL
Antonio CaudyArgentinaAmy Elsner NEGOTIATION
Maisha RulapaughCanadaAnna Fali NEW
Sinclair WaycottBrazilBernardo Dominic UNQUALIFIED
Sinclair WaycottAustraliaOnyama Limba PROPOSAL
Chavez BriddickFranceAmy Elsner NEW
Alejandro PerinArgentinaXuxue Feng PROPOSAL
Ivar PaprockiFranceXuxue Feng NEW
Ivar PaprockiFranceIvan Magalhaes NEGOTIATION
Mujtaba NickaSpainElwin Sharvill NEGOTIATION
Kaitlin OstroskyJapanStephen Shaw PROPOSAL
Misaki RoysterAustraliaIoni Bowcher UNQUALIFIED
Mujtaba NickaJapanAmy Elsner QUALIFIED
Mayumi KolmetzFranceElwin Sharvill PROPOSAL
Johnson SergiRussiaIoni Bowcher NEW
Kaitlin OstroskyItalyAsiya Javayant QUALIFIED
Stacey MacleadCanadaStephen Shaw NEGOTIATION
Darci PoquetteFranceAmy Elsner QUALIFIED
Deepesh ChuiRussiaIoni Bowcher QUALIFIED
Julie StensethItalyOnyama Limba PROPOSAL
Tony FollerArgentinaStephen Shaw QUALIFIED
Johnson SergiIndiaAmy Elsner NEGOTIATION
Cody SaylorsArgentinaAsiya Javayant RENEWAL
Izzy GarufiBrazilStephen Shaw NEGOTIATION
Ashley DoeCanadaAsiya Javayant PROPOSAL
Morrow RutaFranceAmy Elsner NEGOTIATION
Jones VocelkaJapanIoni Bowcher NEW
Arvin AlbaresAustraliaBernardo Dominic RENEWAL
Cody SaylorsGermanyStephen Shaw UNQUALIFIED
Munro FerenczJapanIoni Bowcher RENEWAL
Francesco ShinkoGermanyAsiya Javayant QUALIFIED
Mujtaba NickaBrazilAsiya Javayant NEW
Aditya KuskoJapanOnyama Limba NEGOTIATION
Maisha RulapaughGermanyAsiya Javayant NEW
Rodrigues CampainIndiaStephen Shaw PROPOSAL
Ashley DoeCanadaXuxue Feng NEGOTIATION
Juan WieserArgentinaOnyama Limba QUALIFIED
Leja CaldareraBrazilElwin Sharvill UNQUALIFIED
Izzy GarufiUnited KingdomAmy Elsner NEW
Alejandro PerinCanadaXuxue Feng UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Johnson SergiSpainAsiya Javayant RENEWAL
Ashley DoeItalyAsiya Javayant PROPOSAL
Leja CaldareraUnited KingdomBernardo Dominic UNQUALIFIED
Mujtaba NickaAustraliaAnna Fali UNQUALIFIED
Maria MarrierItalyOnyama Limba QUALIFIED
Kaitlin OstroskyFranceOnyama Limba NEW
Munro FerenczIndiaAnna Fali NEW
Faith GillianIndiaAmy Elsner QUALIFIED
Aruna FigeroaAustraliaIvan Magalhaes QUALIFIED
Salvatore StockhamJapanOnyama Limba UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000James ButtFrance2026-05-16Chemel, James L Cpa NEW86Ioni Bowcher
1001Nicolas IturbideItaly2026-05-01Chapman, Ross E Esq NEW16Xuxue Feng
1002Mujtaba NickaCanada2026-04-28Feiner Bros NEW93Xuxue Feng
1003Deepesh ChuiItaly2026-04-25King, Christopher A Esq RENEWAL46Bernardo Dominic
1004Mujtaba NickaItaly2026-05-13Rousseaux, Michael Esq NEGOTIATION33Amy Elsner
1005Faith GillianRussia2026-05-05Dorl, James J Esq QUALIFIED58Xuxue Feng
1006Octavia MaletCanada2026-04-29Truhlar And Truhlar Attys PROPOSAL24Anna Fali
1007Stacey MacleadGermany2026-05-06Benton, John B Jr NEW32Elwin Sharvill
1008Silvio SlusarskiItaly2026-05-18Rousseaux, Michael Esq PROPOSAL74Asiya Javayant
1009Morrow RutaIndia2026-05-12Morlong Associates NEGOTIATION66Bernardo Dominic
1010Maisha RulapaughJapan2026-05-19Buckley Miller Wright UNQUALIFIED59Elwin Sharvill
1011Johnson SergiCanada2026-05-09Chanay, Jeffrey A Esq NEGOTIATION65Elwin Sharvill
1012Kaitlin OstroskyItaly2026-05-16Morlong Associates NEGOTIATION93Ioni Bowcher
1013Chavez BriddickAustralia2026-05-22Chapman, Ross E Esq QUALIFIED86Elwin Sharvill
1014Ashley DoeSpain2026-04-29Buckley Miller Wright NEW65Elwin Sharvill
1015Murillo MaletGermany2026-05-08Printing Dimensions QUALIFIED60Ioni Bowcher
1016Cody SaylorsUnited Kingdom2026-05-05Chapman, Ross E Esq PROPOSAL71Anna Fali
1017Nicolas IturbideJapan2026-05-06Rousseaux, Michael Esq NEGOTIATION54Ioni Bowcher
1018Faith GillianGermany2026-05-09Feltz Printing Service NEGOTIATION15Anna Fali
1019Faith GillianCanada2026-05-18Chanay, Jeffrey A Esq PROPOSAL30Ioni Bowcher
1020Francesco ShinkoCanada2026-05-07Benton, John B Jr QUALIFIED29Ivan Magalhaes
1021Aika InouyeGermany2026-04-30Dorl, James J Esq UNQUALIFIED54Stephen Shaw
1022Alejandro PerinGermany2026-05-16Morlong Associates NEW71Anna Fali
1023Arvin AlbaresUnited Kingdom2026-05-09Benton, John B Jr QUALIFIED26Bernardo Dominic
1024Aruna FigeroaArgentina2026-05-19Chemel, James L Cpa RENEWAL90Stephen Shaw
1025Greenwood BologniaIndia2026-05-05Feltz Printing Service QUALIFIED46Onyama Limba
1026Claire TollnerJapan2026-04-25Chemel, James L Cpa NEGOTIATION74Asiya Javayant
1027Emily WhobreySpain2026-05-07Benton, John B Jr UNQUALIFIED53Xuxue Feng
1028Adams MorascaUnited Kingdom2026-05-18Rousseaux, Michael Esq UNQUALIFIED91Bernardo Dominic
1029Faith GillianAustralia2026-05-21King, Christopher A Esq NEW99Ivan Magalhaes
1030Sinclair WaycottAustralia2026-05-03Dorl, James J Esq RENEWAL80Bernardo Dominic
1031Jones VocelkaAustralia2026-05-07Benton, John B Jr RENEWAL25Asiya Javayant
1032Johnson SergiItaly2026-05-18Feiner Bros NEW10Bernardo Dominic
1033Chavez BriddickItaly2026-05-07Chemel, James L Cpa RENEWAL36Bernardo Dominic
1034Ashley DoeIndia2026-05-03Benton, John B Jr QUALIFIED98Xuxue Feng
1035Morrow RutaAustralia2026-05-18King, Christopher A Esq UNQUALIFIED0Ioni Bowcher
1036Aditya KuskoFrance2026-05-22Feltz Printing Service UNQUALIFIED62Onyama Limba
1037Darci PoquetteArgentina2026-05-15Commercial Press UNQUALIFIED37Elwin Sharvill
1038Arvin AlbaresCanada2026-05-17King, Christopher A Esq PROPOSAL65Bernardo Dominic
1039Jennifer AmigonArgentina2026-05-24Chemel, James L Cpa UNQUALIFIED49Onyama Limba
1040Costa DilliardArgentina2026-05-12Chapman, Ross E Esq UNQUALIFIED78Ivan Magalhaes
1041Sinclair WaycottRussia2026-05-13Chanay, Jeffrey A Esq PROPOSAL51Ivan Magalhaes
1042Jennifer AmigonFrance2026-04-26Chemel, James L Cpa NEGOTIATION92Ivan Magalhaes
1043Smith GlickItaly2026-04-27Buckley Miller Wright NEGOTIATION46Bernardo Dominic
1044Deepesh ChuiSpain2026-05-20Chanay, Jeffrey A Esq QUALIFIED59Ivan Magalhaes
1045Deepesh ChuiAustralia2026-05-04Buckley Miller Wright QUALIFIED12Asiya Javayant
1046Johnson SergiGermany2026-04-27King, Christopher A Esq NEGOTIATION55Elwin Sharvill
1047Cody SaylorsRussia2026-05-05Dorl, James J Esq PROPOSAL99Ioni Bowcher
1048Silvio SlusarskiCanada2026-05-18King, Christopher A Esq NEW99Anna Fali
1049Smith GlickItaly2026-05-10Buckley Miller Wright RENEWAL65Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Rodrigues CampainUnited KingdomStephen Shaw UNQUALIFIED
Sinclair WaycottGermanyBernardo Dominic RENEWAL
Emily WhobreyGermanyElwin Sharvill PROPOSAL
Alejandro PerinArgentinaBernardo Dominic NEW
Mujtaba NickaArgentinaElwin Sharvill QUALIFIED
Johnson SergiFranceXuxue Feng NEGOTIATION
Darci PoquetteSpainAmy Elsner QUALIFIED
Smith GlickUnited KingdomBernardo Dominic PROPOSAL
Jefferson SchemmerGermanyXuxue Feng RENEWAL
Adams MorascaFranceAmy Elsner QUALIFIED
Leon OldroydIndiaAmy Elsner RENEWAL
Deepesh ChuiSpainAnna Fali QUALIFIED
Jefferson SchemmerCanadaIoni Bowcher QUALIFIED
Claire TollnerBrazilIoni Bowcher RENEWAL
Munro FerenczCanadaOnyama Limba QUALIFIED
Arvin AlbaresSpainAmy Elsner NEW
Jeanfrancois VenereSpainOnyama Limba NEW
Julie StensethBrazilAsiya Javayant RENEWAL
Maria MarrierIndiaXuxue Feng UNQUALIFIED
Clifford RimCanadaOnyama Limba PROPOSAL
Alejandro PerinCanadaBernardo Dominic NEW
Juan WieserFranceAmy Elsner NEGOTIATION
Tony FollerAustraliaOnyama Limba UNQUALIFIED
Octavia MaletAustraliaAnna Fali RENEWAL
Adams MorascaIndiaElwin Sharvill RENEWAL
Murillo MaletArgentinaBernardo Dominic NEW
Stacey MacleadArgentinaAnna Fali RENEWAL
Morrow RutaSpainOnyama Limba UNQUALIFIED
Faith GillianGermanyAsiya Javayant QUALIFIED
Salvatore StockhamArgentinaIoni Bowcher NEGOTIATION
Francesco ShinkoRussiaStephen Shaw NEGOTIATION
Antonio CaudyBrazilElwin Sharvill RENEWAL
Greenwood BologniaBrazilAnna Fali NEGOTIATION
Alejandro PerinGermanyBernardo Dominic UNQUALIFIED
Stacey MacleadArgentinaIoni Bowcher NEGOTIATION
Deepesh ChuiAustraliaIvan Magalhaes RENEWAL
Kadeem FlosiArgentinaStephen Shaw PROPOSAL
Aika InouyeArgentinaIoni Bowcher QUALIFIED
Emily WhobreyJapanIvan Magalhaes UNQUALIFIED
Claire TollnerBrazilIoni Bowcher QUALIFIED
Julie StensethArgentinaIvan Magalhaes UNQUALIFIED
Jennifer AmigonUnited KingdomXuxue Feng NEW
Mayumi KolmetzItalyElwin Sharvill RENEWAL
Jefferson SchemmerAustraliaOnyama Limba UNQUALIFIED
Maisha RulapaughAustraliaOnyama Limba QUALIFIED
Aika InouyeArgentinaBernardo Dominic QUALIFIED
Clifford RimBrazilOnyama Limba PROPOSAL
Nicolas IturbideBrazilIoni Bowcher QUALIFIED
Munro FerenczUnited KingdomOnyama Limba RENEWAL
Morrow RutaAustraliaXuxue Feng QUALIFIED
Frozen Columns
Name
Tony Foller
Leja Caldarera
Greenwood Bolognia
Kaitlin Ostrosky
Francesco Shinko
Aika Inouye
Murillo Malet
Sinclair Waycott
Adams Morasca
Faith Gillian
Francesco Shinko
Mujtaba Nicka
Jefferson Schemmer
Ricardo Gaucho
Clifford Rim
Juan Wieser
Aika Inouye
David Darakjy
Johnson Sergi
Silvio Slusarski
Alejandro Perin
Jefferson Schemmer
Darci Poquette
Greenwood Bolognia
Francesco Shinko
Stacey Maclead
Faith Gillian
Silvio Slusarski
Costa Dilliard
Clifford Rim
Aditya Kusko
Mujtaba Nicka
Antonio Caudy
Ricardo Gaucho
Ashley Doe
Leja Caldarera
Kadeem Flosi
Jones Vocelka
Misaki Royster
Murillo Malet
Ashley Doe
Jones Vocelka
Darci Poquette
Mayumi Kolmetz
Julie Stenseth
Deepesh Chui
Darci Poquette
Mayumi Kolmetz
Aika Inouye
Ivar Paprocki
IdCountryDate
1000India2026-05-23
1001Japan2026-05-10
1002Italy2026-05-10
1003Brazil2026-05-19
1004France2026-05-21
1005Australia2026-05-21
1006France2026-05-17
1007Brazil2026-04-28
1008Canada2026-05-22
1009India2026-05-13
1010Germany2026-05-09
1011Australia2026-05-18
1012Canada2026-05-19
1013Italy2026-05-04
1014Russia2026-05-01
1015Australia2026-05-20
1016Canada2026-05-01
1017Germany2026-04-25
1018Brazil2026-05-15
1019India2026-05-02
1020Brazil2026-05-21
1021India2026-05-21
1022Germany2026-05-22
1023Canada2026-04-25
1024Japan2026-05-18
1025Brazil2026-05-22
1026Argentina2026-05-22
1027France2026-05-11
1028Spain2026-04-28
1029Australia2026-05-08
1030Argentina2026-05-06
1031Italy2026-05-16
1032United Kingdom2026-05-24
1033Spain2026-05-13
1034Argentina2026-05-12
1035Brazil2026-04-26
1036Argentina2026-04-26
1037Australia2026-05-08
1038Canada2026-05-17
1039Brazil2026-04-30
1040Germany2026-04-27
1041Russia2026-05-12
1042United Kingdom2026-05-02
1043Japan2026-05-14
1044United Kingdom2026-05-20
1045United Kingdom2026-05-19
1046United Kingdom2026-04-28
1047Australia2026-05-08
1048United Kingdom2026-05-10
1049France2026-05-06

On-Demand Data

NameIdCountryDate
Jefferson Schemmer1000Canada2026-05-13
Morrow Ruta1001Australia2026-05-01
Munro Ferencz1002France2026-05-23
Ivar Paprocki1003Japan2026-05-14
Jefferson Schemmer1004India2026-05-04
Clifford Rim1005France2026-05-05
Murillo Malet1006France2026-05-18
Alejandro Perin1007Germany2026-04-25
Maisha Rulapaugh1008France2026-04-26
Aditya Kusko1009France2026-05-03
Murillo Malet1010Japan2026-05-06
Smith Glick1011Italy2026-05-14
Deepesh Chui1012Spain2026-05-22
Kaitlin Ostrosky1013Germany2026-05-16
Alejandro Perin1014Spain2026-05-09
James Butt1015Australia2026-04-26
Smith Glick1016Spain2026-05-21
Faith Gillian1017Brazil2026-05-07
Jones Vocelka1018Russia2026-05-22
Leja Caldarera1019Italy2026-05-18
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Alejandro PerinFranceAsiya Javayant NEW
Aditya KuskoGermanyIvan Magalhaes NEW
Sinclair WaycottGermanyElwin Sharvill QUALIFIED
Cody SaylorsBrazilBernardo Dominic QUALIFIED
Jefferson SchemmerAustraliaXuxue Feng NEGOTIATION
Mujtaba NickaUnited KingdomBernardo Dominic NEW
Murillo MaletCanadaAsiya Javayant UNQUALIFIED
Adams MorascaRussiaOnyama Limba RENEWAL
Isabel BowleyArgentinaAsiya Javayant NEGOTIATION
Francesco ShinkoGermanyAmy Elsner QUALIFIED
Antonio CaudyAustraliaStephen Shaw QUALIFIED
Rodrigues CampainSpainBernardo Dominic UNQUALIFIED
Jeanfrancois VenereRussiaElwin Sharvill PROPOSAL
Sinclair WaycottSpainElwin Sharvill QUALIFIED
Silvio SlusarskiSpainAnna Fali RENEWAL
Nicolas IturbideGermanyIoni Bowcher PROPOSAL
Jefferson SchemmerCanadaElwin Sharvill NEGOTIATION
Emily WhobreySpainStephen Shaw PROPOSAL
Antonio CaudySpainAsiya Javayant UNQUALIFIED
Antonio CaudyAustraliaBernardo Dominic NEW
Darci PoquetteRussiaXuxue Feng RENEWAL
Rodrigues CampainJapanIvan Magalhaes NEW
Juan WieserJapanStephen Shaw QUALIFIED
Costa DilliardAustraliaAsiya Javayant NEW
Deepesh ChuiUnited KingdomOnyama Limba RENEWAL
Ashley DoeFranceAsiya Javayant PROPOSAL
Kadeem FlosiSpainIoni Bowcher NEGOTIATION
Octavia MaletIndiaAsiya Javayant UNQUALIFIED
Costa DilliardArgentinaIvan Magalhaes RENEWAL
Emily WhobreySpainAsiya Javayant NEGOTIATION
Juan WieserArgentinaStephen Shaw NEW
Arvin AlbaresRussiaStephen Shaw NEW
Izzy GarufiJapanAsiya Javayant PROPOSAL
Jones VocelkaUnited KingdomIvan Magalhaes QUALIFIED
Mujtaba NickaCanadaOnyama Limba NEGOTIATION
Juan WieserRussiaAnna Fali NEGOTIATION
Cody SaylorsSpainXuxue Feng PROPOSAL
Maria MarrierBrazilAsiya Javayant QUALIFIED
Leon OldroydJapanElwin Sharvill QUALIFIED
Clifford RimRussiaXuxue Feng 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>