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
Mayumi KolmetzArgentinaAnna Fali QUALIFIED
Kaitlin OstroskyCanadaOnyama Limba NEGOTIATION
Octavia MaletItalyIoni Bowcher QUALIFIED
Sinclair WaycottItalyAmy Elsner RENEWAL
Tony FollerArgentinaElwin Sharvill NEGOTIATION
Francesco ShinkoArgentinaAmy Elsner NEGOTIATION
David DarakjyUnited KingdomAsiya Javayant NEW
Mujtaba NickaBrazilAmy Elsner NEGOTIATION
Ashley DoeRussiaIoni Bowcher RENEWAL
Cody SaylorsAustraliaElwin Sharvill RENEWAL
Smith GlickGermanyElwin Sharvill NEW
Maria MarrierCanadaAsiya Javayant PROPOSAL
Emily WhobreyUnited KingdomBernardo Dominic QUALIFIED
Arvin AlbaresAustraliaAmy Elsner RENEWAL
Faith GillianJapanAnna Fali PROPOSAL
Julie StensethCanadaBernardo Dominic NEW
David DarakjyRussiaStephen Shaw NEGOTIATION
Chavez BriddickAustraliaStephen Shaw RENEWAL
Sinclair WaycottRussiaOnyama Limba NEGOTIATION
Murillo MaletItalyIoni Bowcher PROPOSAL
David DarakjyRussiaAsiya Javayant PROPOSAL
Jennifer AmigonCanadaAnna Fali UNQUALIFIED
Ashley DoeBrazilIvan Magalhaes QUALIFIED
Costa DilliardGermanyAsiya Javayant NEGOTIATION
Alejandro PerinItalyStephen Shaw RENEWAL
Octavia MaletFranceOnyama Limba NEW
Cody SaylorsRussiaXuxue Feng QUALIFIED
Maria MarrierFranceAnna Fali UNQUALIFIED
Jefferson SchemmerBrazilOnyama Limba NEW
Salvatore StockhamUnited KingdomStephen Shaw RENEWAL
Salvatore StockhamAustraliaElwin Sharvill NEW
Alejandro PerinJapanAnna Fali UNQUALIFIED
Maisha RulapaughItalyIvan Magalhaes PROPOSAL
Adams MorascaUnited KingdomStephen Shaw UNQUALIFIED
Wickens NestleCanadaAmy Elsner PROPOSAL
Kadeem FlosiBrazilXuxue Feng RENEWAL
Sinclair WaycottFranceAmy Elsner RENEWAL
Wickens NestleGermanyAnna Fali UNQUALIFIED
Costa DilliardCanadaAnna Fali UNQUALIFIED
Juan WieserAustraliaBernardo Dominic NEW
David DarakjyGermanyOnyama Limba QUALIFIED
Silvio SlusarskiItalyIoni Bowcher UNQUALIFIED
Antonio CaudyArgentinaAsiya Javayant RENEWAL
Sinclair WaycottBrazilIvan Magalhaes NEW
Jennifer AmigonItalyBernardo Dominic NEW
Arvin AlbaresUnited KingdomElwin Sharvill NEW
Jeanfrancois VenereCanadaStephen Shaw PROPOSAL
Aditya KuskoArgentinaAsiya Javayant PROPOSAL
Isabel BowleyCanadaIvan Magalhaes NEGOTIATION
Leja CaldareraCanadaOnyama Limba QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Smith GlickAustraliaIoni Bowcher RENEWAL
Rodrigues CampainItalyBernardo Dominic UNQUALIFIED
Tony FollerBrazilOnyama Limba RENEWAL
Jefferson SchemmerGermanyOnyama Limba NEW
Ricardo GauchoBrazilAnna Fali RENEWAL
Adams MorascaRussiaIoni Bowcher NEW
Arvin AlbaresArgentinaBernardo Dominic NEGOTIATION
Deepesh ChuiAustraliaAsiya Javayant NEGOTIATION
James ButtUnited KingdomIvan Magalhaes PROPOSAL
Jennifer AmigonSpainIoni Bowcher UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Smith GlickBrazil2026-05-24Chanay, Jeffrey A Esq UNQUALIFIED56Asiya Javayant
1001Jefferson SchemmerItaly2026-05-27Feiner Bros NEGOTIATION42Amy Elsner
1002David DarakjyJapan2026-05-17Feiner Bros QUALIFIED43Xuxue Feng
1003Juan WieserAustralia2026-05-30Feiner Bros UNQUALIFIED18Ioni Bowcher
1004Jeanfrancois VenereGermany2026-06-03Morlong Associates RENEWAL65Stephen Shaw
1005Murillo MaletArgentina2026-06-01Dorl, James J Esq NEW43Bernardo Dominic
1006Aruna FigeroaArgentina2026-05-28Rangoni Of Florence UNQUALIFIED24Onyama Limba
1007Rodrigues CampainItaly2026-06-07Chemel, James L Cpa QUALIFIED89Asiya Javayant
1008Wickens NestleArgentina2026-05-28Feltz Printing Service QUALIFIED4Amy Elsner
1009Julie StensethAustralia2026-05-19Buckley Miller Wright PROPOSAL67Xuxue Feng
1010Ashley DoeArgentina2026-06-03Chapman, Ross E Esq QUALIFIED31Xuxue Feng
1011Tony FollerSpain2026-05-16Benton, John B Jr NEGOTIATION52Elwin Sharvill
1012Juan WieserJapan2026-05-26Benton, John B Jr UNQUALIFIED10Elwin Sharvill
1013Emily WhobreyIndia2026-05-31Printing Dimensions NEW71Amy Elsner
1014Antonio CaudyUnited Kingdom2026-05-30Commercial Press PROPOSAL64Stephen Shaw
1015Julie StensethJapan2026-05-28Chapman, Ross E Esq UNQUALIFIED5Bernardo Dominic
1016Nicolas IturbideUnited Kingdom2026-06-08King, Christopher A Esq NEGOTIATION14Ioni Bowcher
1017Chavez BriddickGermany2026-05-23Feiner Bros QUALIFIED36Anna Fali
1018Kaitlin OstroskyUnited Kingdom2026-06-08Feltz Printing Service NEGOTIATION70Ivan Magalhaes
1019Ricardo GauchoRussia2026-06-04Chapman, Ross E Esq PROPOSAL25Stephen Shaw
1020Cody SaylorsFrance2026-05-22Chapman, Ross E Esq NEGOTIATION19Anna Fali
1021Wickens NestleCanada2026-05-19Chanay, Jeffrey A Esq RENEWAL43Amy Elsner
1022Claire TollnerCanada2026-06-09Dorl, James J Esq QUALIFIED13Ioni Bowcher
1023Murillo MaletFrance2026-05-23Dorl, James J Esq NEW56Ivan Magalhaes
1024Ashley DoeBrazil2026-05-23King, Christopher A Esq PROPOSAL61Asiya Javayant
1025Maisha RulapaughItaly2026-06-01Truhlar And Truhlar Attys RENEWAL58Anna Fali
1026Mayumi KolmetzUnited Kingdom2026-05-29Morlong Associates NEGOTIATION11Stephen Shaw
1027Octavia MaletUnited Kingdom2026-05-13Buckley Miller Wright UNQUALIFIED16Asiya Javayant
1028Jennifer AmigonRussia2026-05-31Printing Dimensions NEGOTIATION87Onyama Limba
1029Antonio CaudyCanada2026-05-19Feiner Bros UNQUALIFIED25Xuxue Feng
1030Johnson SergiJapan2026-05-30Truhlar And Truhlar Attys RENEWAL36Ioni Bowcher
1031Munro FerenczArgentina2026-05-14Buckley Miller Wright RENEWAL29Bernardo Dominic
1032Kadeem FlosiItaly2026-06-06Chemel, James L Cpa PROPOSAL76Ioni Bowcher
1033Ivar PaprockiIndia2026-05-23Chapman, Ross E Esq UNQUALIFIED57Xuxue Feng
1034Ivar PaprockiJapan2026-05-21Buckley Miller Wright RENEWAL59Stephen Shaw
1035Adams MorascaCanada2026-06-11King, Christopher A Esq UNQUALIFIED65Xuxue Feng
1036Jefferson SchemmerJapan2026-06-05Chapman, Ross E Esq QUALIFIED85Ivan Magalhaes
1037David DarakjyJapan2026-06-01Chapman, Ross E Esq NEW55Stephen Shaw
1038Misaki RoysterSpain2026-05-31Truhlar And Truhlar Attys UNQUALIFIED6Elwin Sharvill
1039Jeanfrancois VenereArgentina2026-06-10Truhlar And Truhlar Attys QUALIFIED68Ioni Bowcher
1040Salvatore StockhamItaly2026-05-31Chapman, Ross E Esq UNQUALIFIED52Amy Elsner
1041Juan WieserSpain2026-05-16Morlong Associates PROPOSAL53Stephen Shaw
1042Jefferson SchemmerItaly2026-05-18Printing Dimensions UNQUALIFIED20Anna Fali
1043Maisha RulapaughRussia2026-06-10Morlong Associates PROPOSAL95Stephen Shaw
1044Antonio CaudyItaly2026-05-18Rousseaux, Michael Esq PROPOSAL9Bernardo Dominic
1045Leon OldroydJapan2026-05-17Chemel, James L Cpa PROPOSAL87Stephen Shaw
1046Morrow RutaItaly2026-05-17Rangoni Of Florence UNQUALIFIED58Ivan Magalhaes
1047Cody SaylorsIndia2026-06-01Truhlar And Truhlar Attys QUALIFIED36Anna Fali
1048Kaitlin OstroskyItaly2026-05-27Dorl, James J Esq NEW75Xuxue Feng
1049Darci PoquetteBrazil2026-05-13King, Christopher A Esq QUALIFIED20Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Clifford RimFranceBernardo Dominic QUALIFIED
Mujtaba NickaAustraliaIvan Magalhaes NEW
Jeanfrancois VenereSpainElwin Sharvill NEW
Octavia MaletSpainIoni Bowcher NEW
James ButtCanadaIoni Bowcher QUALIFIED
Arvin AlbaresCanadaElwin Sharvill RENEWAL
Clifford RimFranceOnyama Limba UNQUALIFIED
Kaitlin OstroskyFranceBernardo Dominic UNQUALIFIED
Aditya KuskoUnited KingdomElwin Sharvill PROPOSAL
Johnson SergiUnited KingdomAsiya Javayant UNQUALIFIED
Maria MarrierBrazilOnyama Limba PROPOSAL
Nicolas IturbideIndiaOnyama Limba PROPOSAL
Munro FerenczArgentinaElwin Sharvill UNQUALIFIED
James ButtBrazilStephen Shaw PROPOSAL
Costa DilliardAustraliaOnyama Limba UNQUALIFIED
Izzy GarufiBrazilBernardo Dominic RENEWAL
Murillo MaletRussiaIoni Bowcher PROPOSAL
Faith GillianRussiaAsiya Javayant UNQUALIFIED
Johnson SergiArgentinaBernardo Dominic QUALIFIED
Ricardo GauchoAustraliaElwin Sharvill QUALIFIED
Ashley DoeUnited KingdomStephen Shaw RENEWAL
Mujtaba NickaAustraliaAsiya Javayant NEW
Mayumi KolmetzSpainXuxue Feng QUALIFIED
Maisha RulapaughCanadaAnna Fali RENEWAL
Aika InouyeAustraliaStephen Shaw PROPOSAL
Johnson SergiUnited KingdomBernardo Dominic UNQUALIFIED
Smith GlickCanadaBernardo Dominic UNQUALIFIED
Tony FollerArgentinaAsiya Javayant NEW
David DarakjyIndiaBernardo Dominic UNQUALIFIED
Jefferson SchemmerCanadaAnna Fali QUALIFIED
Ricardo GauchoAustraliaIoni Bowcher QUALIFIED
Tony FollerSpainStephen Shaw QUALIFIED
Jefferson SchemmerFranceAmy Elsner QUALIFIED
Deepesh ChuiItalyBernardo Dominic NEW
Costa DilliardUnited KingdomAnna Fali PROPOSAL
Sinclair WaycottFranceStephen Shaw NEGOTIATION
Claire TollnerUnited KingdomXuxue Feng QUALIFIED
Isabel BowleyJapanStephen Shaw NEW
Mayumi KolmetzBrazilXuxue Feng QUALIFIED
Antonio CaudyGermanyOnyama Limba PROPOSAL
Adams MorascaRussiaXuxue Feng PROPOSAL
Antonio CaudyIndiaAmy Elsner RENEWAL
Aruna FigeroaFranceElwin Sharvill PROPOSAL
Faith GillianSpainStephen Shaw PROPOSAL
Alejandro PerinRussiaAnna Fali UNQUALIFIED
Morrow RutaIndiaAnna Fali NEW
Wickens NestleUnited KingdomBernardo Dominic NEGOTIATION
Octavia MaletSpainBernardo Dominic QUALIFIED
Adams MorascaCanadaAsiya Javayant RENEWAL
Faith GillianAustraliaIvan Magalhaes QUALIFIED
Frozen Columns
Name
Alejandro Perin
Chavez Briddick
Morrow Ruta
Emily Whobrey
Francesco Shinko
Wickens Nestle
Mayumi Kolmetz
David Darakjy
Ashley Doe
Adams Morasca
Faith Gillian
Nicolas Iturbide
Silvio Slusarski
Mujtaba Nicka
Ivar Paprocki
Jefferson Schemmer
Salvatore Stockham
Costa Dilliard
Ricardo Gaucho
Aditya Kusko
Nicolas Iturbide
Maria Marrier
Greenwood Bolognia
Maria Marrier
Maisha Rulapaugh
Munro Ferencz
Salvatore Stockham
Julie Stenseth
Wickens Nestle
Maria Marrier
Emily Whobrey
Murillo Malet
Johnson Sergi
Isabel Bowley
Ricardo Gaucho
Cody Saylors
Jones Vocelka
Aika Inouye
Aika Inouye
Jones Vocelka
Wickens Nestle
Misaki Royster
Ivar Paprocki
Deepesh Chui
Johnson Sergi
Kaitlin Ostrosky
Aditya Kusko
Mujtaba Nicka
Jefferson Schemmer
Emily Whobrey
IdCountryDate
1000Australia2026-06-10
1001Argentina2026-06-03
1002Canada2026-06-07
1003United Kingdom2026-05-14
1004France2026-05-27
1005Spain2026-05-16
1006France2026-05-19
1007Argentina2026-06-11
1008Canada2026-05-28
1009Spain2026-06-02
1010Italy2026-06-04
1011Russia2026-05-24
1012Canada2026-05-28
1013United Kingdom2026-05-16
1014Spain2026-06-02
1015Spain2026-05-17
1016United Kingdom2026-06-07
1017India2026-05-18
1018France2026-05-22
1019Brazil2026-06-01
1020United Kingdom2026-05-14
1021Spain2026-05-26
1022Canada2026-06-01
1023Italy2026-06-04
1024Italy2026-05-15
1025United Kingdom2026-05-28
1026Australia2026-06-04
1027France2026-06-09
1028India2026-05-29
1029Australia2026-06-04
1030Spain2026-05-30
1031Germany2026-05-23
1032Spain2026-06-01
1033Argentina2026-05-21
1034Spain2026-05-20
1035France2026-06-06
1036Russia2026-05-13
1037France2026-05-26
1038Russia2026-05-27
1039Australia2026-05-25
1040Brazil2026-05-27
1041Germany2026-05-29
1042Australia2026-05-22
1043Spain2026-05-31
1044Germany2026-06-06
1045India2026-05-24
1046Japan2026-05-31
1047Germany2026-05-13
1048Japan2026-06-09
1049Germany2026-06-10

