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
Isabel BowleyAustraliaOnyama Limba NEW
Chavez BriddickBrazilIoni Bowcher RENEWAL
Greenwood BologniaRussiaAnna Fali QUALIFIED
Alejandro PerinRussiaIoni Bowcher NEGOTIATION
Nicolas IturbideUnited KingdomElwin Sharvill QUALIFIED
David DarakjySpainBernardo Dominic NEW
Ivar PaprockiAustraliaElwin Sharvill PROPOSAL
Jeanfrancois VenereGermanyIvan Magalhaes PROPOSAL
Jefferson SchemmerBrazilAsiya Javayant QUALIFIED
Smith GlickCanadaAmy Elsner RENEWAL
Leja CaldareraUnited KingdomElwin Sharvill UNQUALIFIED
Wickens NestleAustraliaBernardo Dominic PROPOSAL
Deepesh ChuiAustraliaXuxue Feng RENEWAL
Ashley DoeAustraliaIoni Bowcher NEW
Ricardo GauchoJapanIoni Bowcher NEGOTIATION
Jones VocelkaBrazilElwin Sharvill RENEWAL
Aika InouyeItalyIvan Magalhaes NEGOTIATION
Munro FerenczCanadaOnyama Limba QUALIFIED
Greenwood BologniaAustraliaIvan Magalhaes QUALIFIED
Aruna FigeroaItalyIvan Magalhaes RENEWAL
Deepesh ChuiBrazilAsiya Javayant RENEWAL
Jeanfrancois VenereUnited KingdomAmy Elsner PROPOSAL
Faith GillianRussiaAnna Fali NEGOTIATION
Silvio SlusarskiIndiaAnna Fali PROPOSAL
Arvin AlbaresIndiaIoni Bowcher PROPOSAL
Antonio CaudyGermanyElwin Sharvill UNQUALIFIED
Arvin AlbaresBrazilIvan Magalhaes NEGOTIATION
Aika InouyeIndiaXuxue Feng RENEWAL
Chavez BriddickAustraliaAnna Fali RENEWAL
Smith GlickArgentinaStephen Shaw QUALIFIED
Maisha RulapaughRussiaOnyama Limba NEGOTIATION
Tony FollerArgentinaStephen Shaw PROPOSAL
Sinclair WaycottArgentinaIoni Bowcher UNQUALIFIED
Leon OldroydAustraliaAmy Elsner QUALIFIED
Silvio SlusarskiRussiaElwin Sharvill NEGOTIATION
Leja CaldareraAustraliaIvan Magalhaes QUALIFIED
Kaitlin OstroskyArgentinaOnyama Limba RENEWAL
Maisha RulapaughFranceAnna Fali RENEWAL
Stacey MacleadArgentinaIoni Bowcher QUALIFIED
Johnson SergiJapanAmy Elsner PROPOSAL
Misaki RoysterSpainXuxue Feng NEGOTIATION
Murillo MaletRussiaOnyama Limba PROPOSAL
Mayumi KolmetzRussiaIvan Magalhaes UNQUALIFIED
Deepesh ChuiGermanyAsiya Javayant RENEWAL
Jefferson SchemmerFranceBernardo Dominic NEW
Munro FerenczCanadaAmy Elsner QUALIFIED
Mayumi KolmetzFranceIoni Bowcher RENEWAL
Stacey MacleadItalyStephen Shaw QUALIFIED
Ivar PaprockiFranceXuxue Feng RENEWAL
Murillo MaletIndiaIvan Magalhaes PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Julie StensethSpainIvan Magalhaes NEGOTIATION
Murillo MaletBrazilAmy Elsner RENEWAL
Chavez BriddickArgentinaAmy Elsner QUALIFIED
Juan WieserItalyIoni Bowcher NEW
Wickens NestleGermanyElwin Sharvill RENEWAL
Johnson SergiArgentinaAsiya Javayant NEGOTIATION
Aika InouyeIndiaIvan Magalhaes NEGOTIATION
Mujtaba NickaRussiaStephen Shaw PROPOSAL
Leja CaldareraCanadaAnna Fali PROPOSAL
Juan WieserArgentinaBernardo Dominic NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jeanfrancois VenereUnited Kingdom2026-04-25Rousseaux, Michael Esq RENEWAL59Bernardo Dominic
1001Costa DilliardUnited Kingdom2026-04-08Printing Dimensions NEGOTIATION28Amy Elsner
1002Darci PoquetteArgentina2026-04-21Rousseaux, Michael Esq NEGOTIATION84Ioni Bowcher
1003Clifford RimFrance2026-04-24Printing Dimensions UNQUALIFIED8Xuxue Feng
1004Johnson SergiJapan2026-04-13Morlong Associates PROPOSAL27Onyama Limba
1005Ricardo GauchoRussia2026-04-06Chemel, James L Cpa UNQUALIFIED53Stephen Shaw
1006Alejandro PerinAustralia2026-04-21Rousseaux, Michael Esq NEGOTIATION81Stephen Shaw
1007David DarakjyJapan2026-04-20Buckley Miller Wright QUALIFIED79Elwin Sharvill
1008Costa DilliardGermany2026-04-05Buckley Miller Wright QUALIFIED27Elwin Sharvill
1009Jennifer AmigonGermany2026-04-03Benton, John B Jr QUALIFIED56Asiya Javayant
1010Sinclair WaycottJapan2026-04-21Feiner Bros QUALIFIED97Xuxue Feng
1011Morrow RutaFrance2026-04-19Feiner Bros RENEWAL20Asiya Javayant
1012Julie StensethRussia2026-04-16Chemel, James L Cpa UNQUALIFIED93Stephen Shaw
1013Sinclair WaycottUnited Kingdom2026-03-30Feltz Printing Service UNQUALIFIED48Asiya Javayant
1014Jones VocelkaRussia2026-04-01Chemel, James L Cpa QUALIFIED58Ioni Bowcher
1015Faith GillianUnited Kingdom2026-04-20Rousseaux, Michael Esq PROPOSAL71Anna Fali
1016Maria MarrierFrance2026-04-01Rangoni Of Florence RENEWAL33Bernardo Dominic
1017Claire TollnerItaly2026-04-23Feltz Printing Service NEGOTIATION90Ioni Bowcher
1018Misaki RoysterRussia2026-04-22Chanay, Jeffrey A Esq NEGOTIATION90Stephen Shaw
1019Jeanfrancois VenereAustralia2026-04-16Rousseaux, Michael Esq PROPOSAL10Asiya Javayant
1020Maisha RulapaughFrance2026-04-11Rousseaux, Michael Esq UNQUALIFIED52Asiya Javayant
1021Smith GlickAustralia2026-04-23Rousseaux, Michael Esq UNQUALIFIED53Onyama Limba
1022Isabel BowleyRussia2026-04-05Dorl, James J Esq QUALIFIED15Amy Elsner
1023Cody SaylorsCanada2026-04-04Morlong Associates UNQUALIFIED21Xuxue Feng
1024Maisha RulapaughFrance2026-04-18King, Christopher A Esq NEW9Asiya Javayant
1025Greenwood BologniaArgentina2026-04-17Chemel, James L Cpa UNQUALIFIED4Elwin Sharvill
1026Antonio CaudyAustralia2026-04-12Chemel, James L Cpa NEGOTIATION25Stephen Shaw
1027Wickens NestleFrance2026-04-18Feltz Printing Service NEW24Asiya Javayant
1028Arvin AlbaresGermany2026-04-05Commercial Press NEW62Stephen Shaw
1029Leon OldroydArgentina2026-04-24Chapman, Ross E Esq NEW47Bernardo Dominic
1030Maisha RulapaughRussia2026-04-15Chanay, Jeffrey A Esq NEGOTIATION96Amy Elsner
1031Tony FollerCanada2026-04-03Benton, John B Jr RENEWAL55Bernardo Dominic
1032Aika InouyeBrazil2026-04-20Dorl, James J Esq NEGOTIATION83Ivan Magalhaes
1033Francesco ShinkoAustralia2026-04-01Rousseaux, Michael Esq RENEWAL95Amy Elsner
1034Adams MorascaBrazil2026-04-09Chanay, Jeffrey A Esq PROPOSAL55Stephen Shaw
1035Juan WieserArgentina2026-04-11Rangoni Of Florence QUALIFIED22Asiya Javayant
1036Izzy GarufiIndia2026-04-03Printing Dimensions PROPOSAL62Bernardo Dominic
1037Chavez BriddickBrazil2026-04-21Benton, John B Jr NEGOTIATION8Elwin Sharvill
1038Silvio SlusarskiRussia2026-04-15Commercial Press NEGOTIATION35Ioni Bowcher
1039Nicolas IturbideGermany2026-04-02Morlong Associates RENEWAL18Ioni Bowcher
1040Ashley DoeCanada2026-04-17Chemel, James L Cpa NEW48Asiya Javayant
1041Nicolas IturbideGermany2026-03-31Printing Dimensions NEW58Ivan Magalhaes
1042Munro FerenczAustralia2026-04-03Rousseaux, Michael Esq NEGOTIATION39Ioni Bowcher
1043Cody SaylorsFrance2026-04-06Feltz Printing Service UNQUALIFIED54Xuxue Feng
1044Darci PoquetteCanada2026-04-10Rousseaux, Michael Esq NEW33Ivan Magalhaes
1045Smith GlickCanada2026-04-15Chemel, James L Cpa NEGOTIATION27Anna Fali
1046James ButtItaly2026-04-09Rangoni Of Florence RENEWAL3Anna Fali
1047Faith GillianIndia2026-04-05Feltz Printing Service QUALIFIED24Stephen Shaw
1048Johnson SergiArgentina2026-03-31Truhlar And Truhlar Attys QUALIFIED96Ivan Magalhaes
1049Julie StensethRussia2026-04-15Feltz Printing Service NEGOTIATION56Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Aika InouyeJapanIoni Bowcher RENEWAL
Kaitlin OstroskyIndiaXuxue Feng QUALIFIED
Maisha RulapaughBrazilStephen Shaw RENEWAL
Octavia MaletFranceOnyama Limba NEW
Aruna FigeroaIndiaAnna Fali NEW
Munro FerenczUnited KingdomIvan Magalhaes RENEWAL
Francesco ShinkoUnited KingdomBernardo Dominic QUALIFIED
Stacey MacleadCanadaAnna Fali UNQUALIFIED
Darci PoquetteUnited KingdomIvan Magalhaes NEGOTIATION
Jeanfrancois VenereUnited KingdomAsiya Javayant RENEWAL
Darci PoquetteRussiaBernardo Dominic UNQUALIFIED
Leja CaldareraIndiaBernardo Dominic UNQUALIFIED
Murillo MaletIndiaXuxue Feng RENEWAL
Darci PoquetteUnited KingdomStephen Shaw NEW
Kadeem FlosiItalyElwin Sharvill PROPOSAL
Aruna FigeroaRussiaIvan Magalhaes NEGOTIATION
Leon OldroydSpainAmy Elsner UNQUALIFIED
Greenwood BologniaGermanyAsiya Javayant RENEWAL
Ricardo GauchoArgentinaBernardo Dominic NEGOTIATION
Rodrigues CampainArgentinaElwin Sharvill NEGOTIATION
Chavez BriddickCanadaXuxue Feng QUALIFIED
Misaki RoysterAustraliaIvan Magalhaes NEGOTIATION
Arvin AlbaresBrazilIvan Magalhaes UNQUALIFIED
Mayumi KolmetzUnited KingdomAsiya Javayant RENEWAL
Mayumi KolmetzBrazilIoni Bowcher QUALIFIED
Adams MorascaItalyAsiya Javayant QUALIFIED
Greenwood BologniaJapanAmy Elsner NEW
Aditya KuskoCanadaIoni Bowcher RENEWAL
Tony FollerItalyOnyama Limba RENEWAL
Aruna FigeroaBrazilAnna Fali PROPOSAL
Aika InouyeCanadaXuxue Feng QUALIFIED
Murillo MaletUnited KingdomOnyama Limba NEGOTIATION
Maria MarrierCanadaStephen Shaw NEW
Emily WhobreyRussiaIvan Magalhaes QUALIFIED
Murillo MaletUnited KingdomElwin Sharvill UNQUALIFIED
Salvatore StockhamCanadaXuxue Feng NEW
Octavia MaletArgentinaElwin Sharvill NEGOTIATION
Ivar PaprockiIndiaIoni Bowcher PROPOSAL
Kaitlin OstroskyArgentinaBernardo Dominic UNQUALIFIED
Faith GillianSpainAnna Fali NEGOTIATION
Adams MorascaGermanyElwin Sharvill NEGOTIATION
Tony FollerBrazilIoni Bowcher NEGOTIATION
Alejandro PerinRussiaAnna Fali RENEWAL
Sinclair WaycottBrazilIvan Magalhaes NEW
Silvio SlusarskiBrazilStephen Shaw PROPOSAL
Chavez BriddickBrazilXuxue Feng NEW
Francesco ShinkoIndiaBernardo Dominic QUALIFIED
David DarakjyCanadaElwin Sharvill PROPOSAL
Rodrigues CampainSpainStephen Shaw QUALIFIED
Faith GillianIndiaBernardo Dominic RENEWAL
Frozen Columns
Name
Deepesh Chui
James Butt
Costa Dilliard
Johnson Sergi
Alejandro Perin
Stacey Maclead
Rodrigues Campain
Izzy Garufi
Ivar Paprocki
Isabel Bowley
Jones Vocelka
Julie Stenseth
Aruna Figeroa
Silvio Slusarski
Greenwood Bolognia
Octavia Malet
Greenwood Bolognia
Claire Tollner
Kaitlin Ostrosky
David Darakjy
Mujtaba Nicka
Wickens Nestle
Chavez Briddick
Ashley Doe
Isabel Bowley
Jeanfrancois Venere
Octavia Malet
Jones Vocelka
Munro Ferencz
Rodrigues Campain
Maria Marrier
Leja Caldarera
Silvio Slusarski
Rodrigues Campain
Maria Marrier
Aika Inouye
Jennifer Amigon
Juan Wieser
Wickens Nestle
Aditya Kusko
Greenwood Bolognia
Jones Vocelka
Morrow Ruta
Leja Caldarera
Julie Stenseth
Tony Foller
Aika Inouye
Claire Tollner
Johnson Sergi
Maisha Rulapaugh
IdCountryDate
1000Japan2026-04-01
1001Brazil2026-04-25
1002Canada2026-04-17
1003Spain2026-04-14
1004France2026-03-28
1005Brazil2026-04-14
1006Argentina2026-04-21
1007Argentina2026-04-08
1008Brazil2026-04-23
1009Japan2026-04-05
1010Spain2026-04-05
1011Australia2026-04-22
1012United Kingdom2026-04-22
1013Russia2026-04-03
1014Russia2026-04-11
1015Spain2026-04-03
1016India2026-04-01
1017Japan2026-04-04
1018India2026-04-12
1019Spain2026-04-18
1020Brazil2026-04-11
1021France2026-04-14
1022Australia2026-03-28
1023Italy2026-04-20
1024Germany2026-03-28
1025France2026-04-15
1026France2026-04-17
1027Australia2026-04-22
1028Germany2026-04-17
1029Argentina2026-04-25
1030France2026-04-04
1031France2026-04-14
1032India2026-03-29
1033Spain2026-04-12
1034Japan2026-04-08
1035Germany2026-04-18
1036Germany2026-04-11
1037Brazil2026-03-30
1038India2026-03-30
1039Japan2026-03-30
1040India2026-04-05
1041Australia2026-04-15
1042Canada2026-04-09
1043Spain2026-04-11
1044Russia2026-04-21
1045Spain2026-04-23
1046India2026-04-23
1047Australia2026-04-14
1048Argentina2026-04-21
1049Spain2026-04-14

