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
Arvin AlbaresBrazilBernardo Dominic UNQUALIFIED
James ButtJapanElwin Sharvill NEGOTIATION
Clifford RimAustraliaXuxue Feng QUALIFIED
Ivar PaprockiGermanyXuxue Feng RENEWAL
Jones VocelkaIndiaXuxue Feng RENEWAL
Nicolas IturbideSpainElwin Sharvill PROPOSAL
Clifford RimUnited KingdomXuxue Feng UNQUALIFIED
Kadeem FlosiSpainAsiya Javayant NEGOTIATION
Tony FollerUnited KingdomIvan Magalhaes NEGOTIATION
Alejandro PerinJapanElwin Sharvill RENEWAL
Arvin AlbaresCanadaAmy Elsner QUALIFIED
Rodrigues CampainArgentinaAmy Elsner NEW
Deepesh ChuiArgentinaBernardo Dominic PROPOSAL
Arvin AlbaresSpainIoni Bowcher RENEWAL
Ricardo GauchoSpainBernardo Dominic NEW
Juan WieserIndiaAmy Elsner NEGOTIATION
Izzy GarufiIndiaXuxue Feng RENEWAL
Kaitlin OstroskyItalyAsiya Javayant NEGOTIATION
Munro FerenczJapanStephen Shaw NEW
Julie StensethGermanyIvan Magalhaes UNQUALIFIED
Ashley DoeSpainIvan Magalhaes NEW
James ButtUnited KingdomXuxue Feng RENEWAL
Izzy GarufiUnited KingdomIvan Magalhaes NEW
Munro FerenczGermanyElwin Sharvill QUALIFIED
Francesco ShinkoItalyIoni Bowcher QUALIFIED
Ivar PaprockiUnited KingdomElwin Sharvill RENEWAL
Johnson SergiRussiaAnna Fali UNQUALIFIED
Leon OldroydBrazilIoni Bowcher NEW
James ButtIndiaIvan Magalhaes NEW
Ivar PaprockiGermanyIoni Bowcher QUALIFIED
Francesco ShinkoGermanyAmy Elsner PROPOSAL
Stacey MacleadUnited KingdomAnna Fali NEW
Mujtaba NickaRussiaIvan Magalhaes NEGOTIATION
Kaitlin OstroskyFranceOnyama Limba RENEWAL
Isabel BowleySpainAsiya Javayant QUALIFIED
Aruna FigeroaIndiaOnyama Limba PROPOSAL
Wickens NestleRussiaIvan Magalhaes QUALIFIED
Antonio CaudyRussiaElwin Sharvill NEW
Morrow RutaBrazilAsiya Javayant RENEWAL
Smith GlickBrazilOnyama Limba QUALIFIED
Sinclair WaycottRussiaAsiya Javayant RENEWAL
Juan WieserSpainOnyama Limba RENEWAL
Misaki RoysterSpainStephen Shaw UNQUALIFIED
Izzy GarufiUnited KingdomElwin Sharvill UNQUALIFIED
Maria MarrierJapanXuxue Feng UNQUALIFIED
Jones VocelkaRussiaStephen Shaw UNQUALIFIED
Kaitlin OstroskyArgentinaAmy Elsner RENEWAL
Mujtaba NickaCanadaXuxue Feng NEGOTIATION
Silvio SlusarskiJapanIoni Bowcher RENEWAL
Mayumi KolmetzGermanyIvan Magalhaes RENEWAL
Horizontal
NameCountryRepresentativeStatus
Sinclair WaycottCanadaAnna Fali RENEWAL
Greenwood BologniaSpainIvan Magalhaes QUALIFIED
Aika InouyeIndiaStephen Shaw NEGOTIATION
Claire TollnerCanadaIoni Bowcher NEGOTIATION
Clifford RimArgentinaXuxue Feng PROPOSAL
Juan WieserBrazilAsiya Javayant NEW
Wickens NestleBrazilAsiya Javayant PROPOSAL
Jefferson SchemmerCanadaOnyama Limba PROPOSAL
Octavia MaletItalyIoni Bowcher NEW
Murillo MaletRussiaElwin Sharvill NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Leon OldroydJapan2026-05-17Feltz Printing Service PROPOSAL76Asiya Javayant
1001Munro FerenczSpain2026-06-12Printing Dimensions NEGOTIATION42Bernardo Dominic
1002Arvin AlbaresArgentina2026-06-13Truhlar And Truhlar Attys UNQUALIFIED19Bernardo Dominic
1003Rodrigues CampainRussia2026-05-31Dorl, James J Esq NEGOTIATION42Onyama Limba
1004Ashley DoeBrazil2026-05-31King, Christopher A Esq QUALIFIED1Anna Fali
1005Juan WieserAustralia2026-06-01Benton, John B Jr QUALIFIED58Elwin Sharvill
1006Tony FollerJapan2026-05-26Morlong Associates RENEWAL24Stephen Shaw
1007Arvin AlbaresJapan2026-05-30Chemel, James L Cpa NEW39Asiya Javayant
1008Aruna FigeroaCanada2026-06-07Rousseaux, Michael Esq UNQUALIFIED97Asiya Javayant
1009Stacey MacleadCanada2026-06-10Buckley Miller Wright UNQUALIFIED81Onyama Limba
1010Misaki RoysterSpain2026-05-30Benton, John B Jr NEGOTIATION86Amy Elsner
1011Adams MorascaRussia2026-05-21Truhlar And Truhlar Attys NEGOTIATION60Elwin Sharvill
1012Jeanfrancois VenereArgentina2026-05-31Commercial Press UNQUALIFIED93Bernardo Dominic
1013Cody SaylorsCanada2026-06-09Truhlar And Truhlar Attys NEGOTIATION22Elwin Sharvill
1014Mayumi KolmetzArgentina2026-06-04Dorl, James J Esq RENEWAL82Asiya Javayant
1015Aditya KuskoGermany2026-05-27Dorl, James J Esq RENEWAL22Elwin Sharvill
1016Murillo MaletJapan2026-05-18Rangoni Of Florence PROPOSAL77Ivan Magalhaes
1017Adams MorascaFrance2026-05-27Morlong Associates QUALIFIED53Stephen Shaw
1018Cody SaylorsAustralia2026-06-07Commercial Press RENEWAL66Asiya Javayant
1019David DarakjyIndia2026-05-23Morlong Associates UNQUALIFIED73Onyama Limba
1020Mayumi KolmetzJapan2026-05-30Printing Dimensions UNQUALIFIED63Amy Elsner
1021Aditya KuskoIndia2026-06-08Feltz Printing Service NEGOTIATION2Ivan Magalhaes
1022Adams MorascaJapan2026-05-27Chapman, Ross E Esq NEGOTIATION7Asiya Javayant
1023Chavez BriddickFrance2026-06-09Feltz Printing Service PROPOSAL56Ivan Magalhaes
1024Aika InouyeSpain2026-05-28Chapman, Ross E Esq NEGOTIATION47Elwin Sharvill
1025Aruna FigeroaItaly2026-06-14Rangoni Of Florence RENEWAL50Bernardo Dominic
1026Jones VocelkaItaly2026-06-08Truhlar And Truhlar Attys NEGOTIATION50Bernardo Dominic
1027Smith GlickBrazil2026-06-04Morlong Associates NEGOTIATION21Onyama Limba
1028Murillo MaletItaly2026-06-07Rangoni Of Florence UNQUALIFIED91Asiya Javayant
1029Deepesh ChuiItaly2026-06-09Rangoni Of Florence UNQUALIFIED22Ioni Bowcher
1030Kadeem FlosiItaly2026-05-17Chapman, Ross E Esq PROPOSAL13Ioni Bowcher
1031Claire TollnerUnited Kingdom2026-05-31Truhlar And Truhlar Attys UNQUALIFIED86Onyama Limba
1032Salvatore StockhamSpain2026-06-09Benton, John B Jr PROPOSAL40Stephen Shaw
1033Ricardo GauchoUnited Kingdom2026-05-29Chemel, James L Cpa UNQUALIFIED85Xuxue Feng
1034Cody SaylorsSpain2026-06-15Truhlar And Truhlar Attys NEGOTIATION49Ivan Magalhaes
1035Claire TollnerRussia2026-05-31King, Christopher A Esq QUALIFIED73Ioni Bowcher
1036Murillo MaletArgentina2026-05-29Chemel, James L Cpa UNQUALIFIED65Elwin Sharvill
1037Faith GillianCanada2026-05-17Truhlar And Truhlar Attys NEW55Xuxue Feng
1038Morrow RutaJapan2026-05-22Buckley Miller Wright NEGOTIATION9Ivan Magalhaes
1039Morrow RutaUnited Kingdom2026-05-26Feltz Printing Service NEW4Amy Elsner
1040Leja CaldareraBrazil2026-06-08Rousseaux, Michael Esq NEGOTIATION72Asiya Javayant
1041David DarakjyGermany2026-06-12Printing Dimensions NEGOTIATION65Onyama Limba
1042Antonio CaudyUnited Kingdom2026-05-21Feltz Printing Service QUALIFIED95Ioni Bowcher
1043Murillo MaletFrance2026-06-12Chanay, Jeffrey A Esq QUALIFIED82Ioni Bowcher
1044Johnson SergiAustralia2026-06-15Printing Dimensions PROPOSAL36Asiya Javayant
1045Ricardo GauchoRussia2026-06-13Truhlar And Truhlar Attys UNQUALIFIED87Amy Elsner
1046Jennifer AmigonFrance2026-06-05Commercial Press QUALIFIED80Amy Elsner
1047Chavez BriddickJapan2026-05-30Feiner Bros RENEWAL53Ivan Magalhaes
1048Johnson SergiJapan2026-05-27Buckley Miller Wright PROPOSAL32Elwin Sharvill
1049Adams MorascaUnited Kingdom2026-06-05Morlong Associates NEGOTIATION12Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Julie StensethCanadaBernardo Dominic RENEWAL
Deepesh ChuiCanadaAmy Elsner NEGOTIATION
Kadeem FlosiArgentinaAsiya Javayant QUALIFIED
Greenwood BologniaUnited KingdomIvan Magalhaes UNQUALIFIED
Aditya KuskoUnited KingdomAmy Elsner RENEWAL
Jeanfrancois VenereSpainAnna Fali NEW
Maisha RulapaughAustraliaAnna Fali RENEWAL
Jeanfrancois VenereItalyElwin Sharvill NEW
James ButtSpainAsiya Javayant RENEWAL
Maria MarrierCanadaBernardo Dominic PROPOSAL
Jennifer AmigonJapanAsiya Javayant NEGOTIATION
Kaitlin OstroskyRussiaStephen Shaw RENEWAL
Darci PoquetteJapanAmy Elsner NEGOTIATION
Munro FerenczIndiaAnna Fali PROPOSAL
Kaitlin OstroskyJapanIoni Bowcher RENEWAL
Claire TollnerAustraliaElwin Sharvill PROPOSAL
Costa DilliardAustraliaBernardo Dominic RENEWAL
Morrow RutaAustraliaAmy Elsner QUALIFIED
Izzy GarufiUnited KingdomIoni Bowcher RENEWAL
Claire TollnerRussiaIoni Bowcher NEW
Aditya KuskoUnited KingdomElwin Sharvill RENEWAL
Johnson SergiIndiaIvan Magalhaes QUALIFIED
Leja CaldareraFranceOnyama Limba RENEWAL
Jeanfrancois VenereAustraliaStephen Shaw NEW
Emily WhobreyJapanAmy Elsner NEGOTIATION
Smith GlickArgentinaXuxue Feng PROPOSAL
Murillo MaletAustraliaStephen Shaw NEW
Claire TollnerArgentinaOnyama Limba QUALIFIED
Darci PoquetteIndiaBernardo Dominic UNQUALIFIED
Octavia MaletBrazilStephen Shaw UNQUALIFIED
Greenwood BologniaIndiaOnyama Limba RENEWAL
Morrow RutaJapanAsiya Javayant PROPOSAL
Misaki RoysterSpainStephen Shaw NEGOTIATION
Claire TollnerArgentinaAnna Fali QUALIFIED
Francesco ShinkoIndiaElwin Sharvill NEGOTIATION
Salvatore StockhamUnited KingdomAnna Fali PROPOSAL
Ivar PaprockiItalyElwin Sharvill NEW
Silvio SlusarskiIndiaOnyama Limba PROPOSAL
Francesco ShinkoGermanyBernardo Dominic PROPOSAL
Silvio SlusarskiFranceStephen Shaw QUALIFIED
Misaki RoysterBrazilAmy Elsner NEW
Izzy GarufiSpainElwin Sharvill NEW
Silvio SlusarskiCanadaOnyama Limba PROPOSAL
Mayumi KolmetzUnited KingdomStephen Shaw PROPOSAL
Greenwood BologniaArgentinaIoni Bowcher NEGOTIATION
Deepesh ChuiJapanAsiya Javayant QUALIFIED
Julie StensethItalyElwin Sharvill NEW
Murillo MaletBrazilXuxue Feng NEW
Aruna FigeroaBrazilStephen Shaw NEW
Murillo MaletGermanyAnna Fali NEW
Frozen Columns
Name
Adams Morasca
Ricardo Gaucho
Francesco Shinko
Leja Caldarera
Mujtaba Nicka
Aditya Kusko
Ivar Paprocki
Leon Oldroyd
Murillo Malet
Jefferson Schemmer
Julie Stenseth
Kadeem Flosi
Stacey Maclead
Mujtaba Nicka
Morrow Ruta
Octavia Malet
Jennifer Amigon
Ricardo Gaucho
Rodrigues Campain
Misaki Royster
Octavia Malet
Jeanfrancois Venere
Greenwood Bolognia
Aika Inouye
Chavez Briddick
Aditya Kusko
Claire Tollner
Juan Wieser
Kaitlin Ostrosky
Jeanfrancois Venere
Kadeem Flosi
Adams Morasca
Ricardo Gaucho
Silvio Slusarski
David Darakjy
Stacey Maclead
Deepesh Chui
Aruna Figeroa
Chavez Briddick
Octavia Malet
Emily Whobrey
Darci Poquette
Emily Whobrey
Costa Dilliard
Munro Ferencz
Johnson Sergi
James Butt
Wickens Nestle
Jennifer Amigon
Maisha Rulapaugh
IdCountryDate
1000Japan2026-05-20
1001Italy2026-06-01
1002Italy2026-05-31
1003Argentina2026-06-04
1004Canada2026-06-06
1005Canada2026-06-07
1006Italy2026-06-12
1007Italy2026-06-14
1008Canada2026-05-25
1009India2026-05-23
1010United Kingdom2026-05-22
1011Italy2026-06-05
1012Australia2026-06-14
1013Canada2026-06-07
1014India2026-06-04
1015India2026-06-15
1016Australia2026-06-06
1017Italy2026-06-03
1018Brazil2026-06-01
1019Italy2026-06-03
1020Spain2026-06-11
1021Canada2026-06-12
1022Spain2026-05-27
1023Germany2026-06-15
1024United Kingdom2026-06-04
1025Italy2026-06-08
1026India2026-06-12
1027India2026-06-09
1028India2026-06-06
1029Brazil2026-06-07
1030Russia2026-05-26
1031Argentina2026-06-13
1032Germany2026-05-21
1033India2026-06-02
1034India2026-05-25
1035Canada2026-05-27
1036Germany2026-06-08
1037Brazil2026-06-15
1038Russia2026-05-21
1039Italy2026-05-23
1040Argentina2026-06-06
1041France2026-06-03
1042Argentina2026-06-12
1043France2026-06-09
1044Australia2026-06-14
1045France2026-05-25
1046Argentina2026-06-08
1047Argentina2026-05-23
1048Brazil2026-05-30
1049Russia2026-06-07

