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
Stacey MacleadRussiaIvan Magalhaes PROPOSAL
Cody SaylorsRussiaStephen Shaw NEW
Munro FerenczUnited KingdomIvan Magalhaes PROPOSAL
Smith GlickGermanyIvan Magalhaes RENEWAL
Maisha RulapaughCanadaOnyama Limba QUALIFIED
Kaitlin OstroskyCanadaIoni Bowcher UNQUALIFIED
Clifford RimRussiaStephen Shaw NEW
Aika InouyeItalyElwin Sharvill NEGOTIATION
Leja CaldareraFranceXuxue Feng NEGOTIATION
Jennifer AmigonArgentinaIvan Magalhaes RENEWAL
Kaitlin OstroskyUnited KingdomBernardo Dominic RENEWAL
Aruna FigeroaIndiaIoni Bowcher UNQUALIFIED
Ivar PaprockiGermanyIoni Bowcher PROPOSAL
Aditya KuskoAustraliaElwin Sharvill UNQUALIFIED
Francesco ShinkoUnited KingdomXuxue Feng UNQUALIFIED
Jennifer AmigonCanadaIoni Bowcher RENEWAL
Maria MarrierBrazilStephen Shaw UNQUALIFIED
Kadeem FlosiGermanyIvan Magalhaes RENEWAL
Cody SaylorsFranceAnna Fali NEGOTIATION
Ricardo GauchoBrazilAnna Fali NEW
Tony FollerGermanyElwin Sharvill UNQUALIFIED
Darci PoquetteCanadaIoni Bowcher NEW
Rodrigues CampainArgentinaIoni Bowcher RENEWAL
James ButtIndiaStephen Shaw QUALIFIED
Ricardo GauchoIndiaStephen Shaw NEW
Ashley DoeJapanStephen Shaw RENEWAL
Faith GillianArgentinaAmy Elsner UNQUALIFIED
Maria MarrierUnited KingdomAnna Fali QUALIFIED
Julie StensethRussiaAsiya Javayant QUALIFIED
Octavia MaletArgentinaIoni Bowcher PROPOSAL
Leja CaldareraJapanAnna Fali NEGOTIATION
Deepesh ChuiItalyAnna Fali NEW
Maria MarrierFranceBernardo Dominic UNQUALIFIED
Isabel BowleyItalyStephen Shaw NEW
Faith GillianGermanyXuxue Feng NEGOTIATION
Ricardo GauchoFranceAsiya Javayant QUALIFIED
Arvin AlbaresUnited KingdomAsiya Javayant PROPOSAL
Aruna FigeroaBrazilElwin Sharvill UNQUALIFIED
Leon OldroydUnited KingdomXuxue Feng RENEWAL
Morrow RutaRussiaAmy Elsner UNQUALIFIED
Rodrigues CampainRussiaAnna Fali UNQUALIFIED
Juan WieserItalyAsiya Javayant NEGOTIATION
Cody SaylorsArgentinaIoni Bowcher NEW
Adams MorascaIndiaElwin Sharvill RENEWAL
Adams MorascaFranceBernardo Dominic UNQUALIFIED
Munro FerenczItalyAsiya Javayant NEGOTIATION
Darci PoquetteFranceAmy Elsner RENEWAL
Jones VocelkaCanadaXuxue Feng PROPOSAL
Cody SaylorsUnited KingdomAnna Fali NEW
Munro FerenczSpainOnyama Limba NEW
Horizontal
NameCountryRepresentativeStatus
Chavez BriddickIndiaXuxue Feng PROPOSAL
Silvio SlusarskiRussiaIvan Magalhaes QUALIFIED
Deepesh ChuiCanadaAnna Fali UNQUALIFIED
Alejandro PerinBrazilStephen Shaw QUALIFIED
Salvatore StockhamItalyXuxue Feng NEGOTIATION
David DarakjyArgentinaAsiya Javayant PROPOSAL
Ivar PaprockiBrazilAsiya Javayant NEW
Mayumi KolmetzAustraliaOnyama Limba NEGOTIATION
Johnson SergiGermanyStephen Shaw PROPOSAL
Leon OldroydItalyIoni Bowcher NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Chavez BriddickItaly2026-05-17Rousseaux, Michael Esq NEGOTIATION7Asiya Javayant
1001Clifford RimFrance2026-05-15Rangoni Of Florence QUALIFIED80Onyama Limba
1002Deepesh ChuiSpain2026-05-31Commercial Press RENEWAL14Anna Fali
1003Johnson SergiUnited Kingdom2026-05-17Printing Dimensions RENEWAL72Asiya Javayant
1004Chavez BriddickAustralia2026-05-15Chemel, James L Cpa NEGOTIATION32Xuxue Feng
1005Munro FerenczRussia2026-05-24Chanay, Jeffrey A Esq NEGOTIATION4Elwin Sharvill
1006Salvatore StockhamItaly2026-06-02King, Christopher A Esq NEW91Amy Elsner
1007Isabel BowleyUnited Kingdom2026-05-17Buckley Miller Wright PROPOSAL36Bernardo Dominic
1008Ricardo GauchoCanada2026-05-26Dorl, James J Esq NEW12Ivan Magalhaes
1009Leon OldroydIndia2026-05-13Buckley Miller Wright PROPOSAL65Bernardo Dominic
1010Kadeem FlosiArgentina2026-05-30Commercial Press QUALIFIED38Ivan Magalhaes
1011Aditya KuskoBrazil2026-06-03Rangoni Of Florence PROPOSAL2Onyama Limba
1012Isabel BowleyItaly2026-05-17Chanay, Jeffrey A Esq NEGOTIATION60Onyama Limba
1013Mujtaba NickaArgentina2026-05-10Printing Dimensions RENEWAL9Ivan Magalhaes
1014Munro FerenczItaly2026-05-20Chemel, James L Cpa PROPOSAL52Stephen Shaw
1015Claire TollnerGermany2026-05-25Feiner Bros PROPOSAL83Bernardo Dominic
1016Ricardo GauchoArgentina2026-05-11Printing Dimensions NEGOTIATION9Ivan Magalhaes
1017Alejandro PerinFrance2026-05-20Chemel, James L Cpa PROPOSAL43Elwin Sharvill
1018Jennifer AmigonBrazil2026-05-30Feltz Printing Service NEGOTIATION60Ioni Bowcher
1019Sinclair WaycottSpain2026-05-26Rangoni Of Florence PROPOSAL51Asiya Javayant
1020Jones VocelkaCanada2026-05-23Chemel, James L Cpa QUALIFIED76Xuxue Feng
1021Morrow RutaRussia2026-05-12Chemel, James L Cpa NEGOTIATION66Asiya Javayant
1022Mayumi KolmetzJapan2026-05-08Benton, John B Jr UNQUALIFIED31Amy Elsner
1023Ricardo GauchoItaly2026-05-29Rousseaux, Michael Esq RENEWAL42Onyama Limba
1024Claire TollnerRussia2026-05-16Buckley Miller Wright UNQUALIFIED23Amy Elsner
1025Faith GillianRussia2026-05-23Chanay, Jeffrey A Esq UNQUALIFIED73Ioni Bowcher
1026Ashley DoeUnited Kingdom2026-05-19Chemel, James L Cpa NEGOTIATION66Elwin Sharvill
1027Jefferson SchemmerArgentina2026-05-25Rangoni Of Florence RENEWAL23Ivan Magalhaes
1028Leon OldroydBrazil2026-05-26Chemel, James L Cpa QUALIFIED21Onyama Limba
1029Deepesh ChuiAustralia2026-05-13Chanay, Jeffrey A Esq QUALIFIED62Ivan Magalhaes
1030Leon OldroydSpain2026-05-20Chanay, Jeffrey A Esq NEW40Onyama Limba
1031Mayumi KolmetzCanada2026-05-25Feltz Printing Service PROPOSAL63Onyama Limba
1032Emily WhobreyItaly2026-05-25Chanay, Jeffrey A Esq PROPOSAL92Ioni Bowcher
1033Faith GillianCanada2026-05-28Commercial Press QUALIFIED48Ivan Magalhaes
1034Rodrigues CampainJapan2026-06-01Feltz Printing Service QUALIFIED59Onyama Limba
1035Nicolas IturbideArgentina2026-05-24Chanay, Jeffrey A Esq PROPOSAL5Bernardo Dominic
1036Kadeem FlosiUnited Kingdom2026-05-17Benton, John B Jr NEW2Ioni Bowcher
1037Claire TollnerArgentina2026-06-02Printing Dimensions RENEWAL25Bernardo Dominic
1038Morrow RutaUnited Kingdom2026-05-13Feltz Printing Service NEGOTIATION38Stephen Shaw
1039Clifford RimCanada2026-05-08King, Christopher A Esq PROPOSAL44Amy Elsner
1040Stacey MacleadIndia2026-05-19Rangoni Of Florence NEW97Bernardo Dominic
1041Arvin AlbaresFrance2026-05-22Dorl, James J Esq QUALIFIED13Anna Fali
1042Francesco ShinkoIndia2026-05-18Chapman, Ross E Esq NEGOTIATION91Stephen Shaw
1043Morrow RutaSpain2026-05-09King, Christopher A Esq RENEWAL39Xuxue Feng
1044Clifford RimUnited Kingdom2026-05-09Rousseaux, Michael Esq RENEWAL2Ioni Bowcher
1045Emily WhobreyAustralia2026-06-01Printing Dimensions NEGOTIATION87Elwin Sharvill
1046Octavia MaletAustralia2026-05-09Morlong Associates UNQUALIFIED15Elwin Sharvill
1047Antonio CaudyRussia2026-06-01King, Christopher A Esq UNQUALIFIED56Ivan Magalhaes
1048Kaitlin OstroskyUnited Kingdom2026-05-14Chemel, James L Cpa RENEWAL19Ivan Magalhaes
1049Maisha RulapaughItaly2026-06-05Printing Dimensions RENEWAL44Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
David DarakjyBrazilIoni Bowcher QUALIFIED
Mayumi KolmetzGermanyIoni Bowcher NEW
Kadeem FlosiBrazilIoni Bowcher QUALIFIED
Antonio CaudyJapanOnyama Limba RENEWAL
Leja CaldareraGermanyElwin Sharvill QUALIFIED
Sinclair WaycottAustraliaAmy Elsner RENEWAL
Murillo MaletBrazilAnna Fali NEW
Jones VocelkaJapanOnyama Limba QUALIFIED
Sinclair WaycottArgentinaAmy Elsner PROPOSAL
David DarakjyRussiaOnyama Limba RENEWAL
Nicolas IturbideArgentinaOnyama Limba PROPOSAL
Adams MorascaGermanyStephen Shaw RENEWAL
Isabel BowleyAustraliaElwin Sharvill RENEWAL
Juan WieserArgentinaIoni Bowcher RENEWAL
James ButtAustraliaElwin Sharvill QUALIFIED
Costa DilliardItalyOnyama Limba PROPOSAL
Deepesh ChuiBrazilStephen Shaw UNQUALIFIED
Arvin AlbaresArgentinaAmy Elsner NEW
Murillo MaletRussiaAsiya Javayant NEW
Antonio CaudyArgentinaStephen Shaw PROPOSAL
Smith GlickUnited KingdomOnyama Limba QUALIFIED
Silvio SlusarskiSpainAmy Elsner RENEWAL
Alejandro PerinCanadaIoni Bowcher UNQUALIFIED
Kadeem FlosiJapanIoni Bowcher UNQUALIFIED
Faith GillianCanadaXuxue Feng NEW
Julie StensethItalyElwin Sharvill NEGOTIATION
Mujtaba NickaRussiaAsiya Javayant UNQUALIFIED
Maria MarrierAustraliaAmy Elsner UNQUALIFIED
Maisha RulapaughRussiaAsiya Javayant NEGOTIATION
Munro FerenczGermanyOnyama Limba NEW
Leja CaldareraRussiaIoni Bowcher UNQUALIFIED
Antonio CaudyIndiaElwin Sharvill RENEWAL
Rodrigues CampainRussiaAnna Fali UNQUALIFIED
Maisha RulapaughJapanAnna Fali UNQUALIFIED
Mujtaba NickaAustraliaXuxue Feng RENEWAL
Misaki RoysterJapanIvan Magalhaes UNQUALIFIED
Stacey MacleadBrazilElwin Sharvill QUALIFIED
Jefferson SchemmerIndiaOnyama Limba UNQUALIFIED
Claire TollnerFranceOnyama Limba PROPOSAL
Leja CaldareraCanadaOnyama Limba RENEWAL
Jones VocelkaAustraliaAnna Fali PROPOSAL
Claire TollnerSpainElwin Sharvill NEGOTIATION
Maria MarrierAustraliaXuxue Feng RENEWAL
Jennifer AmigonAustraliaIoni Bowcher NEGOTIATION
Smith GlickRussiaStephen Shaw PROPOSAL
Julie StensethRussiaOnyama Limba UNQUALIFIED
Antonio CaudyFranceStephen Shaw PROPOSAL
Sinclair WaycottIndiaIoni Bowcher NEGOTIATION
Cody SaylorsBrazilBernardo Dominic NEGOTIATION
Mayumi KolmetzRussiaAmy Elsner NEW
Frozen Columns
Name
Maisha Rulapaugh
Isabel Bowley
Kaitlin Ostrosky
Cody Saylors
Kadeem Flosi
Munro Ferencz
Murillo Malet
Faith Gillian
Aditya Kusko
Wickens Nestle
Greenwood Bolognia
Antonio Caudy
Mujtaba Nicka
David Darakjy
Jennifer Amigon
Juan Wieser
Emily Whobrey
Johnson Sergi
Clifford Rim
Jefferson Schemmer
Arvin Albares
Mujtaba Nicka
Deepesh Chui
Murillo Malet
James Butt
Isabel Bowley
Munro Ferencz
Octavia Malet
Jones Vocelka
Kadeem Flosi
Nicolas Iturbide
Emily Whobrey
Murillo Malet
Johnson Sergi
Deepesh Chui
Octavia Malet
Misaki Royster
Claire Tollner
Johnson Sergi
Kadeem Flosi
Leja Caldarera
Kadeem Flosi
Kaitlin Ostrosky
Mayumi Kolmetz
James Butt
Sinclair Waycott
Emily Whobrey
Leja Caldarera
Morrow Ruta
James Butt
IdCountryDate
1000Germany2026-05-24
1001Argentina2026-05-09
1002Spain2026-05-16
1003Spain2026-05-24
1004Brazil2026-05-30
1005Russia2026-05-31
1006Russia2026-05-17
1007Argentina2026-06-06
1008Russia2026-05-14
1009France2026-06-03
1010Canada2026-05-08
1011United Kingdom2026-05-29
1012Australia2026-05-14
1013Italy2026-05-22
1014Russia2026-05-09
1015Brazil2026-05-30
1016United Kingdom2026-06-06
1017Australia2026-05-10
1018France2026-05-12
1019Germany2026-05-19
1020United Kingdom2026-05-26
1021Canada2026-05-11
1022Japan2026-05-27
1023Japan2026-06-03
1024United Kingdom2026-05-13
1025United Kingdom2026-05-29
1026Italy2026-05-20
1027Brazil2026-05-18
1028Australia2026-05-17
1029Germany2026-05-26
1030Russia2026-05-25
1031France2026-05-09
1032Canada2026-05-08
1033Canada2026-05-11
1034United Kingdom2026-05-12
1035Japan2026-05-12
1036Canada2026-05-30
1037Brazil2026-05-27
1038Argentina2026-05-20
1039Canada2026-05-16
1040Russia2026-05-15
1041Japan2026-05-27
1042Germany2026-05-22
1043Argentina2026-05-30
1044Australia2026-05-28
1045Italy2026-05-16
1046United Kingdom2026-05-27
1047Argentina2026-05-24
1048Germany2026-06-03
1049United Kingdom2026-05-28

