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 RulapaughAustraliaElwin Sharvill PROPOSAL
Jones VocelkaCanadaBernardo Dominic UNQUALIFIED
Kaitlin OstroskyBrazilAmy Elsner NEGOTIATION
Misaki RoysterItalyElwin Sharvill PROPOSAL
Arvin AlbaresJapanAnna Fali RENEWAL
Maisha RulapaughBrazilAnna Fali PROPOSAL
Cody SaylorsFranceBernardo Dominic PROPOSAL
Maria MarrierSpainOnyama Limba PROPOSAL
Rodrigues CampainAustraliaBernardo Dominic UNQUALIFIED
James ButtGermanyAsiya Javayant PROPOSAL
Wickens NestleFranceIvan Magalhaes UNQUALIFIED
Emily WhobreyFranceIoni Bowcher NEGOTIATION
Juan WieserGermanyBernardo Dominic UNQUALIFIED
Smith GlickCanadaAsiya Javayant RENEWAL
Kadeem FlosiBrazilElwin Sharvill UNQUALIFIED
Jeanfrancois VenereRussiaIoni Bowcher RENEWAL
Silvio SlusarskiIndiaOnyama Limba RENEWAL
Julie StensethSpainIvan Magalhaes NEW
Clifford RimRussiaIoni Bowcher QUALIFIED
Octavia MaletGermanyBernardo Dominic RENEWAL
Silvio SlusarskiFranceAsiya Javayant RENEWAL
Izzy GarufiRussiaElwin Sharvill NEW
Jeanfrancois VenereFranceAsiya Javayant NEW
Darci PoquetteRussiaElwin Sharvill RENEWAL
Deepesh ChuiIndiaIvan Magalhaes RENEWAL
Arvin AlbaresAustraliaAnna Fali NEW
Chavez BriddickCanadaXuxue Feng PROPOSAL
Jefferson SchemmerCanadaOnyama Limba QUALIFIED
Deepesh ChuiRussiaAsiya Javayant NEW
David DarakjyCanadaAnna Fali RENEWAL
Aika InouyeGermanyIvan Magalhaes QUALIFIED
Aruna FigeroaRussiaStephen Shaw NEGOTIATION
Sinclair WaycottCanadaOnyama Limba NEGOTIATION
Aika InouyeFranceBernardo Dominic RENEWAL
Leja CaldareraArgentinaIvan Magalhaes NEW
Adams MorascaBrazilStephen Shaw NEGOTIATION
Rodrigues CampainIndiaAmy Elsner UNQUALIFIED
Tony FollerIndiaIoni Bowcher UNQUALIFIED
Munro FerenczGermanyXuxue Feng NEW
Maria MarrierIndiaOnyama Limba UNQUALIFIED
Costa DilliardJapanXuxue Feng UNQUALIFIED
Costa DilliardCanadaIoni Bowcher QUALIFIED
Juan WieserUnited KingdomOnyama Limba PROPOSAL
Aruna FigeroaUnited KingdomXuxue Feng NEGOTIATION
Morrow RutaCanadaBernardo Dominic UNQUALIFIED
Greenwood BologniaCanadaAmy Elsner QUALIFIED
Ivar PaprockiUnited KingdomBernardo Dominic NEW
Ashley DoeAustraliaStephen Shaw QUALIFIED
Murillo MaletAustraliaStephen Shaw UNQUALIFIED
Munro FerenczGermanyBernardo Dominic PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Nicolas IturbideItalyBernardo Dominic PROPOSAL
Jeanfrancois VenereItalyOnyama Limba RENEWAL
Antonio CaudyBrazilElwin Sharvill NEW
Isabel BowleyRussiaIoni Bowcher PROPOSAL
Maria MarrierCanadaAnna Fali NEGOTIATION
Ashley DoeRussiaOnyama Limba QUALIFIED
Emily WhobreyCanadaAsiya Javayant QUALIFIED
Johnson SergiUnited KingdomAnna Fali QUALIFIED
Leon OldroydFranceIvan Magalhaes UNQUALIFIED
Stacey MacleadJapanOnyama Limba UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000David DarakjyGermany2026-05-26Buckley Miller Wright PROPOSAL60Stephen Shaw
1001Wickens NestleIndia2026-05-27Chanay, Jeffrey A Esq NEGOTIATION9Anna Fali
1002Tony FollerSpain2026-06-14Chanay, Jeffrey A Esq NEGOTIATION36Stephen Shaw
1003Munro FerenczSpain2026-05-30King, Christopher A Esq NEW29Xuxue Feng
1004Octavia MaletUnited Kingdom2026-06-14Feltz Printing Service PROPOSAL96Ioni Bowcher
1005Izzy GarufiFrance2026-06-08Feltz Printing Service PROPOSAL57Stephen Shaw
1006Johnson SergiSpain2026-06-06Rousseaux, Michael Esq PROPOSAL79Amy Elsner
1007Leon OldroydGermany2026-06-18Rousseaux, Michael Esq RENEWAL17Stephen Shaw
1008James ButtUnited Kingdom2026-06-09Truhlar And Truhlar Attys PROPOSAL81Onyama Limba
1009Greenwood BologniaAustralia2026-05-22Dorl, James J Esq RENEWAL85Anna Fali
1010Aruna FigeroaRussia2026-06-09Dorl, James J Esq NEGOTIATION97Ioni Bowcher
1011Jeanfrancois VenereGermany2026-06-13Feiner Bros NEGOTIATION25Amy Elsner
1012Mujtaba NickaItaly2026-05-30Feiner Bros NEW46Bernardo Dominic
1013Antonio CaudySpain2026-05-21Feiner Bros PROPOSAL0Asiya Javayant
1014Jennifer AmigonIndia2026-06-11King, Christopher A Esq NEGOTIATION2Bernardo Dominic
1015Leja CaldareraArgentina2026-06-09Feiner Bros PROPOSAL23Xuxue Feng
1016Kadeem FlosiCanada2026-05-21Truhlar And Truhlar Attys RENEWAL38Ioni Bowcher
1017Leja CaldareraSpain2026-06-07Buckley Miller Wright RENEWAL3Stephen Shaw
1018James ButtCanada2026-06-13Chemel, James L Cpa NEW55Elwin Sharvill
1019Deepesh ChuiAustralia2026-06-03Morlong Associates RENEWAL62Bernardo Dominic
1020Francesco ShinkoUnited Kingdom2026-06-13Morlong Associates PROPOSAL64Amy Elsner
1021Clifford RimGermany2026-05-30Commercial Press RENEWAL98Bernardo Dominic
1022Mujtaba NickaUnited Kingdom2026-05-22Benton, John B Jr UNQUALIFIED75Ioni Bowcher
1023Darci PoquetteUnited Kingdom2026-05-28Benton, John B Jr NEGOTIATION31Stephen Shaw
1024Darci PoquetteFrance2026-06-16Buckley Miller Wright PROPOSAL73Stephen Shaw
1025Wickens NestleAustralia2026-05-27Chapman, Ross E Esq NEGOTIATION78Anna Fali
1026Leon OldroydItaly2026-05-27Chemel, James L Cpa QUALIFIED13Stephen Shaw
1027Nicolas IturbideJapan2026-05-30Chemel, James L Cpa NEGOTIATION8Ivan Magalhaes
1028Antonio CaudyItaly2026-06-03Rangoni Of Florence QUALIFIED81Ioni Bowcher
1029Ivar PaprockiRussia2026-05-26Buckley Miller Wright PROPOSAL9Ivan Magalhaes
1030Alejandro PerinBrazil2026-05-24Truhlar And Truhlar Attys NEW82Bernardo Dominic
1031Cody SaylorsJapan2026-06-06Rousseaux, Michael Esq QUALIFIED99Xuxue Feng
1032Wickens NestleAustralia2026-05-26Rousseaux, Michael Esq RENEWAL11Amy Elsner
1033Tony FollerUnited Kingdom2026-06-02Buckley Miller Wright RENEWAL54Xuxue Feng
1034Ivar PaprockiArgentina2026-06-06Rangoni Of Florence UNQUALIFIED88Anna Fali
1035Tony FollerSpain2026-06-02Morlong Associates NEGOTIATION1Amy Elsner
1036Johnson SergiCanada2026-05-25Benton, John B Jr NEGOTIATION92Amy Elsner
1037Murillo MaletJapan2026-06-13Chemel, James L Cpa QUALIFIED98Asiya Javayant
1038Deepesh ChuiBrazil2026-06-02Feltz Printing Service NEGOTIATION76Ivan Magalhaes
1039Maria MarrierJapan2026-05-28Buckley Miller Wright NEW0Asiya Javayant
1040Deepesh ChuiCanada2026-06-19Truhlar And Truhlar Attys NEW23Ivan Magalhaes
1041Aruna FigeroaFrance2026-06-07Truhlar And Truhlar Attys NEW97Xuxue Feng
1042Isabel BowleyArgentina2026-06-16Chanay, Jeffrey A Esq UNQUALIFIED93Ivan Magalhaes
1043Smith GlickFrance2026-05-23Printing Dimensions UNQUALIFIED82Anna Fali
1044Alejandro PerinIndia2026-05-28Chanay, Jeffrey A Esq RENEWAL14Anna Fali
1045Francesco ShinkoAustralia2026-06-03Chapman, Ross E Esq NEGOTIATION55Onyama Limba
1046Maria MarrierFrance2026-05-29Truhlar And Truhlar Attys RENEWAL16Ioni Bowcher
1047Octavia MaletIndia2026-06-02Buckley Miller Wright UNQUALIFIED28Elwin Sharvill
1048Nicolas IturbideGermany2026-06-09Commercial Press RENEWAL23Ivan Magalhaes
1049Nicolas IturbideArgentina2026-06-04Commercial Press UNQUALIFIED45Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Darci PoquetteFranceIoni Bowcher NEGOTIATION
Aruna FigeroaBrazilXuxue Feng NEW
Mayumi KolmetzGermanyXuxue Feng QUALIFIED
Tony FollerFranceAmy Elsner NEW
Murillo MaletRussiaIvan Magalhaes QUALIFIED
Jefferson SchemmerItalyAmy Elsner RENEWAL
James ButtIndiaElwin Sharvill RENEWAL
Salvatore StockhamItalyAmy Elsner RENEWAL
Cody SaylorsSpainElwin Sharvill PROPOSAL
James ButtJapanStephen Shaw NEGOTIATION
Misaki RoysterGermanyXuxue Feng NEGOTIATION
David DarakjyGermanyIoni Bowcher PROPOSAL
Darci PoquetteItalyStephen Shaw NEGOTIATION
Stacey MacleadUnited KingdomStephen Shaw NEGOTIATION
Isabel BowleyIndiaIvan Magalhaes QUALIFIED
Jones VocelkaAustraliaAsiya Javayant NEW
Nicolas IturbideGermanyAnna Fali NEGOTIATION
Aditya KuskoUnited KingdomAmy Elsner UNQUALIFIED
David DarakjyCanadaStephen Shaw QUALIFIED
Arvin AlbaresRussiaOnyama Limba UNQUALIFIED
Isabel BowleyUnited KingdomElwin Sharvill UNQUALIFIED
Rodrigues CampainItalyAsiya Javayant UNQUALIFIED
Costa DilliardBrazilElwin Sharvill NEGOTIATION
Ricardo GauchoUnited KingdomIoni Bowcher NEW
Chavez BriddickCanadaIvan Magalhaes NEGOTIATION
Izzy GarufiRussiaElwin Sharvill UNQUALIFIED
Arvin AlbaresSpainElwin Sharvill NEGOTIATION
Leja CaldareraRussiaIoni Bowcher QUALIFIED
Jefferson SchemmerGermanyXuxue Feng QUALIFIED
David DarakjyGermanyStephen Shaw PROPOSAL
Arvin AlbaresAustraliaStephen Shaw PROPOSAL
Francesco ShinkoGermanyAsiya Javayant NEGOTIATION
Smith GlickSpainOnyama Limba PROPOSAL
Maisha RulapaughGermanyIvan Magalhaes UNQUALIFIED
Deepesh ChuiItalyBernardo Dominic UNQUALIFIED
Chavez BriddickSpainIoni Bowcher NEGOTIATION
Deepesh ChuiJapanAnna Fali PROPOSAL
Isabel BowleyRussiaIoni Bowcher QUALIFIED
James ButtArgentinaAmy Elsner NEGOTIATION
Leja CaldareraJapanStephen Shaw RENEWAL
Jefferson SchemmerSpainAnna Fali PROPOSAL
Smith GlickFranceElwin Sharvill PROPOSAL
Smith GlickFranceIoni Bowcher UNQUALIFIED
Francesco ShinkoArgentinaIoni Bowcher NEGOTIATION
Jefferson SchemmerIndiaElwin Sharvill QUALIFIED
Claire TollnerCanadaAnna Fali RENEWAL
Ivar PaprockiArgentinaIoni Bowcher PROPOSAL
Smith GlickBrazilElwin Sharvill NEW
Maisha RulapaughUnited KingdomAnna Fali NEW
Adams MorascaGermanyStephen Shaw PROPOSAL
Frozen Columns
Name
Jefferson Schemmer
Sinclair Waycott
Darci Poquette
Mujtaba Nicka
Jefferson Schemmer
Octavia Malet
Sinclair Waycott
Chavez Briddick
Maisha Rulapaugh
Antonio Caudy
Jennifer Amigon
Chavez Briddick
Octavia Malet
Munro Ferencz
Aika Inouye
Aruna Figeroa
Tony Foller
Izzy Garufi
Greenwood Bolognia
Munro Ferencz
Jones Vocelka
Julie Stenseth
James Butt
Deepesh Chui
Mujtaba Nicka
Jennifer Amigon
Aruna Figeroa
Jeanfrancois Venere
Greenwood Bolognia
Jennifer Amigon
Greenwood Bolognia
Ashley Doe
Leja Caldarera
Rodrigues Campain
Izzy Garufi
Ashley Doe
Jefferson Schemmer
Jones Vocelka
David Darakjy
Mujtaba Nicka
Octavia Malet
Nicolas Iturbide
Leon Oldroyd
Julie Stenseth
Kadeem Flosi
Greenwood Bolognia
Munro Ferencz
Jefferson Schemmer
Nicolas Iturbide
Juan Wieser
IdCountryDate
1000Canada2026-05-23
1001India2026-06-03
1002India2026-06-06
1003Japan2026-06-10
1004Argentina2026-05-28
1005Brazil2026-05-30
1006Spain2026-05-23
1007Japan2026-06-02
1008France2026-06-19
1009Australia2026-05-26
1010Japan2026-06-04
1011Japan2026-06-04
1012Australia2026-06-10
1013Germany2026-06-06
1014United Kingdom2026-06-12
1015United Kingdom2026-06-11
1016Russia2026-05-28
1017Australia2026-05-27
1018Argentina2026-06-08
1019Argentina2026-06-18
1020France2026-05-23
1021Brazil2026-05-21
1022United Kingdom2026-06-17
1023Argentina2026-06-17
1024Canada2026-06-04
1025Brazil2026-06-02
1026Germany2026-05-25
1027Germany2026-06-07
1028United Kingdom2026-05-26
1029France2026-06-13
1030United Kingdom2026-06-06
1031France2026-05-27
1032Argentina2026-06-14
1033Spain2026-05-22
1034United Kingdom2026-05-21
1035Italy2026-06-04
1036Spain2026-06-16
1037Germany2026-06-02
1038Canada2026-05-25
1039India2026-06-11
1040Canada2026-06-08
1041Canada2026-06-02
1042Australia2026-06-08
1043Argentina2026-06-05
1044Canada2026-05-23
1045Argentina2026-06-09
1046Spain2026-06-12
1047Argentina2026-06-09
1048India2026-06-06
1049Canada2026-05-22

