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
Francesco ShinkoSpainElwin Sharvill UNQUALIFIED
Jeanfrancois VenereIndiaAsiya Javayant NEW
Darci PoquetteGermanyXuxue Feng NEW
Jeanfrancois VenereAustraliaAnna Fali NEW
Chavez BriddickGermanyXuxue Feng PROPOSAL
Antonio CaudyFranceAsiya Javayant NEGOTIATION
Misaki RoysterSpainOnyama Limba RENEWAL
Juan WieserItalyAnna Fali RENEWAL
Emily WhobreyGermanyIoni Bowcher NEGOTIATION
Darci PoquetteFranceBernardo Dominic RENEWAL
Murillo MaletJapanAmy Elsner UNQUALIFIED
Claire TollnerJapanBernardo Dominic RENEWAL
Cody SaylorsArgentinaStephen Shaw UNQUALIFIED
Sinclair WaycottIndiaOnyama Limba NEW
Maisha RulapaughIndiaBernardo Dominic QUALIFIED
Munro FerenczUnited KingdomXuxue Feng QUALIFIED
Alejandro PerinFranceIoni Bowcher RENEWAL
Murillo MaletUnited KingdomBernardo Dominic NEW
Darci PoquetteFranceIvan Magalhaes QUALIFIED
Sinclair WaycottGermanyXuxue Feng RENEWAL
Faith GillianAustraliaAsiya Javayant QUALIFIED
Clifford RimRussiaAnna Fali QUALIFIED
Isabel BowleyUnited KingdomAsiya Javayant UNQUALIFIED
Maria MarrierGermanyAsiya Javayant QUALIFIED
Jefferson SchemmerSpainXuxue Feng UNQUALIFIED
Darci PoquetteCanadaBernardo Dominic UNQUALIFIED
Sinclair WaycottJapanStephen Shaw PROPOSAL
Ashley DoeGermanyIoni Bowcher QUALIFIED
Izzy GarufiArgentinaAmy Elsner NEGOTIATION
Munro FerenczItalyIvan Magalhaes UNQUALIFIED
Leja CaldareraBrazilBernardo Dominic PROPOSAL
Wickens NestleAustraliaBernardo Dominic UNQUALIFIED
Ricardo GauchoIndiaXuxue Feng QUALIFIED
Isabel BowleyItalyAnna Fali NEW
Arvin AlbaresCanadaBernardo Dominic QUALIFIED
Mayumi KolmetzSpainOnyama Limba UNQUALIFIED
Ivar PaprockiBrazilAmy Elsner NEW
Chavez BriddickUnited KingdomAsiya Javayant UNQUALIFIED
Mujtaba NickaGermanyAsiya Javayant UNQUALIFIED
Salvatore StockhamUnited KingdomIvan Magalhaes UNQUALIFIED
Greenwood BologniaRussiaXuxue Feng PROPOSAL
Mujtaba NickaJapanAsiya Javayant PROPOSAL
Claire TollnerSpainOnyama Limba NEW
Stacey MacleadJapanIoni Bowcher NEGOTIATION
Jones VocelkaFranceElwin Sharvill NEW
Adams MorascaJapanIvan Magalhaes NEGOTIATION
Deepesh ChuiItalyOnyama Limba RENEWAL
Chavez BriddickIndiaBernardo Dominic QUALIFIED
Aditya KuskoGermanyAnna Fali QUALIFIED
David DarakjyUnited KingdomStephen Shaw QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Deepesh ChuiFranceAsiya Javayant PROPOSAL
Costa DilliardFranceElwin Sharvill NEW
Greenwood BologniaSpainOnyama Limba QUALIFIED
Silvio SlusarskiIndiaIoni Bowcher UNQUALIFIED
Kaitlin OstroskyRussiaAsiya Javayant NEW
Sinclair WaycottArgentinaAmy Elsner NEGOTIATION
Jones VocelkaArgentinaAmy Elsner UNQUALIFIED
Julie StensethCanadaAmy Elsner PROPOSAL
Juan WieserJapanElwin Sharvill RENEWAL
Aika InouyeAustraliaIoni Bowcher UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Nicolas IturbideIndia2026-04-10Dorl, James J Esq UNQUALIFIED80Asiya Javayant
1001James ButtBrazil2026-04-12Rangoni Of Florence UNQUALIFIED89Bernardo Dominic
1002Izzy GarufiSpain2026-04-06Rangoni Of Florence RENEWAL19Stephen Shaw
1003Octavia MaletItaly2026-04-14Dorl, James J Esq UNQUALIFIED0Anna Fali
1004Murillo MaletRussia2026-04-11Benton, John B Jr UNQUALIFIED57Bernardo Dominic
1005Deepesh ChuiRussia2026-04-05Buckley Miller Wright NEGOTIATION36Ioni Bowcher
1006Ricardo GauchoSpain2026-04-12Rousseaux, Michael Esq NEGOTIATION54Asiya Javayant
1007Wickens NestleJapan2026-04-21Commercial Press NEGOTIATION66Amy Elsner
1008Stacey MacleadArgentina2026-04-16Truhlar And Truhlar Attys RENEWAL55Stephen Shaw
1009Maisha RulapaughFrance2026-04-21Feiner Bros QUALIFIED98Ioni Bowcher
1010Salvatore StockhamCanada2026-04-13Commercial Press QUALIFIED84Stephen Shaw
1011Sinclair WaycottBrazil2026-04-21Benton, John B Jr PROPOSAL49Stephen Shaw
1012Johnson SergiItaly2026-04-27King, Christopher A Esq PROPOSAL91Stephen Shaw
1013Juan WieserCanada2026-04-12Truhlar And Truhlar Attys PROPOSAL12Amy Elsner
1014Greenwood BologniaAustralia2026-04-02King, Christopher A Esq QUALIFIED1Ivan Magalhaes
1015Ricardo GauchoItaly2026-04-01Chapman, Ross E Esq UNQUALIFIED24Elwin Sharvill
1016Isabel BowleyJapan2026-04-25Rousseaux, Michael Esq RENEWAL79Anna Fali
1017Aika InouyeBrazil2026-04-06King, Christopher A Esq NEGOTIATION11Anna Fali
1018Jennifer AmigonGermany2026-04-08Chapman, Ross E Esq RENEWAL82Onyama Limba
1019Murillo MaletIndia2026-04-08Printing Dimensions NEW55Ivan Magalhaes
1020Jefferson SchemmerJapan2026-04-27Chanay, Jeffrey A Esq QUALIFIED18Amy Elsner
1021Leja CaldareraItaly2026-04-10Commercial Press PROPOSAL68Elwin Sharvill
1022Ashley DoeUnited Kingdom2026-04-15Rousseaux, Michael Esq PROPOSAL11Amy Elsner
1023Nicolas IturbideCanada2026-04-09Rangoni Of Florence PROPOSAL42Anna Fali
1024Deepesh ChuiJapan2026-04-27King, Christopher A Esq RENEWAL44Bernardo Dominic
1025Chavez BriddickIndia2026-04-26Benton, John B Jr UNQUALIFIED29Stephen Shaw
1026Juan WieserCanada2026-04-06Printing Dimensions NEW71Amy Elsner
1027Deepesh ChuiUnited Kingdom2026-04-10Rousseaux, Michael Esq NEGOTIATION48Stephen Shaw
1028Costa DilliardAustralia2026-04-12Truhlar And Truhlar Attys UNQUALIFIED90Stephen Shaw
1029Johnson SergiAustralia2026-04-14Morlong Associates NEGOTIATION99Xuxue Feng
1030Ashley DoeAustralia2026-04-14Buckley Miller Wright QUALIFIED10Stephen Shaw
1031Jones VocelkaSpain2026-04-04Benton, John B Jr NEGOTIATION77Amy Elsner
1032Julie StensethCanada2026-04-21Commercial Press UNQUALIFIED44Bernardo Dominic
1033Jeanfrancois VenereBrazil2026-04-06Rousseaux, Michael Esq NEW83Onyama Limba
1034Francesco ShinkoCanada2026-04-19Truhlar And Truhlar Attys PROPOSAL61Onyama Limba
1035Maria MarrierAustralia2026-04-18Chemel, James L Cpa RENEWAL30Xuxue Feng
1036James ButtItaly2026-04-14Dorl, James J Esq UNQUALIFIED35Amy Elsner
1037Deepesh ChuiGermany2026-04-23Feltz Printing Service RENEWAL4Asiya Javayant
1038Johnson SergiItaly2026-04-09Rousseaux, Michael Esq UNQUALIFIED64Anna Fali
1039Rodrigues CampainGermany2026-04-25Feiner Bros RENEWAL43Ioni Bowcher
1040Jones VocelkaUnited Kingdom2026-04-13Feiner Bros QUALIFIED39Xuxue Feng
1041Nicolas IturbideJapan2026-04-08Dorl, James J Esq NEGOTIATION41Stephen Shaw
1042Maria MarrierArgentina2026-04-21Commercial Press PROPOSAL32Onyama Limba
1043Emily WhobreyItaly2026-04-02Chemel, James L Cpa UNQUALIFIED75Elwin Sharvill
1044Jennifer AmigonIndia2026-04-08Dorl, James J Esq NEGOTIATION86Ivan Magalhaes
1045Silvio SlusarskiFrance2026-04-27Benton, John B Jr QUALIFIED2Xuxue Feng
1046Silvio SlusarskiBrazil2026-04-25Chemel, James L Cpa UNQUALIFIED34Anna Fali
1047Chavez BriddickFrance2026-04-16Benton, John B Jr UNQUALIFIED25Asiya Javayant
1048Aika InouyeArgentina2026-04-15Chemel, James L Cpa NEW11Bernardo Dominic
1049Izzy GarufiGermany2026-03-30Buckley Miller Wright QUALIFIED99Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Izzy GarufiGermanyXuxue Feng QUALIFIED
Jones VocelkaSpainAnna Fali PROPOSAL
Smith GlickFranceIoni Bowcher RENEWAL
Ricardo GauchoJapanAsiya Javayant NEGOTIATION
Ricardo GauchoJapanAsiya Javayant UNQUALIFIED
Aditya KuskoGermanyAnna Fali NEGOTIATION
Sinclair WaycottJapanBernardo Dominic NEGOTIATION
Adams MorascaItalyStephen Shaw QUALIFIED
Jennifer AmigonCanadaBernardo Dominic UNQUALIFIED
Cody SaylorsIndiaAmy Elsner PROPOSAL
Aruna FigeroaCanadaBernardo Dominic NEW
Sinclair WaycottUnited KingdomAnna Fali NEW
Isabel BowleyBrazilBernardo Dominic UNQUALIFIED
Arvin AlbaresRussiaIoni Bowcher PROPOSAL
Morrow RutaFranceBernardo Dominic NEGOTIATION
Jefferson SchemmerJapanAsiya Javayant UNQUALIFIED
Misaki RoysterArgentinaAnna Fali RENEWAL
Maisha RulapaughCanadaIoni Bowcher NEGOTIATION
Salvatore StockhamRussiaAmy Elsner UNQUALIFIED
Deepesh ChuiJapanIvan Magalhaes PROPOSAL
Alejandro PerinBrazilAsiya Javayant UNQUALIFIED
Morrow RutaRussiaStephen Shaw QUALIFIED
Antonio CaudyFranceOnyama Limba NEGOTIATION
Ricardo GauchoGermanyAnna Fali RENEWAL
Aruna FigeroaArgentinaAmy Elsner PROPOSAL
Deepesh ChuiGermanyStephen Shaw RENEWAL
Julie StensethGermanyElwin Sharvill RENEWAL
Silvio SlusarskiSpainAmy Elsner RENEWAL
Jefferson SchemmerCanadaStephen Shaw QUALIFIED
Wickens NestleAustraliaIoni Bowcher QUALIFIED
Stacey MacleadIndiaOnyama Limba UNQUALIFIED
Ivar PaprockiJapanBernardo Dominic UNQUALIFIED
Stacey MacleadRussiaAsiya Javayant QUALIFIED
Octavia MaletIndiaBernardo Dominic PROPOSAL
Isabel BowleyAustraliaIvan Magalhaes QUALIFIED
Ricardo GauchoCanadaXuxue Feng NEGOTIATION
Faith GillianItalyOnyama Limba UNQUALIFIED
Costa DilliardJapanOnyama Limba PROPOSAL
Antonio CaudyArgentinaIoni Bowcher QUALIFIED
Jeanfrancois VenereAustraliaAmy Elsner PROPOSAL
Murillo MaletIndiaBernardo Dominic PROPOSAL
Francesco ShinkoArgentinaIoni Bowcher NEW
Smith GlickIndiaAmy Elsner RENEWAL
James ButtBrazilXuxue Feng NEW
Aruna FigeroaUnited KingdomAmy Elsner QUALIFIED
Juan WieserAustraliaXuxue Feng QUALIFIED
Murillo MaletBrazilIvan Magalhaes NEGOTIATION
Munro FerenczSpainIoni Bowcher UNQUALIFIED
Isabel BowleyRussiaXuxue Feng RENEWAL
Munro FerenczJapanIvan Magalhaes NEGOTIATION
Frozen Columns
Name
Antonio Caudy
Maria Marrier
Leja Caldarera
Antonio Caudy
Clifford Rim
Silvio Slusarski
Tony Foller
Kaitlin Ostrosky
Isabel Bowley
Ashley Doe
Maria Marrier
Kadeem Flosi
Jefferson Schemmer
Aditya Kusko
Munro Ferencz
Silvio Slusarski
Cody Saylors
Aditya Kusko
Izzy Garufi
Munro Ferencz
Isabel Bowley
Murillo Malet
Aruna Figeroa
Jennifer Amigon
Maisha Rulapaugh
Aika Inouye
Arvin Albares
Octavia Malet
Claire Tollner
Maisha Rulapaugh
Mujtaba Nicka
Jefferson Schemmer
Kaitlin Ostrosky
Arvin Albares
Nicolas Iturbide
James Butt
Jones Vocelka
Smith Glick
Salvatore Stockham
Francesco Shinko
Mayumi Kolmetz
Morrow Ruta
Tony Foller
Leon Oldroyd
Tony Foller
Costa Dilliard
Jefferson Schemmer
Costa Dilliard
Kadeem Flosi
Cody Saylors
IdCountryDate
1000France2026-04-04
1001Canada2026-04-12
1002Italy2026-04-21
1003Australia2026-04-22
1004Argentina2026-04-08
1005Italy2026-04-01
1006Canada2026-03-31
1007Australia2026-04-16
1008Spain2026-04-19
1009Japan2026-03-29
1010United Kingdom2026-04-25
1011France2026-04-05
1012India2026-03-30
1013India2026-04-04
1014Japan2026-04-19
1015Italy2026-03-31
1016Canada2026-04-04
1017Australia2026-04-12
1018Germany2026-04-11
1019Japan2026-04-23
1020Canada2026-03-30
1021Japan2026-04-27
1022Japan2026-03-29
1023France2026-03-30
1024India2026-04-09
1025Brazil2026-04-24
1026Germany2026-03-31
1027United Kingdom2026-04-16
1028Japan2026-04-18
1029Russia2026-04-23
1030Spain2026-04-04
1031Japan2026-04-17
1032Japan2026-04-08
1033Brazil2026-04-23
1034Spain2026-04-05
1035Spain2026-04-15
1036United Kingdom2026-04-15
1037India2026-04-11
1038France2026-04-21
1039Brazil2026-04-27
1040Argentina2026-03-31
1041Germany2026-04-22
1042Brazil2026-04-17
1043Germany2026-04-17
1044Germany2026-04-07
1045Japan2026-04-16
1046Canada2026-04-15
1047Argentina2026-04-04
1048Italy2026-04-02
1049Brazil2026-04-23

