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
Wickens NestleRussiaIvan Magalhaes RENEWAL
Cody SaylorsItalyIvan Magalhaes UNQUALIFIED
Julie StensethUnited KingdomOnyama Limba UNQUALIFIED
Sinclair WaycottBrazilIoni Bowcher QUALIFIED
Izzy GarufiItalyAsiya Javayant UNQUALIFIED
Octavia MaletCanadaIoni Bowcher QUALIFIED
Claire TollnerGermanyIvan Magalhaes NEGOTIATION
Wickens NestleIndiaOnyama Limba NEGOTIATION
Faith GillianRussiaIoni Bowcher QUALIFIED
Salvatore StockhamCanadaAmy Elsner RENEWAL
James ButtArgentinaElwin Sharvill PROPOSAL
Sinclair WaycottAustraliaAnna Fali UNQUALIFIED
Mujtaba NickaGermanyIoni Bowcher QUALIFIED
Aruna FigeroaIndiaAnna Fali NEGOTIATION
James ButtUnited KingdomIoni Bowcher QUALIFIED
Munro FerenczRussiaAsiya Javayant NEW
Greenwood BologniaItalyAnna Fali NEW
Wickens NestleRussiaAnna Fali QUALIFIED
Silvio SlusarskiIndiaOnyama Limba UNQUALIFIED
Clifford RimJapanOnyama Limba NEW
Isabel BowleyItalyIvan Magalhaes PROPOSAL
Nicolas IturbideArgentinaAsiya Javayant UNQUALIFIED
Antonio CaudyUnited KingdomAsiya Javayant NEW
Chavez BriddickUnited KingdomIoni Bowcher RENEWAL
Leon OldroydArgentinaAnna Fali PROPOSAL
Claire TollnerBrazilAmy Elsner NEW
Jeanfrancois VenereUnited KingdomElwin Sharvill NEW
Alejandro PerinJapanElwin Sharvill PROPOSAL
Costa DilliardFranceElwin Sharvill PROPOSAL
Izzy GarufiFranceXuxue Feng RENEWAL
Wickens NestleRussiaBernardo Dominic NEW
Jennifer AmigonFranceStephen Shaw UNQUALIFIED
Rodrigues CampainGermanyOnyama Limba QUALIFIED
Murillo MaletBrazilBernardo Dominic NEGOTIATION
Claire TollnerJapanAsiya Javayant UNQUALIFIED
Silvio SlusarskiUnited KingdomIoni Bowcher NEW
Leon OldroydFranceBernardo Dominic RENEWAL
Greenwood BologniaRussiaAmy Elsner UNQUALIFIED
Smith GlickGermanyElwin Sharvill QUALIFIED
Ashley DoeUnited KingdomStephen Shaw PROPOSAL
Aditya KuskoRussiaBernardo Dominic NEGOTIATION
Ivar PaprockiAustraliaElwin Sharvill NEGOTIATION
Deepesh ChuiCanadaAnna Fali PROPOSAL
Maisha RulapaughFranceIoni Bowcher NEW
Julie StensethFranceElwin Sharvill NEGOTIATION
Aditya KuskoFranceStephen Shaw PROPOSAL
Tony FollerSpainBernardo Dominic NEGOTIATION
Aika InouyeFranceAsiya Javayant UNQUALIFIED
Jefferson SchemmerUnited KingdomElwin Sharvill NEGOTIATION
Francesco ShinkoBrazilIoni Bowcher PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Stacey MacleadArgentinaIvan Magalhaes NEW
Munro FerenczFranceElwin Sharvill QUALIFIED
Jones VocelkaJapanAnna Fali RENEWAL
Munro FerenczBrazilAnna Fali UNQUALIFIED
Greenwood BologniaSpainOnyama Limba QUALIFIED
Chavez BriddickSpainAnna Fali RENEWAL
Jeanfrancois VenereRussiaOnyama Limba RENEWAL
Morrow RutaFranceStephen Shaw QUALIFIED
Jeanfrancois VenereFranceStephen Shaw PROPOSAL
Kaitlin OstroskyFranceElwin Sharvill NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Sinclair WaycottItaly2026-04-27Rangoni Of Florence NEGOTIATION99Elwin Sharvill
1001Jefferson SchemmerFrance2026-04-11Chanay, Jeffrey A Esq QUALIFIED96Amy Elsner
1002Tony FollerIndia2026-05-07Chanay, Jeffrey A Esq UNQUALIFIED91Bernardo Dominic
1003Morrow RutaItaly2026-04-26Chanay, Jeffrey A Esq QUALIFIED66Ioni Bowcher
1004Wickens NestleGermany2026-04-11Commercial Press NEGOTIATION88Ioni Bowcher
1005Costa DilliardArgentina2026-05-06Truhlar And Truhlar Attys QUALIFIED85Ivan Magalhaes
1006Murillo MaletArgentina2026-05-02King, Christopher A Esq PROPOSAL77Ivan Magalhaes
1007Alejandro PerinAustralia2026-04-18Rangoni Of Florence PROPOSAL19Xuxue Feng
1008Jones VocelkaAustralia2026-04-09Feiner Bros NEW69Elwin Sharvill
1009Arvin AlbaresBrazil2026-04-28Feiner Bros RENEWAL69Anna Fali
1010Alejandro PerinItaly2026-04-22Printing Dimensions NEW51Ivan Magalhaes
1011Alejandro PerinRussia2026-04-20Chemel, James L Cpa NEGOTIATION61Asiya Javayant
1012Ashley DoeUnited Kingdom2026-04-18Chapman, Ross E Esq NEW54Amy Elsner
1013Francesco ShinkoUnited Kingdom2026-04-11Dorl, James J Esq NEGOTIATION67Amy Elsner
1014Arvin AlbaresCanada2026-05-04Chapman, Ross E Esq QUALIFIED36Bernardo Dominic
1015Kadeem FlosiJapan2026-05-02Benton, John B Jr QUALIFIED43Onyama Limba
1016Leja CaldareraAustralia2026-04-23Chanay, Jeffrey A Esq QUALIFIED39Ivan Magalhaes
1017Adams MorascaCanada2026-04-28Feiner Bros NEGOTIATION87Asiya Javayant
1018Aruna FigeroaJapan2026-04-14Commercial Press QUALIFIED92Bernardo Dominic
1019Emily WhobreyItaly2026-05-01Commercial Press PROPOSAL29Anna Fali
1020Leon OldroydCanada2026-04-25Buckley Miller Wright RENEWAL36Ioni Bowcher
1021Claire TollnerBrazil2026-05-05Chapman, Ross E Esq NEW53Stephen Shaw
1022Jones VocelkaJapan2026-04-26Feiner Bros PROPOSAL96Stephen Shaw
1023Deepesh ChuiCanada2026-04-22Commercial Press UNQUALIFIED63Bernardo Dominic
1024Aika InouyeGermany2026-04-28Rousseaux, Michael Esq UNQUALIFIED72Anna Fali
1025James ButtJapan2026-05-03Buckley Miller Wright QUALIFIED45Ioni Bowcher
1026Mujtaba NickaFrance2026-04-19Rousseaux, Michael Esq NEGOTIATION44Xuxue Feng
1027Izzy GarufiGermany2026-05-04Dorl, James J Esq RENEWAL86Xuxue Feng
1028Emily WhobreyItaly2026-04-14Chanay, Jeffrey A Esq QUALIFIED37Stephen Shaw
1029Kadeem FlosiIndia2026-04-12Benton, John B Jr PROPOSAL20Ioni Bowcher
1030Jones VocelkaUnited Kingdom2026-04-29Dorl, James J Esq NEGOTIATION30Ioni Bowcher
1031Costa DilliardArgentina2026-04-11Dorl, James J Esq QUALIFIED57Anna Fali
1032Ivar PaprockiItaly2026-04-28Chanay, Jeffrey A Esq NEGOTIATION7Stephen Shaw
1033Darci PoquetteJapan2026-04-27Chapman, Ross E Esq NEW93Elwin Sharvill
1034Darci PoquetteIndia2026-04-23Feiner Bros NEGOTIATION62Amy Elsner
1035Aruna FigeroaRussia2026-05-03Printing Dimensions QUALIFIED70Elwin Sharvill
1036Aditya KuskoFrance2026-04-16Dorl, James J Esq UNQUALIFIED18Ivan Magalhaes
1037Ricardo GauchoCanada2026-04-11Truhlar And Truhlar Attys QUALIFIED93Bernardo Dominic
1038Kadeem FlosiCanada2026-04-11Feiner Bros NEGOTIATION88Asiya Javayant
1039Mujtaba NickaBrazil2026-04-24Chemel, James L Cpa QUALIFIED23Bernardo Dominic
1040Clifford RimAustralia2026-04-25Commercial Press PROPOSAL73Anna Fali
1041James ButtItaly2026-05-07Benton, John B Jr PROPOSAL99Elwin Sharvill
1042Aika InouyeIndia2026-04-28Rousseaux, Michael Esq PROPOSAL94Bernardo Dominic
1043Izzy GarufiBrazil2026-05-02Dorl, James J Esq QUALIFIED78Ioni Bowcher
1044Sinclair WaycottGermany2026-04-20Truhlar And Truhlar Attys NEGOTIATION39Bernardo Dominic
1045Deepesh ChuiRussia2026-04-16Feiner Bros QUALIFIED12Xuxue Feng
1046Maria MarrierSpain2026-04-21Printing Dimensions PROPOSAL41Amy Elsner
1047Kadeem FlosiGermany2026-05-04Feltz Printing Service RENEWAL13Bernardo Dominic
1048Isabel BowleyCanada2026-04-23Dorl, James J Esq PROPOSAL29Xuxue Feng
1049Mayumi KolmetzAustralia2026-04-22Printing Dimensions RENEWAL6Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Cody SaylorsBrazilStephen Shaw NEGOTIATION
Izzy GarufiBrazilXuxue Feng RENEWAL
Isabel BowleyIndiaAsiya Javayant QUALIFIED
Juan WieserFranceStephen Shaw RENEWAL
Wickens NestleCanadaElwin Sharvill UNQUALIFIED
Juan WieserUnited KingdomAsiya Javayant RENEWAL
Tony FollerAustraliaElwin Sharvill PROPOSAL
Salvatore StockhamAustraliaAmy Elsner UNQUALIFIED
David DarakjyUnited KingdomOnyama Limba NEGOTIATION
Greenwood BologniaUnited KingdomStephen Shaw NEGOTIATION
Jefferson SchemmerItalyIvan Magalhaes NEGOTIATION
Salvatore StockhamItalyIvan Magalhaes PROPOSAL
James ButtSpainAsiya Javayant NEGOTIATION
Arvin AlbaresFranceAnna Fali NEW
Maisha RulapaughCanadaIvan Magalhaes NEW
Silvio SlusarskiArgentinaAsiya Javayant QUALIFIED
Emily WhobreyBrazilAmy Elsner QUALIFIED
Maisha RulapaughCanadaAsiya Javayant QUALIFIED
Costa DilliardRussiaAnna Fali RENEWAL
Ashley DoeIndiaOnyama Limba PROPOSAL
Murillo MaletItalyAsiya Javayant QUALIFIED
Aditya KuskoSpainIvan Magalhaes QUALIFIED
Wickens NestleCanadaXuxue Feng PROPOSAL
Faith GillianRussiaElwin Sharvill QUALIFIED
Mayumi KolmetzAustraliaElwin Sharvill NEGOTIATION
Stacey MacleadIndiaBernardo Dominic UNQUALIFIED
Leja CaldareraUnited KingdomAsiya Javayant NEGOTIATION
Jennifer AmigonUnited KingdomBernardo Dominic NEGOTIATION
Adams MorascaGermanyElwin Sharvill RENEWAL
Aruna FigeroaArgentinaAmy Elsner QUALIFIED
Antonio CaudyArgentinaAsiya Javayant PROPOSAL
Cody SaylorsAustraliaOnyama Limba PROPOSAL
Isabel BowleyUnited KingdomStephen Shaw NEW
Tony FollerIndiaStephen Shaw QUALIFIED
Jeanfrancois VenereBrazilAnna Fali QUALIFIED
Leon OldroydUnited KingdomIvan Magalhaes RENEWAL
Adams MorascaSpainBernardo Dominic NEW
Kadeem FlosiCanadaXuxue Feng UNQUALIFIED
Aditya KuskoJapanAmy Elsner NEGOTIATION
Smith GlickAustraliaIvan Magalhaes QUALIFIED
Adams MorascaItalyIvan Magalhaes QUALIFIED
Wickens NestleArgentinaAnna Fali UNQUALIFIED
Deepesh ChuiUnited KingdomAsiya Javayant RENEWAL
Leja CaldareraFranceElwin Sharvill PROPOSAL
Sinclair WaycottSpainElwin Sharvill QUALIFIED
Jeanfrancois VenereSpainElwin Sharvill RENEWAL
Cody SaylorsJapanIoni Bowcher RENEWAL
Johnson SergiArgentinaIoni Bowcher UNQUALIFIED
Salvatore StockhamSpainXuxue Feng NEGOTIATION
Jones VocelkaGermanyAsiya Javayant RENEWAL
Frozen Columns
Name
Adams Morasca
Ricardo Gaucho
Munro Ferencz
Mujtaba Nicka
Chavez Briddick
Maisha Rulapaugh
Juan Wieser
Ashley Doe
Julie Stenseth
Silvio Slusarski
Francesco Shinko
Isabel Bowley
Isabel Bowley
Murillo Malet
Chavez Briddick
Smith Glick
Cody Saylors
Isabel Bowley
Tony Foller
Mayumi Kolmetz
Alejandro Perin
Sinclair Waycott
Leon Oldroyd
Mayumi Kolmetz
Juan Wieser
Julie Stenseth
Emily Whobrey
Faith Gillian
Deepesh Chui
Maisha Rulapaugh
Aika Inouye
Jones Vocelka
Rodrigues Campain
Misaki Royster
Smith Glick
Izzy Garufi
Aika Inouye
Munro Ferencz
Jones Vocelka
Claire Tollner
Salvatore Stockham
Aruna Figeroa
Arvin Albares
Aruna Figeroa
Aditya Kusko
James Butt
Deepesh Chui
Cody Saylors
Silvio Slusarski
Maria Marrier
IdCountryDate
1000Italy2026-04-21
1001Australia2026-04-23
1002Australia2026-04-18
1003Germany2026-04-16
1004Canada2026-05-07
1005India2026-04-12
1006Spain2026-04-29
1007Canada2026-04-30
1008France2026-04-16
1009Canada2026-04-13
1010Canada2026-04-25
1011Australia2026-04-23
1012Germany2026-05-08
1013Japan2026-04-23
1014Australia2026-04-12
1015Italy2026-04-27
1016Italy2026-04-09
1017Canada2026-04-13
1018Germany2026-04-11
1019Germany2026-05-05
1020Australia2026-05-01
1021India2026-04-10
1022Brazil2026-04-11
1023Italy2026-05-03
1024Australia2026-04-29
1025Australia2026-05-05
1026Spain2026-04-15
1027Italy2026-04-27
1028France2026-04-16
1029Russia2026-04-25
1030Brazil2026-04-25
1031Canada2026-04-14
1032Italy2026-05-06
1033India2026-05-07
1034Argentina2026-04-20
1035United Kingdom2026-04-17
1036Spain2026-05-05
1037Russia2026-04-12
1038India2026-05-02
1039Brazil2026-05-06
1040Japan2026-05-02
1041Spain2026-04-18
1042India2026-04-18
1043Japan2026-05-02
1044Germany2026-04-25
1045Brazil2026-04-25
1046Canada2026-05-03
1047Brazil2026-04-23
1048Spain2026-05-01
1049Italy2026-04-29