On-Demand Data

NameIdCountryDate
Aditya Kusko1000Canada2026-05-27
Salvatore Stockham1001Canada2026-06-12
Isabel Bowley1002France2026-05-28
Mayumi Kolmetz1003Spain2026-05-21
Leja Caldarera1004Canada2026-05-27
Rodrigues Campain1005Russia2026-05-30
Aruna Figeroa1006Spain2026-06-18
Nicolas Iturbide1007Russia2026-05-30
Murillo Malet1008Canada2026-06-03
David Darakjy1009Canada2026-05-22
Ashley Doe1010India2026-06-01
Mayumi Kolmetz1011Canada2026-05-27
Greenwood Bolognia1012Spain2026-06-15
Maisha Rulapaugh1013Australia2026-05-21
Smith Glick1014Spain2026-06-19
Costa Dilliard1015Australia2026-06-16
Ricardo Gaucho1016Italy2026-05-27
Cody Saylors1017Italy2026-05-31
Aruna Figeroa1018Australia2026-06-14
Salvatore Stockham1019Spain2026-06-15
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Tony FollerJapanIoni Bowcher NEGOTIATION
Aruna FigeroaSpainAmy Elsner NEW
Maisha RulapaughBrazilAnna Fali UNQUALIFIED
Stacey MacleadGermanyBernardo Dominic UNQUALIFIED
Wickens NestleItalyAnna Fali QUALIFIED
Mayumi KolmetzJapanAnna Fali PROPOSAL
Morrow RutaFranceStephen Shaw UNQUALIFIED
Tony FollerCanadaAmy Elsner UNQUALIFIED
Wickens NestleUnited KingdomStephen Shaw UNQUALIFIED
Isabel BowleyItalyIvan Magalhaes PROPOSAL
Stacey MacleadItalyStephen Shaw NEW
Adams MorascaArgentinaStephen Shaw RENEWAL
Adams MorascaArgentinaBernardo Dominic NEW
Kaitlin OstroskyFranceIoni Bowcher NEW
Munro FerenczCanadaXuxue Feng NEW
Wickens NestleUnited KingdomBernardo Dominic UNQUALIFIED
Ricardo GauchoItalyXuxue Feng NEW
Jeanfrancois VenereJapanIvan Magalhaes UNQUALIFIED
Mayumi KolmetzArgentinaAnna Fali RENEWAL
Julie StensethAustraliaIvan Magalhaes NEW
Smith GlickGermanyAnna Fali NEW
Francesco ShinkoUnited KingdomXuxue Feng QUALIFIED
James ButtSpainIoni Bowcher UNQUALIFIED
Greenwood BologniaJapanOnyama Limba NEGOTIATION
Mujtaba NickaAustraliaElwin Sharvill UNQUALIFIED
Isabel BowleyBrazilStephen Shaw UNQUALIFIED
Francesco ShinkoAustraliaElwin Sharvill RENEWAL
Adams MorascaItalyStephen Shaw NEW
Rodrigues CampainJapanIvan Magalhaes NEW
Claire TollnerJapanStephen Shaw UNQUALIFIED
Chavez BriddickArgentinaIoni Bowcher NEW
Jennifer AmigonJapanIoni Bowcher NEGOTIATION
Isabel BowleyFranceAnna Fali NEGOTIATION
Leja CaldareraArgentinaXuxue Feng NEGOTIATION
Jeanfrancois VenereGermanyBernardo Dominic NEW
Aika InouyeCanadaStephen Shaw RENEWAL
Aika InouyeUnited KingdomIoni Bowcher NEGOTIATION
Octavia MaletJapanAnna Fali UNQUALIFIED
Claire TollnerUnited KingdomOnyama Limba QUALIFIED
Octavia MaletIndiaBernardo Dominic 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>