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
Smith GlickRussiaXuxue Feng RENEWAL
Tony FollerCanadaOnyama Limba QUALIFIED
Stacey MacleadUnited KingdomAmy Elsner RENEWAL
Aditya KuskoBrazilXuxue Feng PROPOSAL
Jeanfrancois VenereIndiaAsiya Javayant NEGOTIATION
Maria MarrierSpainIvan Magalhaes PROPOSAL
David DarakjyCanadaBernardo Dominic NEW
Jones VocelkaGermanyElwin Sharvill UNQUALIFIED
Ivar PaprockiSpainBernardo Dominic UNQUALIFIED
Cody SaylorsArgentinaBernardo Dominic NEGOTIATION
Maisha RulapaughFranceIoni Bowcher UNQUALIFIED
Aruna FigeroaUnited KingdomAsiya Javayant NEW
Jeanfrancois VenereFranceOnyama Limba NEW
Adams MorascaSpainElwin Sharvill RENEWAL
Aika InouyeFranceBernardo Dominic PROPOSAL
Nicolas IturbideSpainElwin Sharvill NEGOTIATION
Aruna FigeroaRussiaElwin Sharvill QUALIFIED
Jeanfrancois VenereSpainStephen Shaw QUALIFIED
Clifford RimUnited KingdomStephen Shaw UNQUALIFIED
Rodrigues CampainArgentinaIvan Magalhaes PROPOSAL
Stacey MacleadArgentinaAmy Elsner QUALIFIED
Johnson SergiIndiaElwin Sharvill UNQUALIFIED
Misaki RoysterGermanyAnna Fali PROPOSAL
Alejandro PerinBrazilIvan Magalhaes QUALIFIED
Chavez BriddickAustraliaStephen Shaw NEW
Mujtaba NickaGermanyBernardo Dominic PROPOSAL
Mayumi KolmetzRussiaXuxue Feng QUALIFIED
Isabel BowleyRussiaAsiya Javayant NEW
Costa DilliardBrazilAsiya Javayant PROPOSAL
Emily WhobreySpainIoni Bowcher NEGOTIATION
Aruna FigeroaGermanyIoni Bowcher UNQUALIFIED
Stacey MacleadItalyOnyama Limba PROPOSAL
Chavez BriddickIndiaIoni Bowcher UNQUALIFIED
Munro FerenczJapanAnna Fali UNQUALIFIED
Misaki RoysterArgentinaAsiya Javayant PROPOSAL
Jones VocelkaCanadaElwin Sharvill NEW
Jeanfrancois VenereAustraliaOnyama Limba PROPOSAL
Kadeem FlosiBrazilIvan Magalhaes RENEWAL
Arvin AlbaresIndiaElwin Sharvill PROPOSAL
Juan WieserGermanyElwin Sharvill RENEWAL
Salvatore StockhamBrazilIvan Magalhaes RENEWAL
Aditya KuskoJapanAmy Elsner UNQUALIFIED
Sinclair WaycottSpainElwin Sharvill QUALIFIED
Isabel BowleyArgentinaBernardo Dominic QUALIFIED
Octavia MaletBrazilAmy Elsner NEW
David DarakjyCanadaAnna Fali NEGOTIATION
Alejandro PerinItalyAnna Fali UNQUALIFIED
Kaitlin OstroskyArgentinaAnna Fali NEW
Jones VocelkaUnited KingdomAmy Elsner QUALIFIED
Greenwood BologniaFranceIvan Magalhaes UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Rodrigues CampainFranceIoni Bowcher PROPOSAL
Stacey MacleadCanadaIoni Bowcher PROPOSAL
Clifford RimIndiaIvan Magalhaes NEW
Aika InouyeArgentinaBernardo Dominic UNQUALIFIED
Julie StensethRussiaAnna Fali PROPOSAL
Maisha RulapaughIndiaBernardo Dominic RENEWAL
Julie StensethFranceAsiya Javayant NEW
Wickens NestleRussiaAsiya Javayant PROPOSAL
Mujtaba NickaRussiaOnyama Limba NEW
Johnson SergiBrazilBernardo Dominic QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aditya KuskoAustralia2026-05-10Commercial Press PROPOSAL57Stephen Shaw
1001Darci PoquetteArgentina2026-05-24Morlong Associates UNQUALIFIED51Amy Elsner
1002Jones VocelkaUnited Kingdom2026-04-30King, Christopher A Esq NEGOTIATION84Asiya Javayant
1003Munro FerenczAustralia2026-05-11Chanay, Jeffrey A Esq QUALIFIED62Xuxue Feng
1004Emily WhobreyCanada2026-05-02Chanay, Jeffrey A Esq UNQUALIFIED43Asiya Javayant
1005Jennifer AmigonRussia2026-05-25Printing Dimensions RENEWAL14Stephen Shaw
1006Emily WhobreyAustralia2026-05-10Commercial Press UNQUALIFIED28Elwin Sharvill
1007Maisha RulapaughFrance2026-05-01Buckley Miller Wright UNQUALIFIED41Anna Fali
1008Octavia MaletJapan2026-05-01Printing Dimensions RENEWAL53Ioni Bowcher
1009Sinclair WaycottJapan2026-05-26Morlong Associates QUALIFIED96Ivan Magalhaes
1010Adams MorascaGermany2026-05-05Rangoni Of Florence RENEWAL36Elwin Sharvill
1011Aditya KuskoRussia2026-05-14Rousseaux, Michael Esq NEW7Bernardo Dominic
1012Johnson SergiCanada2026-05-15Chanay, Jeffrey A Esq NEGOTIATION71Stephen Shaw
1013Aika InouyeItaly2026-05-24Chemel, James L Cpa UNQUALIFIED65Ioni Bowcher
1014Kaitlin OstroskyRussia2026-05-10Feiner Bros QUALIFIED72Amy Elsner
1015Maisha RulapaughAustralia2026-05-27Rousseaux, Michael Esq NEGOTIATION41Xuxue Feng
1016Greenwood BologniaJapan2026-04-29Feiner Bros NEGOTIATION85Xuxue Feng
1017Claire TollnerJapan2026-05-25Chemel, James L Cpa NEGOTIATION44Ivan Magalhaes
1018Mayumi KolmetzArgentina2026-05-15Buckley Miller Wright NEW44Stephen Shaw
1019Kaitlin OstroskyJapan2026-05-14Chanay, Jeffrey A Esq PROPOSAL85Bernardo Dominic
1020Murillo MaletSpain2026-05-07Rousseaux, Michael Esq NEW84Stephen Shaw
1021Greenwood BologniaCanada2026-05-18King, Christopher A Esq NEW77Stephen Shaw
1022Kaitlin OstroskyIndia2026-05-13King, Christopher A Esq NEGOTIATION32Onyama Limba
1023Adams MorascaIndia2026-05-05Rousseaux, Michael Esq NEGOTIATION47Elwin Sharvill
1024Smith GlickSpain2026-05-22Truhlar And Truhlar Attys QUALIFIED39Bernardo Dominic
1025Jennifer AmigonItaly2026-05-02Benton, John B Jr QUALIFIED64Bernardo Dominic
1026Leja CaldareraIndia2026-05-17Chapman, Ross E Esq NEW95Ioni Bowcher
1027Arvin AlbaresAustralia2026-05-25King, Christopher A Esq QUALIFIED71Amy Elsner
1028Aditya KuskoRussia2026-05-19Chanay, Jeffrey A Esq PROPOSAL3Xuxue Feng
1029Murillo MaletSpain2026-05-19Buckley Miller Wright NEW67Onyama Limba
1030Morrow RutaRussia2026-05-11Feltz Printing Service NEW20Xuxue Feng
1031Jefferson SchemmerIndia2026-05-12Feiner Bros UNQUALIFIED41Onyama Limba
1032Aruna FigeroaGermany2026-05-16Feltz Printing Service NEW70Ivan Magalhaes
1033Darci PoquetteItaly2026-05-02Buckley Miller Wright NEGOTIATION66Stephen Shaw
1034Faith GillianJapan2026-05-13Feltz Printing Service UNQUALIFIED96Asiya Javayant
1035Alejandro PerinJapan2026-05-24Buckley Miller Wright PROPOSAL45Elwin Sharvill
1036Mujtaba NickaSpain2026-04-29Dorl, James J Esq PROPOSAL15Ioni Bowcher
1037Jones VocelkaGermany2026-05-08Morlong Associates UNQUALIFIED58Ivan Magalhaes
1038Juan WieserJapan2026-05-17Feiner Bros NEW83Asiya Javayant
1039Arvin AlbaresSpain2026-05-08Rousseaux, Michael Esq NEGOTIATION20Asiya Javayant
1040Stacey MacleadFrance2026-05-03Printing Dimensions NEGOTIATION32Ivan Magalhaes
1041Tony FollerCanada2026-05-08Chapman, Ross E Esq NEGOTIATION24Anna Fali
1042Juan WieserGermany2026-05-24Rangoni Of Florence NEW31Onyama Limba
1043Darci PoquetteFrance2026-05-06Rangoni Of Florence NEGOTIATION57Ivan Magalhaes
1044Silvio SlusarskiRussia2026-05-16Commercial Press QUALIFIED96Anna Fali
1045Tony FollerAustralia2026-05-24Feltz Printing Service PROPOSAL76Elwin Sharvill
1046Leon OldroydAustralia2026-05-26Chemel, James L Cpa PROPOSAL18Xuxue Feng
1047Maria MarrierBrazil2026-05-21Dorl, James J Esq QUALIFIED51Stephen Shaw
1048Clifford RimItaly2026-05-03Chemel, James L Cpa NEW19Ivan Magalhaes
1049Darci PoquetteRussia2026-05-09Truhlar And Truhlar Attys RENEWAL53Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Adams MorascaAustraliaStephen Shaw QUALIFIED
Ivar PaprockiItalyAsiya Javayant RENEWAL
Silvio SlusarskiArgentinaXuxue Feng QUALIFIED
Jones VocelkaGermanyBernardo Dominic NEGOTIATION
Smith GlickFranceAmy Elsner NEW
Murillo MaletItalyElwin Sharvill PROPOSAL
Emily WhobreySpainBernardo Dominic NEGOTIATION
Nicolas IturbideUnited KingdomAsiya Javayant UNQUALIFIED
Morrow RutaBrazilXuxue Feng NEW
Aika InouyeJapanOnyama Limba RENEWAL
Maria MarrierRussiaBernardo Dominic PROPOSAL
Emily WhobreyBrazilOnyama Limba QUALIFIED
Jennifer AmigonFranceAnna Fali UNQUALIFIED
Jennifer AmigonFranceAsiya Javayant NEGOTIATION
Juan WieserArgentinaIvan Magalhaes PROPOSAL
Salvatore StockhamFranceIvan Magalhaes RENEWAL
James ButtUnited KingdomAnna Fali NEW
Antonio CaudyUnited KingdomAnna Fali QUALIFIED
Smith GlickRussiaXuxue Feng RENEWAL
Mujtaba NickaGermanyStephen Shaw QUALIFIED
Chavez BriddickBrazilIvan Magalhaes RENEWAL
Julie StensethJapanAsiya Javayant UNQUALIFIED
Francesco ShinkoFranceAmy Elsner UNQUALIFIED
Aditya KuskoSpainXuxue Feng NEW
Darci PoquetteGermanyIvan Magalhaes QUALIFIED
James ButtArgentinaXuxue Feng QUALIFIED
James ButtJapanAmy Elsner RENEWAL
Jones VocelkaSpainElwin Sharvill NEGOTIATION
Jones VocelkaIndiaStephen Shaw UNQUALIFIED
Wickens NestleGermanyBernardo Dominic PROPOSAL
Arvin AlbaresRussiaAnna Fali RENEWAL
Silvio SlusarskiItalyIvan Magalhaes QUALIFIED
Munro FerenczBrazilElwin Sharvill NEGOTIATION
Maisha RulapaughUnited KingdomStephen Shaw NEGOTIATION
Juan WieserBrazilXuxue Feng NEW
Mayumi KolmetzAustraliaAsiya Javayant QUALIFIED
Costa DilliardItalyXuxue Feng QUALIFIED
David DarakjyGermanyStephen Shaw NEW
Jefferson SchemmerBrazilStephen Shaw NEGOTIATION
Nicolas IturbideGermanyBernardo Dominic UNQUALIFIED
Costa DilliardJapanIoni Bowcher UNQUALIFIED
Leon OldroydGermanyElwin Sharvill UNQUALIFIED
Silvio SlusarskiJapanElwin Sharvill RENEWAL
Mujtaba NickaCanadaBernardo Dominic RENEWAL
Jones VocelkaBrazilIoni Bowcher QUALIFIED
Julie StensethBrazilXuxue Feng RENEWAL
Mujtaba NickaSpainBernardo Dominic NEW
Murillo MaletFranceElwin Sharvill QUALIFIED
David DarakjyCanadaStephen Shaw QUALIFIED
Arvin AlbaresUnited KingdomStephen Shaw UNQUALIFIED
Frozen Columns
Name
Arvin Albares
Aika Inouye
Jones Vocelka
Tony Foller
Mujtaba Nicka
Mujtaba Nicka
Jennifer Amigon
Rodrigues Campain
Julie Stenseth
Isabel Bowley
Maisha Rulapaugh
Maisha Rulapaugh
Chavez Briddick
Izzy Garufi
Morrow Ruta
Aruna Figeroa
Ashley Doe
Tony Foller
Jefferson Schemmer
Ashley Doe
Alejandro Perin
Costa Dilliard
Darci Poquette
Deepesh Chui
Alejandro Perin
Emily Whobrey
Nicolas Iturbide
Cody Saylors
Juan Wieser
Claire Tollner
Greenwood Bolognia
Rodrigues Campain
Wickens Nestle
Arvin Albares
Ashley Doe
Murillo Malet
Johnson Sergi
James Butt
Emily Whobrey
Alejandro Perin
Smith Glick
Sinclair Waycott
Jeanfrancois Venere
Adams Morasca
Maisha Rulapaugh
Leja Caldarera
Kadeem Flosi
Mayumi Kolmetz
Aika Inouye
Maria Marrier
IdCountryDate
1000Australia2026-05-10
1001Australia2026-05-27
1002Canada2026-05-03
1003Germany2026-05-01
1004Australia2026-05-08
1005Brazil2026-05-06
1006Russia2026-05-22
1007Japan2026-04-29
1008Germany2026-05-09
1009Canada2026-05-10
1010Brazil2026-05-22
1011France2026-05-13
1012Argentina2026-05-19
1013India2026-05-06
1014United Kingdom2026-05-07
1015Canada2026-05-24
1016United Kingdom2026-05-05
1017Canada2026-05-20
1018Argentina2026-05-25
1019India2026-05-11
1020Australia2026-05-04
1021Russia2026-05-13
1022India2026-05-20
1023Canada2026-05-23
1024Argentina2026-05-03
1025Russia2026-05-22
1026Germany2026-05-24
1027Brazil2026-05-02
1028Argentina2026-05-11
1029Spain2026-05-15
1030Japan2026-05-27
1031Australia2026-05-03
1032France2026-05-20
1033Japan2026-05-09
1034India2026-05-15
1035Italy2026-05-27
1036India2026-05-08
1037Spain2026-05-03
1038Canada2026-05-19
1039Brazil2026-05-21
1040Russia2026-05-24
1041United Kingdom2026-05-01
1042France2026-05-26
1043Argentina2026-04-28
1044Japan2026-04-30
1045Russia2026-05-03
1046Australia2026-05-04
1047Germany2026-05-15
1048Italy2026-05-06
1049Japan2026-05-07