On-Demand Data

NameIdCountryDate
Leon Oldroyd1000Japan2026-04-15
Claire Tollner1001India2026-04-10
Ivar Paprocki1002Russia2026-05-01
Ashley Doe1003Russia2026-04-22
Tony Foller1004Japan2026-04-10
Ricardo Gaucho1005Russia2026-05-07
Antonio Caudy1006France2026-04-18
Misaki Royster1007Italy2026-04-29
Greenwood Bolognia1008Argentina2026-04-11
Aditya Kusko1009Brazil2026-04-11
Clifford Rim1010Japan2026-04-12
Kadeem Flosi1011France2026-04-24
Cody Saylors1012Italy2026-05-08
Nicolas Iturbide1013Argentina2026-04-10
David Darakjy1014Germany2026-04-15
Munro Ferencz1015India2026-04-20
Kadeem Flosi1016Japan2026-04-28
Izzy Garufi1017Japan2026-04-15
Francesco Shinko1018Australia2026-04-17
Juan Wieser1019Australia2026-04-17
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Alejandro PerinIndiaAnna Fali NEW
Juan WieserArgentinaIvan Magalhaes UNQUALIFIED
Misaki RoysterFranceBernardo Dominic RENEWAL
Jennifer AmigonSpainAnna Fali PROPOSAL
Murillo MaletRussiaAmy Elsner NEGOTIATION
Murillo MaletSpainIoni Bowcher QUALIFIED
Johnson SergiAustraliaAsiya Javayant NEW
David DarakjyCanadaElwin Sharvill NEW
Octavia MaletJapanXuxue Feng QUALIFIED
Silvio SlusarskiBrazilOnyama Limba QUALIFIED
Morrow RutaSpainIoni Bowcher NEGOTIATION
Darci PoquetteFranceStephen Shaw QUALIFIED
Ashley DoeGermanyElwin Sharvill UNQUALIFIED
Alejandro PerinBrazilBernardo Dominic NEGOTIATION
Misaki RoysterSpainAmy Elsner QUALIFIED
Faith GillianJapanStephen Shaw NEW
Rodrigues CampainBrazilXuxue Feng PROPOSAL
Salvatore StockhamJapanBernardo Dominic QUALIFIED
Smith GlickItalyBernardo Dominic PROPOSAL
Salvatore StockhamArgentinaIoni Bowcher PROPOSAL
Aika InouyeCanadaOnyama Limba QUALIFIED
Francesco ShinkoItalyBernardo Dominic NEW
Morrow RutaBrazilXuxue Feng RENEWAL
Jefferson SchemmerRussiaXuxue Feng PROPOSAL
Costa DilliardGermanyBernardo Dominic UNQUALIFIED
Adams MorascaBrazilIoni Bowcher RENEWAL
Smith GlickJapanStephen Shaw RENEWAL
Aruna FigeroaBrazilXuxue Feng RENEWAL
Francesco ShinkoRussiaAnna Fali UNQUALIFIED
Maisha RulapaughFranceAsiya Javayant RENEWAL
Nicolas IturbideIndiaOnyama Limba UNQUALIFIED
Morrow RutaFranceIoni Bowcher RENEWAL
Mayumi KolmetzBrazilBernardo Dominic RENEWAL
Sinclair WaycottFranceElwin Sharvill RENEWAL
Smith GlickCanadaOnyama Limba UNQUALIFIED
Johnson SergiCanadaIoni Bowcher PROPOSAL
Emily WhobreyItalyAsiya Javayant RENEWAL
Chavez BriddickBrazilAnna Fali RENEWAL
Francesco ShinkoFranceStephen Shaw UNQUALIFIED
Costa DilliardRussiaAnna Fali QUALIFIED

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