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
Adams MorascaUnited KingdomAsiya Javayant RENEWAL
Leon OldroydArgentinaStephen Shaw NEW
Emily WhobreyIndiaBernardo Dominic RENEWAL
Munro FerenczSpainAsiya Javayant RENEWAL
Smith GlickItalyAnna Fali PROPOSAL
Izzy GarufiSpainIvan Magalhaes NEGOTIATION
Cody SaylorsJapanBernardo Dominic NEW
Clifford RimIndiaBernardo Dominic PROPOSAL
Silvio SlusarskiAustraliaStephen Shaw NEW
Ricardo GauchoJapanAnna Fali NEGOTIATION
Adams MorascaJapanBernardo Dominic PROPOSAL
Maisha RulapaughIndiaAsiya Javayant PROPOSAL
David DarakjyIndiaIoni Bowcher UNQUALIFIED
Mujtaba NickaBrazilIvan Magalhaes QUALIFIED
Darci PoquetteGermanyStephen Shaw PROPOSAL
Jones VocelkaBrazilAsiya Javayant QUALIFIED
Rodrigues CampainItalyOnyama Limba PROPOSAL
Deepesh ChuiGermanyAmy Elsner NEGOTIATION
Isabel BowleySpainStephen Shaw NEW
Ashley DoeAustraliaAnna Fali NEGOTIATION
Ricardo GauchoCanadaIoni Bowcher NEW
Arvin AlbaresUnited KingdomElwin Sharvill UNQUALIFIED
Maria MarrierBrazilAsiya Javayant NEW
Costa DilliardBrazilBernardo Dominic PROPOSAL
Chavez BriddickGermanyXuxue Feng RENEWAL
David DarakjyItalyOnyama Limba NEW
Chavez BriddickJapanIvan Magalhaes NEW
Ivar PaprockiCanadaBernardo Dominic QUALIFIED
Tony FollerItalyOnyama Limba UNQUALIFIED
Rodrigues CampainArgentinaAmy Elsner UNQUALIFIED
Johnson SergiCanadaStephen Shaw NEW
Munro FerenczArgentinaAnna Fali RENEWAL
Faith GillianBrazilAmy Elsner RENEWAL
Mayumi KolmetzUnited KingdomXuxue Feng QUALIFIED
Deepesh ChuiFranceXuxue Feng NEGOTIATION
Tony FollerRussiaStephen Shaw RENEWAL
Clifford RimJapanAsiya Javayant RENEWAL
Kaitlin OstroskyIndiaIvan Magalhaes UNQUALIFIED
Arvin AlbaresArgentinaElwin Sharvill NEGOTIATION
Tony FollerUnited KingdomAmy Elsner RENEWAL
Mujtaba NickaItalyIoni Bowcher PROPOSAL
Salvatore StockhamIndiaElwin Sharvill RENEWAL
Costa DilliardBrazilOnyama Limba NEGOTIATION
Jefferson SchemmerBrazilAsiya Javayant QUALIFIED
Smith GlickFranceIoni Bowcher NEGOTIATION
Tony FollerAustraliaXuxue Feng NEW
Stacey MacleadRussiaXuxue Feng NEGOTIATION
Leon OldroydSpainIvan Magalhaes UNQUALIFIED
Jeanfrancois VenereArgentinaAsiya Javayant NEGOTIATION
Silvio SlusarskiCanadaIvan Magalhaes RENEWAL
Horizontal
NameCountryRepresentativeStatus
Jones VocelkaArgentinaOnyama Limba UNQUALIFIED
Aika InouyeJapanIvan Magalhaes QUALIFIED
Morrow RutaArgentinaAsiya Javayant RENEWAL
Morrow RutaRussiaIvan Magalhaes NEGOTIATION
Alejandro PerinGermanyAmy Elsner NEGOTIATION
Jefferson SchemmerAustraliaOnyama Limba QUALIFIED
Costa DilliardFranceAmy Elsner NEW
Leja CaldareraSpainIvan Magalhaes RENEWAL
Juan WieserJapanAmy Elsner QUALIFIED
Mujtaba NickaCanadaIvan Magalhaes NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000James ButtGermany2026-04-29Rangoni Of Florence NEGOTIATION3Amy Elsner
1001Rodrigues CampainBrazil2026-04-15King, Christopher A Esq PROPOSAL39Ioni Bowcher
1002Mujtaba NickaJapan2026-04-25Commercial Press RENEWAL13Ivan Magalhaes
1003Adams MorascaUnited Kingdom2026-04-27Truhlar And Truhlar Attys NEW5Xuxue Feng
1004Stacey MacleadCanada2026-04-25Chanay, Jeffrey A Esq PROPOSAL54Anna Fali
1005Jones VocelkaJapan2026-04-02Printing Dimensions UNQUALIFIED46Elwin Sharvill
1006Ivar PaprockiSpain2026-04-09Printing Dimensions UNQUALIFIED51Stephen Shaw
1007Costa DilliardJapan2026-04-07Truhlar And Truhlar Attys UNQUALIFIED33Ivan Magalhaes
1008Costa DilliardUnited Kingdom2026-04-03Feltz Printing Service NEGOTIATION17Asiya Javayant
1009Jennifer AmigonGermany2026-04-11Buckley Miller Wright PROPOSAL84Elwin Sharvill
1010Claire TollnerUnited Kingdom2026-04-25Dorl, James J Esq UNQUALIFIED10Anna Fali
1011Leja CaldareraSpain2026-04-16Chanay, Jeffrey A Esq QUALIFIED84Ioni Bowcher
1012Stacey MacleadUnited Kingdom2026-04-24Rangoni Of Florence NEW4Amy Elsner
1013Smith GlickGermany2026-04-08Chanay, Jeffrey A Esq UNQUALIFIED15Amy Elsner
1014Smith GlickBrazil2026-04-23Feiner Bros NEGOTIATION81Ivan Magalhaes
1015Jeanfrancois VenereSpain2026-04-14Benton, John B Jr RENEWAL36Xuxue Feng
1016Murillo MaletGermany2026-04-28Feiner Bros UNQUALIFIED8Bernardo Dominic
1017Johnson SergiSpain2026-04-22Chemel, James L Cpa PROPOSAL67Ivan Magalhaes
1018Octavia MaletItaly2026-04-18Chapman, Ross E Esq NEGOTIATION81Elwin Sharvill
1019James ButtUnited Kingdom2026-04-19Rousseaux, Michael Esq NEGOTIATION27Ioni Bowcher
1020Leon OldroydGermany2026-04-27Benton, John B Jr UNQUALIFIED34Stephen Shaw
1021Tony FollerItaly2026-04-16Buckley Miller Wright NEGOTIATION28Onyama Limba
1022Emily WhobreyBrazil2026-04-10Printing Dimensions NEGOTIATION82Asiya Javayant
1023Rodrigues CampainArgentina2026-04-07Commercial Press RENEWAL96Anna Fali
1024Misaki RoysterUnited Kingdom2026-04-29Commercial Press UNQUALIFIED89Bernardo Dominic
1025Cody SaylorsUnited Kingdom2026-04-16Truhlar And Truhlar Attys NEGOTIATION94Anna Fali
1026Octavia MaletSpain2026-04-19Chemel, James L Cpa NEW22Ivan Magalhaes
1027Isabel BowleyFrance2026-04-13Chanay, Jeffrey A Esq PROPOSAL22Bernardo Dominic
1028Ashley DoeAustralia2026-04-27Morlong Associates QUALIFIED9Bernardo Dominic
1029Chavez BriddickCanada2026-04-02Truhlar And Truhlar Attys NEW78Asiya Javayant
1030Clifford RimJapan2026-04-08Morlong Associates NEW98Asiya Javayant
1031Mayumi KolmetzIndia2026-04-22Commercial Press PROPOSAL11Anna Fali
1032Stacey MacleadCanada2026-04-15Truhlar And Truhlar Attys RENEWAL17Ivan Magalhaes
1033Maisha RulapaughSpain2026-04-13Feltz Printing Service RENEWAL90Xuxue Feng
1034Greenwood BologniaUnited Kingdom2026-04-02Chemel, James L Cpa RENEWAL40Anna Fali
1035Aruna FigeroaAustralia2026-03-31Chapman, Ross E Esq RENEWAL92Onyama Limba
1036Jeanfrancois VenereUnited Kingdom2026-04-07Benton, John B Jr NEGOTIATION67Stephen Shaw
1037Aditya KuskoAustralia2026-03-31Chemel, James L Cpa NEGOTIATION13Ioni Bowcher
1038Cody SaylorsFrance2026-04-17Chemel, James L Cpa UNQUALIFIED58Elwin Sharvill
1039David DarakjyRussia2026-04-24Morlong Associates NEW13Elwin Sharvill
1040Leon OldroydIndia2026-04-21Chanay, Jeffrey A Esq UNQUALIFIED28Onyama Limba
1041Jefferson SchemmerGermany2026-04-23Dorl, James J Esq PROPOSAL31Onyama Limba
1042David DarakjyGermany2026-04-19Rousseaux, Michael Esq UNQUALIFIED9Asiya Javayant
1043Nicolas IturbideIndia2026-04-10Printing Dimensions PROPOSAL56Anna Fali
1044Juan WieserGermany2026-04-08Benton, John B Jr NEGOTIATION91Onyama Limba
1045Wickens NestleBrazil2026-04-23Dorl, James J Esq RENEWAL54Stephen Shaw
1046Rodrigues CampainUnited Kingdom2026-04-01Rangoni Of Florence PROPOSAL15Amy Elsner
1047Leja CaldareraSpain2026-04-12King, Christopher A Esq UNQUALIFIED23Elwin Sharvill
1048Smith GlickSpain2026-04-29Rangoni Of Florence QUALIFIED3Ivan Magalhaes
1049Rodrigues CampainJapan2026-04-27Chemel, James L Cpa NEW20Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Julie StensethCanadaBernardo Dominic RENEWAL
Johnson SergiJapanAsiya Javayant PROPOSAL
Greenwood BologniaJapanStephen Shaw QUALIFIED
Isabel BowleyIndiaAnna Fali NEGOTIATION
Maisha RulapaughAustraliaIvan Magalhaes UNQUALIFIED
Ashley DoeIndiaIoni Bowcher UNQUALIFIED
Munro FerenczGermanyIvan Magalhaes UNQUALIFIED
Claire TollnerBrazilXuxue Feng UNQUALIFIED
Antonio CaudyJapanElwin Sharvill NEGOTIATION
Wickens NestleAustraliaAmy Elsner UNQUALIFIED
Emily WhobreyItalyAsiya Javayant QUALIFIED
Ricardo GauchoItalyBernardo Dominic RENEWAL
Clifford RimUnited KingdomBernardo Dominic PROPOSAL
Julie StensethSpainAnna Fali PROPOSAL
Morrow RutaGermanyAnna Fali RENEWAL
Isabel BowleyBrazilXuxue Feng UNQUALIFIED
Salvatore StockhamSpainAsiya Javayant PROPOSAL
Jefferson SchemmerSpainIvan Magalhaes UNQUALIFIED
Aika InouyeCanadaOnyama Limba RENEWAL
Ivar PaprockiAustraliaAnna Fali NEW
Julie StensethSpainAmy Elsner NEW
Kaitlin OstroskyItalyAsiya Javayant RENEWAL
Ricardo GauchoGermanyIoni Bowcher UNQUALIFIED
Greenwood BologniaIndiaBernardo Dominic UNQUALIFIED
Jones VocelkaIndiaXuxue Feng QUALIFIED
Aditya KuskoRussiaAsiya Javayant UNQUALIFIED
Francesco ShinkoAustraliaOnyama Limba UNQUALIFIED
Salvatore StockhamIndiaElwin Sharvill UNQUALIFIED
Arvin AlbaresBrazilIvan Magalhaes RENEWAL
Jefferson SchemmerRussiaOnyama Limba PROPOSAL
Sinclair WaycottUnited KingdomXuxue Feng NEW
Adams MorascaJapanOnyama Limba UNQUALIFIED
Cody SaylorsCanadaAmy Elsner PROPOSAL
Aditya KuskoBrazilXuxue Feng QUALIFIED
James ButtCanadaAsiya Javayant UNQUALIFIED
Smith GlickRussiaAmy Elsner QUALIFIED
Maria MarrierUnited KingdomBernardo Dominic UNQUALIFIED
Arvin AlbaresUnited KingdomAsiya Javayant NEGOTIATION
Adams MorascaJapanStephen Shaw QUALIFIED
Stacey MacleadIndiaIvan Magalhaes UNQUALIFIED
Cody SaylorsJapanAsiya Javayant QUALIFIED
Johnson SergiUnited KingdomBernardo Dominic UNQUALIFIED
Kadeem FlosiFranceOnyama Limba PROPOSAL
Smith GlickBrazilOnyama Limba QUALIFIED
Aika InouyeArgentinaElwin Sharvill NEW
Maisha RulapaughItalyAmy Elsner UNQUALIFIED
Jeanfrancois VenereGermanyAmy Elsner RENEWAL
Antonio CaudyUnited KingdomIvan Magalhaes QUALIFIED
Ricardo GauchoIndiaIoni Bowcher NEGOTIATION
Stacey MacleadGermanyBernardo Dominic RENEWAL
Frozen Columns
Name
Arvin Albares
Costa Dilliard
Alejandro Perin
Costa Dilliard
Jeanfrancois Venere
Jeanfrancois Venere
Aruna Figeroa
Octavia Malet
Ivar Paprocki
Isabel Bowley
Maisha Rulapaugh
Mujtaba Nicka
Wickens Nestle
Kadeem Flosi
Aditya Kusko
Misaki Royster
Juan Wieser
Deepesh Chui
Emily Whobrey
Ivar Paprocki
Izzy Garufi
Rodrigues Campain
Tony Foller
Ricardo Gaucho
Johnson Sergi
Greenwood Bolognia
Ricardo Gaucho
Clifford Rim
Stacey Maclead
Aruna Figeroa
Kaitlin Ostrosky
Mujtaba Nicka
Ricardo Gaucho
James Butt
Jones Vocelka
Jeanfrancois Venere
Mujtaba Nicka
Tony Foller
Arvin Albares
Costa Dilliard
Johnson Sergi
Mujtaba Nicka
Jones Vocelka
Jennifer Amigon
Stacey Maclead
Ivar Paprocki
Claire Tollner
Morrow Ruta
Darci Poquette
Claire Tollner
IdCountryDate
1000Germany2026-04-02
1001France2026-04-22
1002Germany2026-04-18
1003India2026-04-20
1004Brazil2026-04-20
1005France2026-04-18
1006United Kingdom2026-04-15
1007Japan2026-04-15
1008United Kingdom2026-04-16
1009France2026-04-08
1010India2026-04-08
1011India2026-04-03
1012Italy2026-04-23
1013Argentina2026-04-15
1014India2026-04-27
1015Germany2026-03-31
1016Italy2026-04-09
1017Spain2026-04-27
1018Russia2026-04-22
1019Argentina2026-04-19
1020Canada2026-04-18
1021Argentina2026-04-06
1022Japan2026-04-20
1023Australia2026-04-08
1024Australia2026-04-02
1025Japan2026-04-26
1026Argentina2026-04-17
1027India2026-04-25
1028Spain2026-04-05
1029Italy2026-04-20
1030Argentina2026-04-08
1031Brazil2026-04-22
1032Australia2026-04-01
1033Brazil2026-04-13
1034Spain2026-04-21
1035France2026-04-24
1036Brazil2026-04-14
1037Germany2026-04-13
1038Argentina2026-04-06
1039France2026-04-20
1040Russia2026-04-19
1041India2026-04-23
1042France2026-04-20
1043Russia2026-04-14
1044Germany2026-04-05
1045Argentina2026-04-19
1046Canada2026-04-22
1047Japan2026-04-02
1048Argentina2026-04-08
1049France2026-04-27

