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
Aditya KuskoCanadaElwin Sharvill PROPOSAL
Sinclair WaycottItalyElwin Sharvill RENEWAL
Stacey MacleadGermanyStephen Shaw NEGOTIATION
Ivar PaprockiFranceOnyama Limba RENEWAL
Juan WieserAustraliaIoni Bowcher QUALIFIED
Leon OldroydIndiaIvan Magalhaes UNQUALIFIED
Ricardo GauchoSpainOnyama Limba QUALIFIED
Mayumi KolmetzBrazilBernardo Dominic RENEWAL
Aditya KuskoItalyAsiya Javayant UNQUALIFIED
Ricardo GauchoItalyXuxue Feng NEW
Clifford RimAustraliaOnyama Limba RENEWAL
Julie StensethBrazilIvan Magalhaes PROPOSAL
Morrow RutaJapanIvan Magalhaes RENEWAL
Johnson SergiBrazilIvan Magalhaes PROPOSAL
Murillo MaletAustraliaOnyama Limba NEGOTIATION
Smith GlickFranceXuxue Feng RENEWAL
Sinclair WaycottIndiaStephen Shaw NEGOTIATION
Emily WhobreyUnited KingdomIvan Magalhaes RENEWAL
Leon OldroydSpainAsiya Javayant NEGOTIATION
Sinclair WaycottSpainOnyama Limba PROPOSAL
Stacey MacleadGermanyBernardo Dominic QUALIFIED
Antonio CaudyFranceBernardo Dominic NEW
Ashley DoeRussiaOnyama Limba QUALIFIED
Darci PoquetteUnited KingdomElwin Sharvill NEW
Izzy GarufiRussiaElwin Sharvill NEGOTIATION
Claire TollnerIndiaIvan Magalhaes NEGOTIATION
Faith GillianIndiaAnna Fali NEGOTIATION
Maria MarrierGermanyElwin Sharvill PROPOSAL
Aruna FigeroaRussiaAsiya Javayant NEGOTIATION
Nicolas IturbideGermanyIoni Bowcher UNQUALIFIED
Jennifer AmigonIndiaBernardo Dominic RENEWAL
Costa DilliardItalyBernardo Dominic RENEWAL
Greenwood BologniaSpainBernardo Dominic NEGOTIATION
Arvin AlbaresArgentinaAsiya Javayant RENEWAL
Ricardo GauchoRussiaOnyama Limba NEW
Silvio SlusarskiIndiaStephen Shaw QUALIFIED
Murillo MaletFranceIoni Bowcher UNQUALIFIED
Juan WieserFranceBernardo Dominic RENEWAL
Rodrigues CampainUnited KingdomAnna Fali QUALIFIED
Silvio SlusarskiUnited KingdomIvan Magalhaes QUALIFIED
Maisha RulapaughFranceIvan Magalhaes PROPOSAL
Arvin AlbaresUnited KingdomIoni Bowcher NEGOTIATION
Greenwood BologniaSpainIvan Magalhaes RENEWAL
Clifford RimItalyAmy Elsner PROPOSAL
Mujtaba NickaArgentinaIoni Bowcher NEW
Ashley DoeJapanElwin Sharvill NEGOTIATION
Rodrigues CampainGermanyAnna Fali QUALIFIED
Deepesh ChuiBrazilXuxue Feng PROPOSAL
Salvatore StockhamArgentinaIoni Bowcher UNQUALIFIED
Jefferson SchemmerBrazilAmy Elsner PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Stacey MacleadSpainStephen Shaw PROPOSAL
Faith GillianUnited KingdomIoni Bowcher RENEWAL
Murillo MaletCanadaOnyama Limba NEGOTIATION
Jones VocelkaSpainBernardo Dominic NEW
Ricardo GauchoBrazilElwin Sharvill NEGOTIATION
Johnson SergiGermanyAsiya Javayant QUALIFIED
Costa DilliardCanadaAnna Fali PROPOSAL
Ivar PaprockiBrazilXuxue Feng NEW
Ricardo GauchoRussiaAsiya Javayant QUALIFIED
Mayumi KolmetzBrazilOnyama Limba QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000James ButtGermany2026-04-21Dorl, James J Esq UNQUALIFIED4Amy Elsner
1001James ButtCanada2026-04-26Morlong Associates NEW18Amy Elsner
1002Isabel BowleyBrazil2026-04-06King, Christopher A Esq PROPOSAL48Onyama Limba
1003Mayumi KolmetzIndia2026-04-11Chemel, James L Cpa NEGOTIATION97Ioni Bowcher
1004Leon OldroydArgentina2026-04-07Truhlar And Truhlar Attys RENEWAL26Ioni Bowcher
1005Leon OldroydArgentina2026-04-05Chemel, James L Cpa UNQUALIFIED93Onyama Limba
1006Salvatore StockhamArgentina2026-04-18Dorl, James J Esq NEW30Stephen Shaw
1007Chavez BriddickSpain2026-04-18Dorl, James J Esq UNQUALIFIED82Bernardo Dominic
1008Aika InouyeFrance2026-04-10Benton, John B Jr NEW97Ioni Bowcher
1009Tony FollerCanada2026-04-19Chapman, Ross E Esq NEGOTIATION97Bernardo Dominic
1010Clifford RimFrance2026-04-30Benton, John B Jr RENEWAL3Amy Elsner
1011Faith GillianFrance2026-04-29Chemel, James L Cpa NEGOTIATION42Onyama Limba
1012Kadeem FlosiUnited Kingdom2026-04-15Truhlar And Truhlar Attys NEGOTIATION34Ioni Bowcher
1013Francesco ShinkoSpain2026-04-01Morlong Associates UNQUALIFIED18Onyama Limba
1014Antonio CaudyUnited Kingdom2026-04-27Rangoni Of Florence RENEWAL54Asiya Javayant
1015Mujtaba NickaGermany2026-04-11Morlong Associates RENEWAL37Ioni Bowcher
1016Alejandro PerinCanada2026-04-06Rangoni Of Florence NEGOTIATION23Onyama Limba
1017Maria MarrierRussia2026-04-02King, Christopher A Esq RENEWAL96Ioni Bowcher
1018Alejandro PerinBrazil2026-04-29Feiner Bros UNQUALIFIED9Bernardo Dominic
1019Ricardo GauchoIndia2026-04-29Buckley Miller Wright NEGOTIATION10Ivan Magalhaes
1020Antonio CaudyRussia2026-04-16Rangoni Of Florence RENEWAL77Anna Fali
1021Nicolas IturbideUnited Kingdom2026-04-15Truhlar And Truhlar Attys UNQUALIFIED74Anna Fali
1022Kadeem FlosiAustralia2026-04-29Rangoni Of Florence QUALIFIED39Elwin Sharvill
1023Silvio SlusarskiUnited Kingdom2026-04-27King, Christopher A Esq RENEWAL83Xuxue Feng
1024Morrow RutaArgentina2026-04-23Rangoni Of Florence RENEWAL21Xuxue Feng
1025Stacey MacleadSpain2026-04-05Chemel, James L Cpa UNQUALIFIED62Stephen Shaw
1026Adams MorascaGermany2026-04-11Dorl, James J Esq NEW69Ioni Bowcher
1027Francesco ShinkoArgentina2026-04-08Chapman, Ross E Esq UNQUALIFIED54Anna Fali
1028Jennifer AmigonIndia2026-04-18Chanay, Jeffrey A Esq PROPOSAL23Ivan Magalhaes
1029Julie StensethItaly2026-04-19Buckley Miller Wright UNQUALIFIED21Ioni Bowcher
1030Ricardo GauchoBrazil2026-04-25Feltz Printing Service UNQUALIFIED70Onyama Limba
1031Izzy GarufiSpain2026-04-29Dorl, James J Esq RENEWAL76Stephen Shaw
1032Morrow RutaSpain2026-04-17Printing Dimensions NEW93Bernardo Dominic
1033Antonio CaudyUnited Kingdom2026-04-23Feltz Printing Service QUALIFIED21Bernardo Dominic
1034Darci PoquetteSpain2026-04-24Morlong Associates PROPOSAL51Amy Elsner
1035Ricardo GauchoCanada2026-04-26Chapman, Ross E Esq NEGOTIATION40Anna Fali
1036Ashley DoeIndia2026-04-04Benton, John B Jr NEW22Onyama Limba
1037Ivar PaprockiItaly2026-04-09Feiner Bros UNQUALIFIED61Xuxue Feng
1038Mujtaba NickaAustralia2026-04-03Rangoni Of Florence NEGOTIATION51Stephen Shaw
1039Salvatore StockhamBrazil2026-04-21Chanay, Jeffrey A Esq NEGOTIATION34Ioni Bowcher
1040Kaitlin OstroskyRussia2026-04-06Rousseaux, Michael Esq PROPOSAL75Elwin Sharvill
1041Adams MorascaAustralia2026-04-26Dorl, James J Esq QUALIFIED45Bernardo Dominic
1042Adams MorascaCanada2026-04-18Buckley Miller Wright QUALIFIED16Elwin Sharvill
1043Sinclair WaycottArgentina2026-04-17Chapman, Ross E Esq NEW37Bernardo Dominic
1044Smith GlickIndia2026-04-02Commercial Press PROPOSAL93Elwin Sharvill
1045Wickens NestleGermany2026-04-16Chemel, James L Cpa PROPOSAL89Asiya Javayant
1046Munro FerenczSpain2026-04-22Feiner Bros UNQUALIFIED41Xuxue Feng
1047Misaki RoysterJapan2026-04-28King, Christopher A Esq UNQUALIFIED15Stephen Shaw
1048Faith GillianCanada2026-04-17King, Christopher A Esq RENEWAL1Ivan Magalhaes
1049Nicolas IturbideArgentina2026-04-24Chanay, Jeffrey A Esq NEGOTIATION3Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Cody SaylorsRussiaIvan Magalhaes RENEWAL
Jennifer AmigonAustraliaStephen Shaw NEGOTIATION
Aruna FigeroaCanadaAmy Elsner NEGOTIATION
Jennifer AmigonUnited KingdomAsiya Javayant PROPOSAL
Maisha RulapaughJapanIoni Bowcher NEW
Mujtaba NickaIndiaIvan Magalhaes PROPOSAL
Aditya KuskoItalyStephen Shaw PROPOSAL
Kaitlin OstroskySpainElwin Sharvill RENEWAL
Faith GillianFranceStephen Shaw PROPOSAL
Antonio CaudyIndiaIoni Bowcher RENEWAL
Julie StensethAustraliaAnna Fali NEW
Nicolas IturbideIndiaBernardo Dominic UNQUALIFIED
Antonio CaudyGermanyIoni Bowcher NEGOTIATION
Rodrigues CampainBrazilBernardo Dominic NEGOTIATION
Cody SaylorsAustraliaIvan Magalhaes PROPOSAL
Deepesh ChuiItalyAnna Fali NEGOTIATION
Jefferson SchemmerAustraliaXuxue Feng NEGOTIATION
Stacey MacleadBrazilStephen Shaw NEW
Wickens NestleFranceAnna Fali QUALIFIED
Greenwood BologniaItalyXuxue Feng NEW
Tony FollerBrazilAmy Elsner PROPOSAL
Alejandro PerinJapanOnyama Limba PROPOSAL
Murillo MaletAustraliaAnna Fali NEGOTIATION
Leja CaldareraSpainBernardo Dominic QUALIFIED
Ashley DoeUnited KingdomElwin Sharvill NEW
Maria MarrierJapanStephen Shaw NEGOTIATION
Maisha RulapaughSpainBernardo Dominic NEW
Jennifer AmigonFranceStephen Shaw RENEWAL
Rodrigues CampainUnited KingdomAnna Fali QUALIFIED
Julie StensethItalyBernardo Dominic UNQUALIFIED
David DarakjyFranceIvan Magalhaes QUALIFIED
Chavez BriddickRussiaIoni Bowcher UNQUALIFIED
Wickens NestleAustraliaAnna Fali RENEWAL
Octavia MaletGermanyIoni Bowcher RENEWAL
Jones VocelkaAustraliaIvan Magalhaes NEW
Nicolas IturbideItalyElwin Sharvill QUALIFIED
Emily WhobreyGermanyAnna Fali NEGOTIATION
Kaitlin OstroskySpainAsiya Javayant QUALIFIED
Mayumi KolmetzUnited KingdomElwin Sharvill PROPOSAL
Ashley DoeItalyElwin Sharvill NEW
Deepesh ChuiJapanOnyama Limba NEGOTIATION
Murillo MaletFranceElwin Sharvill PROPOSAL
Adams MorascaUnited KingdomOnyama Limba RENEWAL
Jennifer AmigonIndiaIoni Bowcher RENEWAL
Aditya KuskoFranceXuxue Feng QUALIFIED
Maisha RulapaughUnited KingdomBernardo Dominic UNQUALIFIED
Morrow RutaSpainBernardo Dominic NEGOTIATION
Isabel BowleyCanadaAsiya Javayant PROPOSAL
Cody SaylorsRussiaElwin Sharvill QUALIFIED
Maria MarrierIndiaIvan Magalhaes RENEWAL
Frozen Columns
Name
Morrow Ruta
Isabel Bowley
Izzy Garufi
Darci Poquette
Greenwood Bolognia
Costa Dilliard
Mayumi Kolmetz
Aika Inouye
Emily Whobrey
James Butt
Maria Marrier
Ashley Doe
Adams Morasca
James Butt
Smith Glick
Alejandro Perin
Mujtaba Nicka
Ivar Paprocki
Ashley Doe
Munro Ferencz
Isabel Bowley
Salvatore Stockham
Clifford Rim
Maria Marrier
Chavez Briddick
Rodrigues Campain
Mayumi Kolmetz
David Darakjy
Morrow Ruta
Julie Stenseth
Isabel Bowley
Jones Vocelka
Johnson Sergi
Smith Glick
Emily Whobrey
Silvio Slusarski
James Butt
Rodrigues Campain
Silvio Slusarski
Mayumi Kolmetz
Murillo Malet
Clifford Rim
Octavia Malet
Jones Vocelka
Sinclair Waycott
Sinclair Waycott
Jefferson Schemmer
Greenwood Bolognia
Salvatore Stockham
Murillo Malet
IdCountryDate
1000Brazil2026-04-18
1001Canada2026-04-01
1002Spain2026-04-13
1003Japan2026-04-28
1004Canada2026-04-25
1005Italy2026-04-27
1006United Kingdom2026-04-14
1007Russia2026-04-27
1008Australia2026-04-10
1009Canada2026-04-12
1010Japan2026-04-02
1011Argentina2026-04-29
1012Italy2026-04-03
1013Spain2026-04-08
1014Canada2026-04-29
1015Italy2026-04-12
1016India2026-04-01
1017Spain2026-04-16
1018Japan2026-04-29
1019Australia2026-04-17
1020Australia2026-04-21
1021Australia2026-04-18
1022Germany2026-04-24
1023Italy2026-04-15
1024Italy2026-04-18
1025France2026-04-30
1026Brazil2026-04-09
1027Australia2026-04-10
1028Germany2026-04-11
1029Russia2026-04-24
1030Japan2026-04-27
1031Brazil2026-04-11
1032United Kingdom2026-04-01
1033Brazil2026-04-12
1034Brazil2026-04-14
1035Japan2026-04-24
1036United Kingdom2026-04-02
1037India2026-04-15
1038Australia2026-04-27
1039Italy2026-04-18
1040Russia2026-04-03
1041France2026-04-30
1042Germany2026-04-23
1043Spain2026-04-23
1044Brazil2026-04-23
1045Russia2026-04-12
1046Brazil2026-04-16
1047Japan2026-04-26
1048Spain2026-04-23
1049Australia2026-04-18