On-Demand Data

NameIdCountryDate
Francesco Shinko1000Spain2026-06-02
Aruna Figeroa1001India2026-05-22
Murillo Malet1002Germany2026-05-14
Maisha Rulapaugh1003Spain2026-05-31
Jefferson Schemmer1004France2026-05-23
Mayumi Kolmetz1005Argentina2026-06-05
Alejandro Perin1006Brazil2026-05-08
Julie Stenseth1007Australia2026-05-16
Francesco Shinko1008Japan2026-05-26
Munro Ferencz1009Canada2026-05-26
Mujtaba Nicka1010Australia2026-05-26
Jones Vocelka1011Italy2026-05-22
Claire Tollner1012France2026-05-09
James Butt1013Canada2026-05-29
Ivar Paprocki1014United Kingdom2026-05-19
Munro Ferencz1015Spain2026-05-26
Greenwood Bolognia1016Argentina2026-05-20
Mujtaba Nicka1017Germany2026-06-05
Claire Tollner1018Germany2026-05-23
Claire Tollner1019United Kingdom2026-05-22
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Faith GillianItalyOnyama Limba QUALIFIED
Adams MorascaAustraliaBernardo Dominic PROPOSAL
Arvin AlbaresRussiaAmy Elsner UNQUALIFIED
Clifford RimUnited KingdomOnyama Limba UNQUALIFIED
David DarakjyArgentinaIvan Magalhaes PROPOSAL
Jeanfrancois VenereCanadaStephen Shaw UNQUALIFIED
Claire TollnerCanadaXuxue Feng QUALIFIED
Aruna FigeroaUnited KingdomIvan Magalhaes QUALIFIED
Stacey MacleadGermanyIvan Magalhaes UNQUALIFIED
Stacey MacleadItalyElwin Sharvill NEGOTIATION
David DarakjyCanadaElwin Sharvill RENEWAL
Smith GlickFranceIvan Magalhaes PROPOSAL
Juan WieserAustraliaOnyama Limba NEW
Tony FollerItalyIvan Magalhaes NEGOTIATION
Emily WhobreyCanadaElwin Sharvill QUALIFIED
Darci PoquetteCanadaAsiya Javayant RENEWAL
Claire TollnerBrazilElwin Sharvill NEGOTIATION
Mujtaba NickaBrazilIoni Bowcher NEW
Jones VocelkaBrazilIvan Magalhaes NEGOTIATION
Stacey MacleadIndiaIoni Bowcher RENEWAL
Aruna FigeroaFranceAsiya Javayant QUALIFIED
Julie StensethFranceOnyama Limba RENEWAL
Juan WieserSpainStephen Shaw UNQUALIFIED
Jennifer AmigonJapanStephen Shaw PROPOSAL
Misaki RoysterRussiaAsiya Javayant NEGOTIATION
Maria MarrierSpainXuxue Feng NEW
Morrow RutaRussiaIvan Magalhaes UNQUALIFIED
Rodrigues CampainFranceAmy Elsner UNQUALIFIED
Tony FollerItalyXuxue Feng QUALIFIED
Salvatore StockhamRussiaAsiya Javayant NEW
Claire TollnerBrazilAnna Fali QUALIFIED
Emily WhobreyArgentinaAsiya Javayant RENEWAL
Clifford RimArgentinaXuxue Feng RENEWAL
Murillo MaletItalyAnna Fali NEW
Stacey MacleadCanadaOnyama Limba NEGOTIATION
Claire TollnerArgentinaAnna Fali NEGOTIATION
Tony FollerCanadaOnyama Limba RENEWAL
Johnson SergiRussiaOnyama Limba PROPOSAL
Ashley DoeArgentinaAnna Fali NEW
Jones VocelkaBrazilOnyama Limba NEGOTIATION

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