On-Demand Data

NameIdCountryDate
Isabel Bowley1000Canada2026-04-25
Kaitlin Ostrosky1001Germany2026-04-11
Octavia Malet1002Russia2026-03-29
Tony Foller1003Spain2026-04-10
Antonio Caudy1004Brazil2026-04-08
Kaitlin Ostrosky1005Brazil2026-03-29
Arvin Albares1006Canada2026-04-06
Juan Wieser1007Germany2026-04-06
Aditya Kusko1008Spain2026-04-09
Aruna Figeroa1009Russia2026-04-14
Julie Stenseth1010United Kingdom2026-04-26
Octavia Malet1011Brazil2026-03-31
Julie Stenseth1012Germany2026-04-27
Ivar Paprocki1013Argentina2026-04-08
Emily Whobrey1014Italy2026-04-22
Costa Dilliard1015Japan2026-03-30
Jennifer Amigon1016United Kingdom2026-04-04
Deepesh Chui1017Australia2026-04-17
Darci Poquette1018Australia2026-04-14
Salvatore Stockham1019Germany2026-04-04
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Claire TollnerArgentinaIoni Bowcher RENEWAL
Leja CaldareraFranceAmy Elsner QUALIFIED
Jefferson SchemmerSpainAmy Elsner NEGOTIATION
Clifford RimIndiaOnyama Limba PROPOSAL
Jones VocelkaFranceXuxue Feng UNQUALIFIED
Antonio CaudyUnited KingdomIvan Magalhaes PROPOSAL
Smith GlickFranceAmy Elsner PROPOSAL
Claire TollnerSpainAmy Elsner QUALIFIED
Maria MarrierItalyIoni Bowcher UNQUALIFIED
Nicolas IturbideCanadaStephen Shaw RENEWAL
Leja CaldareraBrazilIoni Bowcher QUALIFIED
Smith GlickArgentinaElwin Sharvill NEW
Arvin AlbaresJapanAsiya Javayant RENEWAL
Aika InouyeArgentinaElwin Sharvill UNQUALIFIED
Jones VocelkaAustraliaBernardo Dominic NEGOTIATION
Morrow RutaItalyAsiya Javayant UNQUALIFIED
Munro FerenczJapanElwin Sharvill UNQUALIFIED
Clifford RimJapanStephen Shaw NEW
Ricardo GauchoAustraliaAnna Fali RENEWAL
Octavia MaletUnited KingdomBernardo Dominic RENEWAL
Munro FerenczCanadaBernardo Dominic NEW
Wickens NestleSpainAnna Fali QUALIFIED
Francesco ShinkoAustraliaAsiya Javayant NEW
Wickens NestleAustraliaAnna Fali QUALIFIED
Morrow RutaArgentinaAmy Elsner UNQUALIFIED
Ivar PaprockiFranceAnna Fali UNQUALIFIED
Juan WieserJapanAsiya Javayant QUALIFIED
Antonio CaudyAustraliaAmy Elsner RENEWAL
Arvin AlbaresUnited KingdomElwin Sharvill UNQUALIFIED
Rodrigues CampainIndiaElwin Sharvill PROPOSAL
Maria MarrierItalyIvan Magalhaes NEW
Wickens NestleAustraliaElwin Sharvill NEW
Kaitlin OstroskyJapanElwin Sharvill PROPOSAL
Salvatore StockhamFranceAsiya Javayant NEGOTIATION
Chavez BriddickGermanyBernardo Dominic RENEWAL
Ricardo GauchoFranceElwin Sharvill NEGOTIATION
Aruna FigeroaSpainBernardo Dominic RENEWAL
Jeanfrancois VenereRussiaXuxue Feng QUALIFIED
Ashley DoeBrazilAsiya Javayant NEW
Jefferson SchemmerGermanyAsiya Javayant PROPOSAL

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