On-Demand Data

NameIdCountryDate
Julie Stenseth1000Brazil2026-04-23
Morrow Ruta1001India2026-04-13
Francesco Shinko1002Argentina2026-04-01
Adams Morasca1003Argentina2026-04-15
Isabel Bowley1004Russia2026-04-05
Sinclair Waycott1005United Kingdom2026-04-14
Misaki Royster1006Australia2026-04-27
Ashley Doe1007France2026-04-09
Izzy Garufi1008Japan2026-04-16
David Darakjy1009Australia2026-04-24
Faith Gillian1010Argentina2026-04-13
Faith Gillian1011Spain2026-04-17
Isabel Bowley1012Russia2026-04-01
Isabel Bowley1013Italy2026-04-05
Salvatore Stockham1014Australia2026-04-20
Adams Morasca1015Italy2026-04-23
Deepesh Chui1016Germany2026-04-13
Costa Dilliard1017Russia2026-04-18
Faith Gillian1018Japan2026-04-20
Ricardo Gaucho1019Australia2026-04-30
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aruna FigeroaBrazilAnna Fali NEGOTIATION
Chavez BriddickRussiaIoni Bowcher UNQUALIFIED
Julie StensethSpainAmy Elsner NEGOTIATION
Alejandro PerinRussiaBernardo Dominic UNQUALIFIED
Morrow RutaIndiaAnna Fali PROPOSAL
Maria MarrierFranceStephen Shaw UNQUALIFIED
Kadeem FlosiGermanyXuxue Feng PROPOSAL
Kadeem FlosiFranceAsiya Javayant UNQUALIFIED
Mayumi KolmetzBrazilAmy Elsner RENEWAL
Mayumi KolmetzBrazilElwin Sharvill RENEWAL
Mayumi KolmetzCanadaAmy Elsner QUALIFIED
Jeanfrancois VenereArgentinaXuxue Feng NEGOTIATION
Morrow RutaGermanyAnna Fali PROPOSAL
Emily WhobreyCanadaXuxue Feng RENEWAL
David DarakjyJapanOnyama Limba QUALIFIED
Kadeem FlosiBrazilBernardo Dominic UNQUALIFIED
Maria MarrierItalyAsiya Javayant UNQUALIFIED
Antonio CaudyUnited KingdomOnyama Limba NEGOTIATION
Isabel BowleyJapanAmy Elsner NEGOTIATION
Deepesh ChuiBrazilIoni Bowcher NEGOTIATION
Ivar PaprockiRussiaStephen Shaw NEGOTIATION
Darci PoquetteIndiaStephen Shaw RENEWAL
Silvio SlusarskiUnited KingdomElwin Sharvill PROPOSAL
Costa DilliardIndiaAsiya Javayant PROPOSAL
Costa DilliardItalyIvan Magalhaes QUALIFIED
Claire TollnerItalyStephen Shaw RENEWAL
Aruna FigeroaItalyAsiya Javayant RENEWAL
Adams MorascaCanadaElwin Sharvill NEGOTIATION
Isabel BowleySpainStephen Shaw UNQUALIFIED
Chavez BriddickIndiaBernardo Dominic UNQUALIFIED
Costa DilliardAustraliaBernardo Dominic UNQUALIFIED
Misaki RoysterFranceIoni Bowcher NEGOTIATION
Isabel BowleyBrazilOnyama Limba NEW
Mayumi KolmetzAustraliaBernardo Dominic QUALIFIED
Clifford RimJapanOnyama Limba UNQUALIFIED
Sinclair WaycottSpainIvan Magalhaes UNQUALIFIED
Ricardo GauchoFranceAnna Fali NEW
Adams MorascaAustraliaOnyama Limba NEW
Leon OldroydAustraliaAsiya Javayant UNQUALIFIED
Silvio SlusarskiArgentinaAmy Elsner 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>