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 VenereFranceStephen Shaw PROPOSAL
Rodrigues CampainJapanAmy Elsner NEW
Nicolas IturbideRussiaOnyama Limba RENEWAL
James ButtSpainAsiya Javayant QUALIFIED
Jennifer AmigonAustraliaAnna Fali QUALIFIED
David DarakjyCanadaIoni Bowcher QUALIFIED
Mayumi KolmetzGermanyStephen Shaw PROPOSAL
Jennifer AmigonArgentinaAnna Fali NEGOTIATION
Wickens NestleItalyAnna Fali RENEWAL
Jefferson SchemmerUnited KingdomStephen Shaw PROPOSAL
Morrow RutaItalyIoni Bowcher QUALIFIED
Cody SaylorsIndiaXuxue Feng QUALIFIED
Arvin AlbaresIndiaAnna Fali UNQUALIFIED
Tony FollerItalyBernardo Dominic RENEWAL
Mujtaba NickaGermanyIvan Magalhaes QUALIFIED
Izzy GarufiItalyIvan Magalhaes NEW
Mujtaba NickaJapanIvan Magalhaes PROPOSAL
Jeanfrancois VenereBrazilAnna Fali PROPOSAL
Stacey MacleadRussiaBernardo Dominic NEW
Mayumi KolmetzRussiaElwin Sharvill RENEWAL
Jennifer AmigonBrazilAmy Elsner RENEWAL
Salvatore StockhamRussiaXuxue Feng NEGOTIATION
Francesco ShinkoUnited KingdomIoni Bowcher PROPOSAL
Greenwood BologniaJapanBernardo Dominic UNQUALIFIED
James ButtArgentinaIvan Magalhaes PROPOSAL
Jeanfrancois VenereGermanyAnna Fali QUALIFIED
Emily WhobreyCanadaBernardo Dominic NEW
Rodrigues CampainFranceAsiya Javayant NEGOTIATION
Faith GillianAustraliaAmy Elsner NEW
Murillo MaletRussiaAnna Fali RENEWAL
Jones VocelkaJapanBernardo Dominic UNQUALIFIED
Alejandro PerinBrazilOnyama Limba RENEWAL
Sinclair WaycottGermanyAmy Elsner NEGOTIATION
Salvatore StockhamArgentinaStephen Shaw UNQUALIFIED
Munro FerenczUnited KingdomElwin Sharvill NEGOTIATION
Chavez BriddickCanadaElwin Sharvill NEW
Greenwood BologniaSpainAnna Fali UNQUALIFIED
Adams MorascaBrazilAsiya Javayant NEGOTIATION
Stacey MacleadArgentinaAnna Fali UNQUALIFIED
Munro FerenczBrazilAnna Fali PROPOSAL
Ashley DoeArgentinaAnna Fali UNQUALIFIED
Wickens NestleJapanIvan Magalhaes RENEWAL
Smith GlickItalyStephen Shaw QUALIFIED
Ivar PaprockiItalyIvan Magalhaes PROPOSAL
Jefferson SchemmerBrazilBernardo Dominic PROPOSAL
Deepesh ChuiArgentinaIvan Magalhaes QUALIFIED
Smith GlickIndiaAnna Fali RENEWAL
Mujtaba NickaBrazilAmy Elsner NEGOTIATION
Johnson SergiItalyAsiya Javayant UNQUALIFIED
Ashley DoeFranceAmy Elsner UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Claire TollnerRussiaIoni Bowcher PROPOSAL
David DarakjyIndiaElwin Sharvill NEW
Cody SaylorsCanadaAnna Fali QUALIFIED
Silvio SlusarskiBrazilXuxue Feng NEW
Jefferson SchemmerItalyIvan Magalhaes PROPOSAL
James ButtCanadaBernardo Dominic PROPOSAL
Salvatore StockhamItalyOnyama Limba NEW
Ricardo GauchoRussiaElwin Sharvill RENEWAL
Kaitlin OstroskyFranceElwin Sharvill NEW
Antonio CaudySpainOnyama Limba PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Octavia MaletGermany2026-04-23Rousseaux, Michael Esq NEW41Xuxue Feng
1001Leon OldroydFrance2026-04-16Dorl, James J Esq NEGOTIATION91Xuxue Feng
1002Arvin AlbaresGermany2026-04-23Buckley Miller Wright NEGOTIATION82Asiya Javayant
1003Juan WieserCanada2026-04-12Chemel, James L Cpa RENEWAL2Ivan Magalhaes
1004Aditya KuskoJapan2026-04-23Benton, John B Jr RENEWAL27Anna Fali
1005Sinclair WaycottIndia2026-04-19Truhlar And Truhlar Attys RENEWAL97Xuxue Feng
1006Cody SaylorsAustralia2026-04-19Dorl, James J Esq RENEWAL34Asiya Javayant
1007Stacey MacleadBrazil2026-04-12Benton, John B Jr NEW65Onyama Limba
1008Chavez BriddickGermany2026-04-08Buckley Miller Wright UNQUALIFIED77Ioni Bowcher
1009Mujtaba NickaFrance2026-04-23Rangoni Of Florence RENEWAL62Onyama Limba
1010Cody SaylorsBrazil2026-04-24Chanay, Jeffrey A Esq PROPOSAL27Onyama Limba
1011Jefferson SchemmerItaly2026-04-25Buckley Miller Wright RENEWAL97Onyama Limba
1012Deepesh ChuiArgentina2026-04-03Rangoni Of Florence NEW69Anna Fali
1013Kaitlin OstroskyRussia2026-04-23Feiner Bros RENEWAL47Ioni Bowcher
1014Silvio SlusarskiBrazil2026-04-28Truhlar And Truhlar Attys NEGOTIATION47Bernardo Dominic
1015Munro FerenczRussia2026-04-18King, Christopher A Esq QUALIFIED74Ivan Magalhaes
1016Antonio CaudyCanada2026-04-19Buckley Miller Wright RENEWAL71Stephen Shaw
1017Kaitlin OstroskyIndia2026-04-26Commercial Press RENEWAL21Bernardo Dominic
1018Emily WhobreyFrance2026-04-03King, Christopher A Esq NEGOTIATION62Xuxue Feng
1019Claire TollnerSpain2026-04-18King, Christopher A Esq PROPOSAL23Ivan Magalhaes
1020Antonio CaudySpain2026-04-14Printing Dimensions RENEWAL85Bernardo Dominic
1021David DarakjyJapan2026-04-09Feltz Printing Service QUALIFIED93Onyama Limba
1022Wickens NestleRussia2026-04-11Chemel, James L Cpa PROPOSAL8Amy Elsner
1023Emily WhobreyJapan2026-04-25Dorl, James J Esq UNQUALIFIED94Bernardo Dominic
1024Misaki RoysterFrance2026-04-01Commercial Press RENEWAL90Bernardo Dominic
1025Antonio CaudyAustralia2026-04-09Feiner Bros NEGOTIATION36Onyama Limba
1026Aditya KuskoIndia2026-04-29King, Christopher A Esq QUALIFIED4Anna Fali
1027Darci PoquetteGermany2026-04-04Feltz Printing Service QUALIFIED88Ioni Bowcher
1028Julie StensethCanada2026-04-06Rangoni Of Florence QUALIFIED6Onyama Limba
1029Sinclair WaycottFrance2026-04-30Truhlar And Truhlar Attys NEW67Asiya Javayant
1030Leon OldroydFrance2026-04-18Morlong Associates UNQUALIFIED57Stephen Shaw
1031David DarakjyBrazil2026-04-11Benton, John B Jr QUALIFIED92Elwin Sharvill
1032Leja CaldareraItaly2026-04-03Truhlar And Truhlar Attys QUALIFIED53Ivan Magalhaes
1033Munro FerenczUnited Kingdom2026-04-12Feltz Printing Service NEGOTIATION97Amy Elsner
1034Rodrigues CampainJapan2026-04-29Morlong Associates RENEWAL46Anna Fali
1035Maria MarrierBrazil2026-04-23King, Christopher A Esq NEGOTIATION65Anna Fali
1036Jeanfrancois VenereArgentina2026-04-25Truhlar And Truhlar Attys QUALIFIED29Anna Fali
1037Leon OldroydItaly2026-04-21Benton, John B Jr NEGOTIATION61Elwin Sharvill
1038Greenwood BologniaAustralia2026-04-28Truhlar And Truhlar Attys NEW79Stephen Shaw
1039Cody SaylorsGermany2026-04-21Rangoni Of Florence QUALIFIED14Ivan Magalhaes
1040Leon OldroydItaly2026-04-24Benton, John B Jr RENEWAL5Ivan Magalhaes
1041Aruna FigeroaFrance2026-04-29Feltz Printing Service RENEWAL31Amy Elsner
1042Greenwood BologniaItaly2026-04-05Morlong Associates NEW70Asiya Javayant
1043Munro FerenczUnited Kingdom2026-04-12Feiner Bros NEGOTIATION76Anna Fali
1044Stacey MacleadSpain2026-04-07Printing Dimensions NEW95Ivan Magalhaes
1045Ricardo GauchoRussia2026-04-01Morlong Associates PROPOSAL98Amy Elsner
1046Clifford RimSpain2026-04-06Commercial Press RENEWAL76Anna Fali
1047Leon OldroydRussia2026-04-19Chapman, Ross E Esq RENEWAL38Asiya Javayant
1048Antonio CaudyItaly2026-04-17Buckley Miller Wright RENEWAL29Asiya Javayant
1049Aika InouyeJapan2026-04-01Chapman, Ross E Esq NEW28Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Sinclair WaycottCanadaStephen Shaw UNQUALIFIED
David DarakjySpainIvan Magalhaes NEW
Ashley DoeRussiaElwin Sharvill PROPOSAL
Claire TollnerBrazilElwin Sharvill UNQUALIFIED
Misaki RoysterIndiaIoni Bowcher RENEWAL
Emily WhobreyAustraliaAmy Elsner UNQUALIFIED
Leja CaldareraSpainXuxue Feng QUALIFIED
Ivar PaprockiRussiaBernardo Dominic RENEWAL
Mayumi KolmetzItalyStephen Shaw NEW
Francesco ShinkoUnited KingdomBernardo Dominic NEW
Smith GlickBrazilAnna Fali NEW
Alejandro PerinAustraliaIvan Magalhaes RENEWAL
Aruna FigeroaGermanyAsiya Javayant NEW
Octavia MaletRussiaAnna Fali NEW
Claire TollnerCanadaElwin Sharvill QUALIFIED
Leja CaldareraFranceIvan Magalhaes UNQUALIFIED
Johnson SergiRussiaIoni Bowcher RENEWAL
Jefferson SchemmerGermanyBernardo Dominic NEGOTIATION
Julie StensethArgentinaAnna Fali NEW
Clifford RimJapanElwin Sharvill PROPOSAL
Arvin AlbaresUnited KingdomIvan Magalhaes UNQUALIFIED
Smith GlickGermanyElwin Sharvill QUALIFIED
Deepesh ChuiCanadaXuxue Feng NEGOTIATION
Ricardo GauchoIndiaElwin Sharvill UNQUALIFIED
Jeanfrancois VenereJapanBernardo Dominic NEGOTIATION
Jennifer AmigonItalyIvan Magalhaes PROPOSAL
Francesco ShinkoAustraliaStephen Shaw QUALIFIED
Jeanfrancois VenereJapanElwin Sharvill NEGOTIATION
Mujtaba NickaJapanElwin Sharvill QUALIFIED
Emily WhobreyArgentinaAsiya Javayant NEGOTIATION
Jefferson SchemmerBrazilElwin Sharvill RENEWAL
Emily WhobreyUnited KingdomOnyama Limba QUALIFIED
Aika InouyeFranceElwin Sharvill QUALIFIED
Kadeem FlosiSpainStephen Shaw RENEWAL
Deepesh ChuiArgentinaIoni Bowcher QUALIFIED
Francesco ShinkoAustraliaAsiya Javayant QUALIFIED
Jones VocelkaAustraliaStephen Shaw RENEWAL
Adams MorascaAustraliaElwin Sharvill UNQUALIFIED
Salvatore StockhamBrazilIvan Magalhaes NEW
Ashley DoeArgentinaOnyama Limba QUALIFIED
Aditya KuskoUnited KingdomAnna Fali NEGOTIATION
Arvin AlbaresJapanElwin Sharvill NEW
Ricardo GauchoAustraliaAmy Elsner QUALIFIED
Francesco ShinkoArgentinaIoni Bowcher NEGOTIATION
Izzy GarufiBrazilOnyama Limba NEGOTIATION
Greenwood BologniaUnited KingdomAmy Elsner NEW
Sinclair WaycottGermanyStephen Shaw NEGOTIATION
Emily WhobreyIndiaAsiya Javayant UNQUALIFIED
Misaki RoysterUnited KingdomElwin Sharvill UNQUALIFIED
Murillo MaletIndiaAmy Elsner NEGOTIATION
Frozen Columns
Name
Mujtaba Nicka
Jones Vocelka
Izzy Garufi
Nicolas Iturbide
Cody Saylors
Stacey Maclead
Smith Glick
Juan Wieser
Izzy Garufi
Ashley Doe
Maria Marrier
Julie Stenseth
Emily Whobrey
Julie Stenseth
Alejandro Perin
Jefferson Schemmer
Leja Caldarera
Kadeem Flosi
Ashley Doe
Kadeem Flosi
Ashley Doe
Jeanfrancois Venere
Francesco Shinko
Jeanfrancois Venere
Jones Vocelka
Morrow Ruta
Juan Wieser
Jones Vocelka
Nicolas Iturbide
Greenwood Bolognia
Jennifer Amigon
Adams Morasca
Emily Whobrey
Jeanfrancois Venere
Salvatore Stockham
Aruna Figeroa
Ricardo Gaucho
Johnson Sergi
Leon Oldroyd
Juan Wieser
Maisha Rulapaugh
Julie Stenseth
Rodrigues Campain
Wickens Nestle
Chavez Briddick
Misaki Royster
Leja Caldarera
James Butt
Emily Whobrey
Aditya Kusko
IdCountryDate
1000Germany2026-04-02
1001Italy2026-04-05
1002Spain2026-04-09
1003Brazil2026-04-25
1004Italy2026-04-10
1005United Kingdom2026-04-20
1006India2026-04-10
1007Germany2026-04-12
1008Spain2026-04-09
1009Italy2026-04-28
1010Brazil2026-04-30
1011Spain2026-04-16
1012France2026-04-30
1013Argentina2026-04-20
1014Canada2026-04-10
1015Argentina2026-04-18
1016Russia2026-04-28
1017France2026-04-03
1018Japan2026-04-02
1019Japan2026-04-23
1020Australia2026-04-01
1021United Kingdom2026-04-16
1022Japan2026-04-17
1023Spain2026-04-13
1024Canada2026-04-24
1025Canada2026-04-23
1026France2026-04-14
1027France2026-04-29
1028Australia2026-04-28
1029India2026-04-25
1030Russia2026-04-06
1031Australia2026-04-25
1032Australia2026-04-23
1033Canada2026-04-06
1034United Kingdom2026-04-15
1035Canada2026-04-17
1036Argentina2026-04-21
1037India2026-04-06
1038Spain2026-04-15
1039Italy2026-04-27
1040Russia2026-04-30
1041Germany2026-04-09
1042Argentina2026-04-05
1043France2026-04-20
1044India2026-04-15
1045Spain2026-04-15
1046United Kingdom2026-04-25
1047Argentina2026-04-17
1048Canada2026-04-22
1049Australia2026-04-12

