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
Jeanfrancois VenereJapanElwin Sharvill UNQUALIFIED
Jones VocelkaGermanyOnyama Limba NEW
Smith GlickBrazilAmy Elsner PROPOSAL
Misaki RoysterCanadaIoni Bowcher QUALIFIED
Leja CaldareraItalyBernardo Dominic PROPOSAL
Ricardo GauchoArgentinaStephen Shaw UNQUALIFIED
Jefferson SchemmerGermanyStephen Shaw NEW
Wickens NestleRussiaElwin Sharvill NEGOTIATION
Mujtaba NickaArgentinaAnna Fali PROPOSAL
David DarakjySpainIvan Magalhaes QUALIFIED
Adams MorascaItalyIoni Bowcher NEW
Antonio CaudyAustraliaElwin Sharvill PROPOSAL
Mayumi KolmetzSpainElwin Sharvill QUALIFIED
Murillo MaletJapanXuxue Feng RENEWAL
Sinclair WaycottItalyBernardo Dominic PROPOSAL
Jeanfrancois VenereBrazilIvan Magalhaes PROPOSAL
Wickens NestleIndiaAnna Fali QUALIFIED
Antonio CaudyFranceBernardo Dominic UNQUALIFIED
Nicolas IturbideFranceAmy Elsner QUALIFIED
Jennifer AmigonAustraliaElwin Sharvill NEGOTIATION
Maria MarrierGermanyIoni Bowcher QUALIFIED
Nicolas IturbideUnited KingdomBernardo Dominic NEW
James ButtCanadaElwin Sharvill UNQUALIFIED
Jones VocelkaGermanyAsiya Javayant QUALIFIED
Jeanfrancois VenereItalyAmy Elsner UNQUALIFIED
David DarakjyGermanyBernardo Dominic RENEWAL
Francesco ShinkoGermanyOnyama Limba NEW
Rodrigues CampainIndiaAsiya Javayant PROPOSAL
Isabel BowleySpainElwin Sharvill NEGOTIATION
Sinclair WaycottFranceOnyama Limba PROPOSAL
James ButtIndiaElwin Sharvill UNQUALIFIED
Salvatore StockhamRussiaAsiya Javayant NEW
Claire TollnerGermanyIvan Magalhaes PROPOSAL
Greenwood BologniaFranceXuxue Feng QUALIFIED
Mujtaba NickaJapanXuxue Feng RENEWAL
Faith GillianGermanyAsiya Javayant NEGOTIATION
Leja CaldareraUnited KingdomAmy Elsner PROPOSAL
Francesco ShinkoAustraliaOnyama Limba UNQUALIFIED
Izzy GarufiArgentinaOnyama Limba UNQUALIFIED
Aditya KuskoUnited KingdomStephen Shaw UNQUALIFIED
Emily WhobreyGermanyOnyama Limba NEW
David DarakjyBrazilXuxue Feng RENEWAL
Rodrigues CampainRussiaIoni Bowcher UNQUALIFIED
Ivar PaprockiCanadaOnyama Limba NEW
Sinclair WaycottIndiaStephen Shaw RENEWAL
Cody SaylorsCanadaOnyama Limba NEW
Jones VocelkaRussiaAnna Fali RENEWAL
Juan WieserIndiaIoni Bowcher RENEWAL
Aika InouyeBrazilIvan Magalhaes QUALIFIED
Smith GlickBrazilAmy Elsner NEW
Horizontal
NameCountryRepresentativeStatus
Mayumi KolmetzJapanBernardo Dominic PROPOSAL
David DarakjySpainAnna Fali RENEWAL
Costa DilliardAustraliaIvan Magalhaes PROPOSAL
Octavia MaletIndiaBernardo Dominic QUALIFIED
Clifford RimIndiaIvan Magalhaes UNQUALIFIED
Aruna FigeroaBrazilAsiya Javayant UNQUALIFIED
Tony FollerGermanyStephen Shaw PROPOSAL
Cody SaylorsCanadaIvan Magalhaes NEGOTIATION
Deepesh ChuiBrazilIoni Bowcher RENEWAL
Greenwood BologniaFranceIoni Bowcher NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Antonio CaudyBrazil2026-03-29Dorl, James J Esq PROPOSAL64Onyama Limba
1001Maisha RulapaughUnited Kingdom2026-04-18Printing Dimensions UNQUALIFIED99Xuxue Feng
1002Aditya KuskoGermany2026-04-02Truhlar And Truhlar Attys RENEWAL3Bernardo Dominic
1003Juan WieserUnited Kingdom2026-04-18Chanay, Jeffrey A Esq PROPOSAL24Bernardo Dominic
1004Claire TollnerFrance2026-04-08Truhlar And Truhlar Attys PROPOSAL48Onyama Limba
1005Silvio SlusarskiJapan2026-04-11Commercial Press PROPOSAL74Amy Elsner
1006Kadeem FlosiRussia2026-04-06Rousseaux, Michael Esq PROPOSAL44Amy Elsner
1007Munro FerenczJapan2026-04-01Rangoni Of Florence UNQUALIFIED21Onyama Limba
1008Antonio CaudyArgentina2026-03-29Chemel, James L Cpa QUALIFIED27Anna Fali
1009Sinclair WaycottGermany2026-04-12Chemel, James L Cpa RENEWAL90Elwin Sharvill
1010Ashley DoeCanada2026-04-18Chanay, Jeffrey A Esq UNQUALIFIED90Onyama Limba
1011Julie StensethUnited Kingdom2026-04-08Chapman, Ross E Esq NEGOTIATION42Bernardo Dominic
1012Ivar PaprockiBrazil2026-04-19Chapman, Ross E Esq NEGOTIATION88Amy Elsner
1013Kaitlin OstroskyUnited Kingdom2026-04-20Chapman, Ross E Esq NEGOTIATION76Ivan Magalhaes
1014Octavia MaletArgentina2026-04-19Feiner Bros QUALIFIED6Asiya Javayant
1015Aika InouyeGermany2026-03-29Feltz Printing Service NEW27Ivan Magalhaes
1016Maria MarrierArgentina2026-04-09Morlong Associates QUALIFIED99Ivan Magalhaes
1017Darci PoquetteUnited Kingdom2026-04-12Chapman, Ross E Esq NEGOTIATION39Amy Elsner
1018Leja CaldareraBrazil2026-03-27Feiner Bros RENEWAL58Asiya Javayant
1019Wickens NestleUnited Kingdom2026-04-07Chanay, Jeffrey A Esq UNQUALIFIED14Ioni Bowcher
1020Johnson SergiRussia2026-03-26King, Christopher A Esq PROPOSAL92Stephen Shaw
1021Isabel BowleySpain2026-04-14Rangoni Of Florence PROPOSAL11Stephen Shaw
1022Johnson SergiFrance2026-04-07Benton, John B Jr RENEWAL98Amy Elsner
1023Mayumi KolmetzCanada2026-03-26Dorl, James J Esq PROPOSAL52Onyama Limba
1024Nicolas IturbideItaly2026-04-03Feltz Printing Service PROPOSAL26Xuxue Feng
1025Ashley DoeRussia2026-04-10Rousseaux, Michael Esq NEGOTIATION56Amy Elsner
1026Nicolas IturbideJapan2026-04-12Benton, John B Jr NEW28Ioni Bowcher
1027Juan WieserCanada2026-03-25Feltz Printing Service PROPOSAL25Onyama Limba
1028Izzy GarufiSpain2026-03-24Chanay, Jeffrey A Esq RENEWAL13Elwin Sharvill
1029Izzy GarufiAustralia2026-04-19King, Christopher A Esq UNQUALIFIED46Elwin Sharvill
1030Aditya KuskoItaly2026-03-24Rousseaux, Michael Esq RENEWAL13Elwin Sharvill
1031Emily WhobreyUnited Kingdom2026-03-22Rangoni Of Florence RENEWAL58Asiya Javayant
1032Murillo MaletItaly2026-03-29Benton, John B Jr PROPOSAL63Asiya Javayant
1033Arvin AlbaresJapan2026-03-29Printing Dimensions RENEWAL62Onyama Limba
1034Maria MarrierFrance2026-04-07Feltz Printing Service NEW62Elwin Sharvill
1035Greenwood BologniaGermany2026-04-06Chemel, James L Cpa PROPOSAL17Stephen Shaw
1036Claire TollnerIndia2026-04-03Chanay, Jeffrey A Esq PROPOSAL83Anna Fali
1037Costa DilliardCanada2026-04-08Chapman, Ross E Esq QUALIFIED47Amy Elsner
1038Darci PoquetteFrance2026-03-25Truhlar And Truhlar Attys RENEWAL40Anna Fali
1039Munro FerenczCanada2026-03-28Dorl, James J Esq RENEWAL8Elwin Sharvill
1040Munro FerenczIndia2026-03-25Morlong Associates RENEWAL54Anna Fali
1041Francesco ShinkoJapan2026-04-17Dorl, James J Esq UNQUALIFIED25Xuxue Feng
1042Smith GlickCanada2026-04-03Chapman, Ross E Esq RENEWAL79Onyama Limba
1043Juan WieserAustralia2026-03-24Truhlar And Truhlar Attys UNQUALIFIED3Ioni Bowcher
1044Jefferson SchemmerSpain2026-04-16Commercial Press QUALIFIED29Anna Fali
1045Kadeem FlosiAustralia2026-04-09King, Christopher A Esq PROPOSAL87Ivan Magalhaes
1046Julie StensethItaly2026-04-05Truhlar And Truhlar Attys NEGOTIATION14Xuxue Feng
1047Maisha RulapaughCanada2026-04-08Commercial Press UNQUALIFIED4Amy Elsner
1048Isabel BowleyRussia2026-04-03Chemel, James L Cpa UNQUALIFIED94Ivan Magalhaes
1049Morrow RutaCanada2026-04-14Rousseaux, Michael Esq NEGOTIATION66Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Octavia MaletCanadaXuxue Feng QUALIFIED
Johnson SergiUnited KingdomIvan Magalhaes PROPOSAL
Mujtaba NickaIndiaElwin Sharvill NEW
Aruna FigeroaFranceElwin Sharvill RENEWAL
Jones VocelkaBrazilElwin Sharvill PROPOSAL
Ricardo GauchoRussiaOnyama Limba UNQUALIFIED
Chavez BriddickUnited KingdomOnyama Limba NEGOTIATION
Sinclair WaycottArgentinaIvan Magalhaes QUALIFIED
Alejandro PerinIndiaBernardo Dominic PROPOSAL
Jennifer AmigonUnited KingdomIoni Bowcher QUALIFIED
Octavia MaletBrazilOnyama Limba RENEWAL
Maria MarrierSpainOnyama Limba NEGOTIATION
Julie StensethBrazilBernardo Dominic UNQUALIFIED
Ricardo GauchoAustraliaOnyama Limba NEGOTIATION
Mujtaba NickaArgentinaAsiya Javayant NEGOTIATION
Smith GlickFranceIvan Magalhaes PROPOSAL
Arvin AlbaresFranceBernardo Dominic RENEWAL
Julie StensethGermanyElwin Sharvill UNQUALIFIED
Julie StensethArgentinaStephen Shaw NEW
Morrow RutaItalyAsiya Javayant NEW
Smith GlickFranceXuxue Feng NEGOTIATION
Darci PoquetteArgentinaIoni Bowcher QUALIFIED
Isabel BowleyJapanAnna Fali QUALIFIED
Maisha RulapaughBrazilAsiya Javayant NEGOTIATION
Tony FollerIndiaStephen Shaw UNQUALIFIED
Mujtaba NickaItalyAmy Elsner NEW
Jennifer AmigonCanadaIoni Bowcher QUALIFIED
Salvatore StockhamSpainStephen Shaw PROPOSAL
Antonio CaudyCanadaElwin Sharvill RENEWAL
Costa DilliardJapanXuxue Feng PROPOSAL
Adams MorascaUnited KingdomIvan Magalhaes QUALIFIED
Juan WieserCanadaIvan Magalhaes PROPOSAL
Aditya KuskoBrazilOnyama Limba NEGOTIATION
Jeanfrancois VenereGermanyXuxue Feng NEW
Ivar PaprockiCanadaXuxue Feng QUALIFIED
Juan WieserUnited KingdomOnyama Limba NEGOTIATION
Silvio SlusarskiArgentinaAnna Fali PROPOSAL
Nicolas IturbideArgentinaAsiya Javayant QUALIFIED
Clifford RimItalyAnna Fali PROPOSAL
Stacey MacleadIndiaAnna Fali NEW
Maria MarrierSpainBernardo Dominic NEGOTIATION
Julie StensethIndiaAnna Fali QUALIFIED
Chavez BriddickUnited KingdomBernardo Dominic QUALIFIED
Francesco ShinkoFranceAmy Elsner QUALIFIED
Johnson SergiBrazilXuxue Feng NEGOTIATION
Darci PoquetteJapanElwin Sharvill QUALIFIED
James ButtSpainStephen Shaw NEGOTIATION
Octavia MaletUnited KingdomIoni Bowcher QUALIFIED
Tony FollerRussiaOnyama Limba PROPOSAL
Tony FollerSpainAmy Elsner NEW
Frozen Columns
Name
Isabel Bowley
Octavia Malet
Antonio Caudy
Aditya Kusko
Kadeem Flosi
Costa Dilliard
Morrow Ruta
Juan Wieser
David Darakjy
Mayumi Kolmetz
Chavez Briddick
Aditya Kusko
Stacey Maclead
Julie Stenseth
Murillo Malet
Rodrigues Campain
Greenwood Bolognia
David Darakjy
Juan Wieser
Isabel Bowley
Mujtaba Nicka
Ricardo Gaucho
Ashley Doe
David Darakjy
Claire Tollner
Deepesh Chui
Salvatore Stockham
Smith Glick
Jefferson Schemmer
Morrow Ruta
Munro Ferencz
Murillo Malet
Nicolas Iturbide
Salvatore Stockham
Chavez Briddick
Jeanfrancois Venere
Munro Ferencz
Faith Gillian
Juan Wieser
Jones Vocelka
Darci Poquette
Greenwood Bolognia
Jones Vocelka
Francesco Shinko
Ivar Paprocki
Mujtaba Nicka
Jeanfrancois Venere
Silvio Slusarski
Ashley Doe
Adams Morasca
IdCountryDate
1000India2026-04-16
1001Japan2026-03-25
1002Russia2026-03-27
1003Germany2026-04-14
1004Russia2026-03-25
1005Germany2026-04-11
1006United Kingdom2026-04-09
1007Argentina2026-04-20
1008France2026-04-18
1009France2026-04-14
1010Japan2026-04-04
1011Germany2026-04-14
1012Canada2026-03-24
1013Japan2026-04-13
1014Argentina2026-03-27
1015Japan2026-04-04
1016India2026-04-06
1017Japan2026-03-22
1018Italy2026-04-20
1019Argentina2026-04-18
1020France2026-04-14
1021Spain2026-03-24
1022Brazil2026-04-20
1023Italy2026-04-16
1024Argentina2026-03-24
1025Argentina2026-03-27
1026Russia2026-04-18
1027India2026-04-15
1028Russia2026-03-23
1029France2026-03-30
1030France2026-04-03
1031Argentina2026-04-05
1032Japan2026-04-03
1033Spain2026-04-17
1034Canada2026-04-13
1035Australia2026-03-31
1036Japan2026-04-05
1037India2026-04-12
1038Germany2026-04-07
1039Australia2026-03-24
1040India2026-04-10
1041Australia2026-04-19
1042Japan2026-04-12
1043Italy2026-03-30
1044Russia2026-03-28
1045Canada2026-03-28
1046Brazil2026-03-31
1047India2026-04-07
1048Spain2026-04-08
1049Germany2026-04-08