On-Demand Data

NameIdCountryDate
Octavia Malet1000Germany2026-03-31
Maria Marrier1001Germany2026-04-16
Mayumi Kolmetz1002France2026-04-29
Sinclair Waycott1003France2026-04-02
Izzy Garufi1004Russia2026-04-23
David Darakjy1005Brazil2026-04-07
Cody Saylors1006Japan2026-04-14
Leon Oldroyd1007Italy2026-04-17
Kaitlin Ostrosky1008France2026-04-18
Octavia Malet1009United Kingdom2026-04-17
Antonio Caudy1010Italy2026-04-16
Octavia Malet1011United Kingdom2026-04-03
Nicolas Iturbide1012Brazil2026-04-21
Johnson Sergi1013Canada2026-04-05
Smith Glick1014Italy2026-04-10
Mayumi Kolmetz1015Japan2026-04-27
Murillo Malet1016Spain2026-04-04
Aika Inouye1017Italy2026-04-05
Emily Whobrey1018Australia2026-04-24
Kadeem Flosi1019France2026-04-19
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Smith GlickCanadaXuxue Feng UNQUALIFIED
Octavia MaletIndiaXuxue Feng RENEWAL
David DarakjyJapanAnna Fali RENEWAL
Isabel BowleyBrazilAmy Elsner RENEWAL
Isabel BowleyBrazilXuxue Feng QUALIFIED
Darci PoquetteArgentinaAnna Fali UNQUALIFIED
Mujtaba NickaJapanOnyama Limba NEGOTIATION
Mujtaba NickaRussiaBernardo Dominic PROPOSAL
Mujtaba NickaFranceElwin Sharvill NEW
Antonio CaudyIndiaStephen Shaw NEGOTIATION
Clifford RimGermanyOnyama Limba UNQUALIFIED
Jeanfrancois VenereBrazilXuxue Feng PROPOSAL
Ricardo GauchoJapanIoni Bowcher NEGOTIATION
Wickens NestleIndiaOnyama Limba PROPOSAL
Emily WhobreyFranceAnna Fali PROPOSAL
Misaki RoysterIndiaXuxue Feng QUALIFIED
Jones VocelkaItalyBernardo Dominic RENEWAL
Isabel BowleyJapanStephen Shaw NEGOTIATION
Mujtaba NickaItalyAmy Elsner QUALIFIED
Clifford RimSpainAsiya Javayant QUALIFIED
Kaitlin OstroskyRussiaStephen Shaw NEGOTIATION
Faith GillianArgentinaOnyama Limba PROPOSAL
Leon OldroydBrazilAsiya Javayant RENEWAL
Darci PoquetteArgentinaIvan Magalhaes QUALIFIED
Ricardo GauchoSpainIoni Bowcher PROPOSAL
Jennifer AmigonIndiaAsiya Javayant NEGOTIATION
Izzy GarufiSpainXuxue Feng QUALIFIED
Wickens NestleArgentinaAsiya Javayant NEW
Julie StensethJapanXuxue Feng PROPOSAL
Aruna FigeroaIndiaStephen Shaw UNQUALIFIED
Maria MarrierCanadaXuxue Feng NEW
Ivar PaprockiGermanyIoni Bowcher NEW
Jeanfrancois VenereItalyXuxue Feng RENEWAL
Ricardo GauchoSpainStephen Shaw NEGOTIATION
Rodrigues CampainIndiaStephen Shaw RENEWAL
Juan WieserJapanStephen Shaw QUALIFIED
Clifford RimIndiaBernardo Dominic QUALIFIED
Stacey MacleadBrazilOnyama Limba QUALIFIED
Leja CaldareraSpainAsiya Javayant UNQUALIFIED
Smith GlickFranceAnna Fali 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>