On-Demand Data

NameIdCountryDate
Morrow Ruta1000Spain2026-04-20
Juan Wieser1001Canada2026-04-18
David Darakjy1002Italy2026-04-13
Juan Wieser1003Japan2026-04-14
David Darakjy1004Japan2026-04-19
Salvatore Stockham1005Spain2026-04-13
Jennifer Amigon1006Italy2026-04-08
Leja Caldarera1007Russia2026-04-08
Mayumi Kolmetz1008France2026-04-25
Faith Gillian1009France2026-03-30
David Darakjy1010Germany2026-04-02
Adams Morasca1011Canada2026-04-03
Johnson Sergi1012Italy2026-04-21
Mujtaba Nicka1013Germany2026-04-06
Octavia Malet1014Australia2026-03-29
Salvatore Stockham1015Canada2026-04-10
Murillo Malet1016France2026-04-06
Jones Vocelka1017Canada2026-04-23
Stacey Maclead1018Germany2026-04-02
Leon Oldroyd1019Australia2026-04-01
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
David DarakjyCanadaXuxue Feng QUALIFIED
Ashley DoeCanadaOnyama Limba QUALIFIED
Aika InouyeItalyOnyama Limba NEW
Cody SaylorsSpainStephen Shaw UNQUALIFIED
Julie StensethArgentinaElwin Sharvill QUALIFIED
Claire TollnerGermanyAsiya Javayant PROPOSAL
Kaitlin OstroskyGermanyIoni Bowcher UNQUALIFIED
Darci PoquetteJapanIoni Bowcher UNQUALIFIED
Stacey MacleadIndiaIoni Bowcher PROPOSAL
Antonio CaudyUnited KingdomBernardo Dominic QUALIFIED
Isabel BowleyGermanyStephen Shaw NEW
Leja CaldareraFranceAnna Fali QUALIFIED
Murillo MaletSpainStephen Shaw NEW
Murillo MaletIndiaXuxue Feng UNQUALIFIED
Leja CaldareraRussiaElwin Sharvill UNQUALIFIED
Ivar PaprockiIndiaAnna Fali NEGOTIATION
Stacey MacleadSpainElwin Sharvill PROPOSAL
Misaki RoysterArgentinaIvan Magalhaes RENEWAL
Jefferson SchemmerAustraliaStephen Shaw RENEWAL
Faith GillianBrazilAnna Fali RENEWAL
Smith GlickBrazilIoni Bowcher PROPOSAL
Faith GillianItalyAmy Elsner PROPOSAL
David DarakjyItalyBernardo Dominic UNQUALIFIED
Clifford RimUnited KingdomAsiya Javayant QUALIFIED
Smith GlickFranceAmy Elsner PROPOSAL
Deepesh ChuiItalyIvan Magalhaes NEGOTIATION
Rodrigues CampainArgentinaAsiya Javayant PROPOSAL
Jeanfrancois VenereIndiaElwin Sharvill QUALIFIED
Ricardo GauchoBrazilAmy Elsner RENEWAL
James ButtSpainIoni Bowcher NEW
Alejandro PerinArgentinaOnyama Limba NEGOTIATION
Jefferson SchemmerJapanXuxue Feng NEW
Mujtaba NickaCanadaAsiya Javayant UNQUALIFIED
Isabel BowleyJapanAsiya Javayant NEGOTIATION
Silvio SlusarskiJapanAnna Fali PROPOSAL
Maisha RulapaughCanadaXuxue Feng RENEWAL
Isabel BowleyArgentinaAnna Fali PROPOSAL
Claire TollnerAustraliaIvan Magalhaes QUALIFIED
Maisha RulapaughUnited KingdomOnyama Limba PROPOSAL
Cody SaylorsAustraliaAsiya Javayant UNQUALIFIED

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