On-Demand Data

NameIdCountryDate
Mayumi Kolmetz1000Japan2026-06-03
Mujtaba Nicka1001Canada2026-05-23
Emily Whobrey1002Spain2026-05-18
Faith Gillian1003India2026-05-28
Leon Oldroyd1004Australia2026-06-02
Ivar Paprocki1005Italy2026-06-10
Deepesh Chui1006United Kingdom2026-05-27
Maria Marrier1007Canada2026-06-01
Maria Marrier1008India2026-05-25
Faith Gillian1009Brazil2026-05-17
Maisha Rulapaugh1010Argentina2026-06-05
Antonio Caudy1011Brazil2026-05-31
Jeanfrancois Venere1012Argentina2026-05-31
Adams Morasca1013Canada2026-05-17
Leja Caldarera1014Japan2026-05-16
Misaki Royster1015Argentina2026-05-22
Claire Tollner1016France2026-05-19
Aruna Figeroa1017United Kingdom2026-06-02
Jones Vocelka1018Brazil2026-05-21
Claire Tollner1019India2026-06-10
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Emily WhobreyCanadaAnna Fali QUALIFIED
Greenwood BologniaRussiaAmy Elsner PROPOSAL
Jones VocelkaCanadaAnna Fali UNQUALIFIED
Kadeem FlosiCanadaAnna Fali UNQUALIFIED
Rodrigues CampainItalyElwin Sharvill NEW
Isabel BowleyGermanyElwin Sharvill PROPOSAL
Alejandro PerinCanadaAmy Elsner NEW
David DarakjyUnited KingdomAnna Fali QUALIFIED
Faith GillianSpainXuxue Feng NEW
Leon OldroydFranceOnyama Limba QUALIFIED
Chavez BriddickArgentinaElwin Sharvill NEW
Maisha RulapaughAustraliaStephen Shaw QUALIFIED
Rodrigues CampainBrazilOnyama Limba NEW
Izzy GarufiJapanAnna Fali UNQUALIFIED
Izzy GarufiArgentinaBernardo Dominic UNQUALIFIED
Izzy GarufiSpainAsiya Javayant UNQUALIFIED
Ricardo GauchoAustraliaAnna Fali UNQUALIFIED
Smith GlickArgentinaElwin Sharvill NEGOTIATION
Francesco ShinkoSpainBernardo Dominic UNQUALIFIED
Izzy GarufiItalyOnyama Limba PROPOSAL
Claire TollnerCanadaAsiya Javayant NEGOTIATION
Arvin AlbaresGermanyAsiya Javayant PROPOSAL
Greenwood BologniaBrazilIvan Magalhaes NEGOTIATION
Aditya KuskoGermanyStephen Shaw RENEWAL
Ricardo GauchoAustraliaStephen Shaw PROPOSAL
Silvio SlusarskiFranceIvan Magalhaes NEW
Rodrigues CampainGermanyBernardo Dominic NEW
Mujtaba NickaFranceOnyama Limba RENEWAL
Leja CaldareraArgentinaElwin Sharvill NEGOTIATION
Salvatore StockhamItalyAsiya Javayant PROPOSAL
Faith GillianArgentinaAnna Fali NEGOTIATION
Salvatore StockhamAustraliaXuxue Feng QUALIFIED
Francesco ShinkoBrazilAmy Elsner RENEWAL
James ButtIndiaStephen Shaw NEGOTIATION
Misaki RoysterUnited KingdomStephen Shaw NEW
Jones VocelkaGermanyElwin Sharvill NEGOTIATION
Ivar PaprockiIndiaAsiya Javayant RENEWAL
Jones VocelkaSpainStephen Shaw NEGOTIATION
Murillo MaletGermanyBernardo Dominic NEGOTIATION
Adams MorascaRussiaBernardo Dominic 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>