On-Demand Data

NameIdCountryDate
Emily Whobrey1000Spain2026-04-03
Antonio Caudy1001Canada2026-04-03
Maisha Rulapaugh1002Spain2026-04-05
Aruna Figeroa1003Germany2026-04-25
Clifford Rim1004Russia2026-04-19
Clifford Rim1005Argentina2026-04-19
Silvio Slusarski1006India2026-04-13
Jones Vocelka1007Germany2026-04-11
Munro Ferencz1008Brazil2026-04-29
Mujtaba Nicka1009Italy2026-04-12
Antonio Caudy1010France2026-04-25
Jones Vocelka1011Russia2026-04-20
Aditya Kusko1012Brazil2026-04-04
Aditya Kusko1013Germany2026-04-07
Ricardo Gaucho1014Canada2026-04-01
Julie Stenseth1015India2026-04-10
Ricardo Gaucho1016Russia2026-04-16
Aruna Figeroa1017Brazil2026-04-04
Jefferson Schemmer1018Japan2026-04-20
Jeanfrancois Venere1019Italy2026-04-29
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Stacey MacleadIndiaAsiya Javayant NEGOTIATION
Johnson SergiFranceAmy Elsner PROPOSAL
Isabel BowleySpainOnyama Limba NEGOTIATION
Aika InouyeSpainXuxue Feng RENEWAL
Adams MorascaItalyElwin Sharvill NEW
Maria MarrierFranceStephen Shaw NEW
Nicolas IturbideSpainOnyama Limba PROPOSAL
Juan WieserItalyOnyama Limba NEGOTIATION
Smith GlickBrazilAsiya Javayant PROPOSAL
Juan WieserUnited KingdomIvan Magalhaes RENEWAL
Leon OldroydFranceIoni Bowcher RENEWAL
Faith GillianRussiaAnna Fali NEW
Izzy GarufiJapanOnyama Limba QUALIFIED
Munro FerenczAustraliaBernardo Dominic RENEWAL
David DarakjyIndiaAsiya Javayant PROPOSAL
Costa DilliardBrazilBernardo Dominic NEW
Deepesh ChuiItalyElwin Sharvill UNQUALIFIED
Francesco ShinkoRussiaStephen Shaw PROPOSAL
Alejandro PerinGermanyStephen Shaw NEW
Kadeem FlosiRussiaStephen Shaw QUALIFIED
Misaki RoysterIndiaStephen Shaw QUALIFIED
Mayumi KolmetzArgentinaOnyama Limba PROPOSAL
Murillo MaletJapanBernardo Dominic NEW
Clifford RimCanadaAmy Elsner RENEWAL
Jeanfrancois VenereItalyElwin Sharvill PROPOSAL
Ashley DoeIndiaIvan Magalhaes NEGOTIATION
Silvio SlusarskiItalyIvan Magalhaes NEW
Mayumi KolmetzSpainAnna Fali QUALIFIED
Mayumi KolmetzItalyBernardo Dominic QUALIFIED
Wickens NestleRussiaIoni Bowcher UNQUALIFIED
Julie StensethJapanIvan Magalhaes QUALIFIED
Maisha RulapaughBrazilAsiya Javayant PROPOSAL
Antonio CaudyCanadaIvan Magalhaes RENEWAL
Alejandro PerinSpainXuxue Feng RENEWAL
Maisha RulapaughIndiaIoni Bowcher QUALIFIED
Mujtaba NickaGermanyXuxue Feng NEGOTIATION
Deepesh ChuiCanadaAmy Elsner PROPOSAL
Kadeem FlosiSpainAsiya Javayant RENEWAL
Izzy GarufiSpainStephen Shaw NEW
Rodrigues CampainArgentinaIvan Magalhaes 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>