On-Demand Data

NameIdCountryDate
Misaki Royster1000Italy2026-04-06
Jennifer Amigon1001Germany2026-04-05
Murillo Malet1002Argentina2026-04-10
Octavia Malet1003India2026-04-02
Deepesh Chui1004Canada2026-04-14
Johnson Sergi1005Argentina2026-03-31
Misaki Royster1006Japan2026-04-19
Silvio Slusarski1007United Kingdom2026-04-07
Maria Marrier1008Germany2026-04-11
Cody Saylors1009France2026-04-17
Francesco Shinko1010France2026-04-01
Maisha Rulapaugh1011Italy2026-04-10
James Butt1012Spain2026-04-17
Kaitlin Ostrosky1013Japan2026-04-01
Octavia Malet1014Italy2026-03-22
Mujtaba Nicka1015France2026-04-07
Jefferson Schemmer1016Spain2026-04-05
Juan Wieser1017France2026-04-09
Isabel Bowley1018Japan2026-04-07
Salvatore Stockham1019France2026-03-25
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Murillo MaletIndiaAsiya Javayant PROPOSAL
Kaitlin OstroskyJapanIvan Magalhaes QUALIFIED
Clifford RimJapanAmy Elsner UNQUALIFIED
Sinclair WaycottUnited KingdomIvan Magalhaes NEGOTIATION
Jennifer AmigonGermanyStephen Shaw RENEWAL
Sinclair WaycottUnited KingdomXuxue Feng QUALIFIED
Claire TollnerJapanXuxue Feng NEGOTIATION
Clifford RimArgentinaXuxue Feng UNQUALIFIED
Aika InouyeIndiaBernardo Dominic QUALIFIED
Darci PoquetteSpainAsiya Javayant UNQUALIFIED
Morrow RutaCanadaAmy Elsner NEGOTIATION
Arvin AlbaresGermanyElwin Sharvill NEW
Maisha RulapaughRussiaAsiya Javayant UNQUALIFIED
Greenwood BologniaAustraliaAmy Elsner QUALIFIED
Misaki RoysterGermanyIoni Bowcher PROPOSAL
Jennifer AmigonJapanElwin Sharvill NEW
Ivar PaprockiCanadaXuxue Feng QUALIFIED
Aruna FigeroaCanadaAmy Elsner RENEWAL
Rodrigues CampainRussiaIvan Magalhaes RENEWAL
Nicolas IturbideUnited KingdomElwin Sharvill UNQUALIFIED
Octavia MaletFranceStephen Shaw UNQUALIFIED
Francesco ShinkoGermanyAnna Fali UNQUALIFIED
Mujtaba NickaBrazilIoni Bowcher QUALIFIED
Kadeem FlosiUnited KingdomOnyama Limba UNQUALIFIED
Francesco ShinkoCanadaOnyama Limba NEW
Munro FerenczArgentinaIoni Bowcher QUALIFIED
Aika InouyeUnited KingdomIvan Magalhaes UNQUALIFIED
Jennifer AmigonFranceBernardo Dominic PROPOSAL
Rodrigues CampainCanadaAsiya Javayant NEGOTIATION
Costa DilliardJapanIvan Magalhaes UNQUALIFIED
Sinclair WaycottFranceIoni Bowcher UNQUALIFIED
Sinclair WaycottIndiaIvan Magalhaes PROPOSAL
Octavia MaletUnited KingdomIoni Bowcher RENEWAL
Smith GlickSpainStephen Shaw UNQUALIFIED
Antonio CaudyIndiaOnyama Limba NEGOTIATION
Ashley DoeFranceElwin Sharvill QUALIFIED
Julie StensethJapanAnna Fali PROPOSAL
Salvatore StockhamAustraliaAnna Fali QUALIFIED
Smith GlickIndiaBernardo Dominic RENEWAL
Clifford RimIndiaElwin Sharvill NEW

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