On-Demand Data

NameIdCountryDate
Ashley Doe1000United Kingdom2026-05-08
Leja Caldarera1001India2026-05-04
Aruna Figeroa1002Brazil2026-05-23
Nicolas Iturbide1003Australia2026-05-11
Deepesh Chui1004Spain2026-05-17
Alejandro Perin1005Germany2026-05-14
Wickens Nestle1006Italy2026-05-13
Emily Whobrey1007Argentina2026-05-27
Kaitlin Ostrosky1008Japan2026-05-22
Ashley Doe1009India2026-04-29
Maria Marrier1010Italy2026-05-11
Aditya Kusko1011Argentina2026-05-19
Sinclair Waycott1012Italy2026-05-24
Johnson Sergi1013France2026-05-08
Julie Stenseth1014Argentina2026-05-17
Leja Caldarera1015Russia2026-05-25
Jeanfrancois Venere1016United Kingdom2026-04-29
Aditya Kusko1017Russia2026-05-21
Kadeem Flosi1018Japan2026-05-01
Octavia Malet1019Italy2026-04-28
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Emily WhobreyFranceOnyama Limba QUALIFIED
Emily WhobreyRussiaIoni Bowcher RENEWAL
Murillo MaletArgentinaAsiya Javayant RENEWAL
Claire TollnerRussiaIoni Bowcher NEW
Smith GlickCanadaIoni Bowcher NEW
Aika InouyeFranceIoni Bowcher UNQUALIFIED
Arvin AlbaresSpainXuxue Feng NEGOTIATION
Aditya KuskoJapanElwin Sharvill UNQUALIFIED
Stacey MacleadItalyStephen Shaw RENEWAL
Johnson SergiArgentinaStephen Shaw PROPOSAL
David DarakjyArgentinaAsiya Javayant UNQUALIFIED
Arvin AlbaresFranceStephen Shaw QUALIFIED
Maria MarrierItalyIoni Bowcher RENEWAL
Clifford RimIndiaBernardo Dominic RENEWAL
Emily WhobreyAustraliaAnna Fali NEGOTIATION
Nicolas IturbideRussiaAnna Fali PROPOSAL
Jones VocelkaBrazilAsiya Javayant PROPOSAL
Maria MarrierCanadaBernardo Dominic UNQUALIFIED
Misaki RoysterBrazilXuxue Feng UNQUALIFIED
Greenwood BologniaBrazilAmy Elsner NEW
Jennifer AmigonJapanIoni Bowcher UNQUALIFIED
Adams MorascaArgentinaBernardo Dominic QUALIFIED
Maisha RulapaughItalyAsiya Javayant QUALIFIED
Smith GlickItalyXuxue Feng NEGOTIATION
Jefferson SchemmerIndiaElwin Sharvill NEGOTIATION
Kadeem FlosiFranceStephen Shaw QUALIFIED
Izzy GarufiAustraliaAnna Fali UNQUALIFIED
Darci PoquetteSpainIvan Magalhaes PROPOSAL
Greenwood BologniaJapanXuxue Feng UNQUALIFIED
Faith GillianArgentinaBernardo Dominic NEGOTIATION
Smith GlickIndiaStephen Shaw QUALIFIED
Aruna FigeroaUnited KingdomIvan Magalhaes NEGOTIATION
Alejandro PerinAustraliaAmy Elsner UNQUALIFIED
Chavez BriddickJapanElwin Sharvill PROPOSAL
Johnson SergiGermanyStephen Shaw PROPOSAL
Isabel BowleyIndiaAmy Elsner PROPOSAL
Deepesh ChuiSpainIvan Magalhaes UNQUALIFIED
Johnson SergiJapanIoni Bowcher PROPOSAL
Kaitlin OstroskyRussiaStephen Shaw PROPOSAL
Wickens NestleItalyElwin Sharvill 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>