On-Demand Data

NameIdCountryDate
Alejandro Perin1000Japan2026-06-02
Ivar Paprocki1001Brazil2026-06-08
Johnson Sergi1002Spain2026-06-08
Faith Gillian1003Spain2026-05-22
Silvio Slusarski1004Germany2026-06-15
Arvin Albares1005Germany2026-05-24
Juan Wieser1006Russia2026-05-29
Aika Inouye1007India2026-05-30
Mayumi Kolmetz1008Spain2026-06-07
Munro Ferencz1009Russia2026-05-19
Jones Vocelka1010Russia2026-05-20
Sinclair Waycott1011United Kingdom2026-05-24
Claire Tollner1012France2026-06-13
Chavez Briddick1013Japan2026-06-01
Izzy Garufi1014Germany2026-05-26
Ricardo Gaucho1015Russia2026-06-01
Maria Marrier1016France2026-06-10
Juan Wieser1017Canada2026-05-23
Leja Caldarera1018United Kingdom2026-06-13
James Butt1019Russia2026-06-04
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Kadeem FlosiBrazilBernardo Dominic PROPOSAL
Clifford RimSpainAsiya Javayant PROPOSAL
Johnson SergiGermanyIoni Bowcher RENEWAL
Costa DilliardAustraliaXuxue Feng RENEWAL
Maisha RulapaughAustraliaStephen Shaw UNQUALIFIED
Deepesh ChuiBrazilIvan Magalhaes NEW
Murillo MaletBrazilIvan Magalhaes RENEWAL
Juan WieserUnited KingdomAnna Fali RENEWAL
Morrow RutaGermanyIvan Magalhaes QUALIFIED
Deepesh ChuiUnited KingdomXuxue Feng NEW
Stacey MacleadUnited KingdomIvan Magalhaes NEGOTIATION
Jeanfrancois VenereIndiaAsiya Javayant QUALIFIED
Maria MarrierUnited KingdomAsiya Javayant PROPOSAL
Kadeem FlosiItalyAmy Elsner NEGOTIATION
Johnson SergiItalyBernardo Dominic PROPOSAL
Maria MarrierSpainIoni Bowcher PROPOSAL
Aruna FigeroaArgentinaIvan Magalhaes NEGOTIATION
Kaitlin OstroskyUnited KingdomAmy Elsner RENEWAL
Octavia MaletRussiaIvan Magalhaes RENEWAL
Kaitlin OstroskyJapanStephen Shaw UNQUALIFIED
Ashley DoeArgentinaBernardo Dominic RENEWAL
Isabel BowleyBrazilOnyama Limba UNQUALIFIED
Salvatore StockhamIndiaElwin Sharvill RENEWAL
Salvatore StockhamIndiaIoni Bowcher NEW
Deepesh ChuiRussiaIoni Bowcher UNQUALIFIED
Adams MorascaBrazilAmy Elsner NEGOTIATION
Smith GlickIndiaAsiya Javayant NEGOTIATION
Misaki RoysterItalyAnna Fali PROPOSAL
Octavia MaletJapanElwin Sharvill QUALIFIED
Salvatore StockhamAustraliaAmy Elsner QUALIFIED
Jennifer AmigonCanadaBernardo Dominic RENEWAL
Aditya KuskoCanadaAmy Elsner UNQUALIFIED
Jefferson SchemmerArgentinaStephen Shaw NEGOTIATION
Maria MarrierRussiaOnyama Limba UNQUALIFIED
Ashley DoeItalyAnna Fali NEGOTIATION
Mujtaba NickaSpainAnna Fali NEW
Aruna FigeroaRussiaAnna Fali RENEWAL
James ButtCanadaAmy Elsner NEGOTIATION
Alejandro PerinRussiaElwin Sharvill QUALIFIED
Misaki RoysterIndiaIoni Bowcher 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>