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
Juan WieserRussiaXuxue Feng NEW
Silvio SlusarskiCanadaAsiya Javayant NEGOTIATION
Nicolas IturbideUnited KingdomXuxue Feng UNQUALIFIED
Rodrigues CampainUnited KingdomStephen Shaw RENEWAL
Aditya KuskoRussiaAsiya Javayant NEW
Maisha RulapaughArgentinaXuxue Feng NEGOTIATION
Antonio CaudyUnited KingdomIvan Magalhaes NEW
Jennifer AmigonItalyAnna Fali RENEWAL
Johnson SergiRussiaAmy Elsner RENEWAL
Smith GlickUnited KingdomXuxue Feng UNQUALIFIED
Adams MorascaRussiaAmy Elsner NEW
Sinclair WaycottJapanIvan Magalhaes UNQUALIFIED
Smith GlickSpainBernardo Dominic NEW
Mayumi KolmetzArgentinaAmy Elsner UNQUALIFIED
Jennifer AmigonSpainAmy Elsner NEGOTIATION
Kadeem FlosiCanadaIoni Bowcher UNQUALIFIED
Emily WhobreyArgentinaXuxue Feng NEW
Johnson SergiRussiaBernardo Dominic QUALIFIED
Jeanfrancois VenereCanadaAmy Elsner PROPOSAL
Antonio CaudyAustraliaAmy Elsner QUALIFIED
Emily WhobreyBrazilAsiya Javayant NEGOTIATION
Jefferson SchemmerRussiaElwin Sharvill RENEWAL
Faith GillianCanadaElwin Sharvill PROPOSAL
Chavez BriddickArgentinaAnna Fali RENEWAL
Julie StensethArgentinaAsiya Javayant NEGOTIATION
Johnson SergiItalyIoni Bowcher RENEWAL
Claire TollnerUnited KingdomElwin Sharvill RENEWAL
Francesco ShinkoFranceStephen Shaw RENEWAL
Octavia MaletJapanOnyama Limba RENEWAL
Rodrigues CampainIndiaOnyama Limba PROPOSAL
Mayumi KolmetzSpainAsiya Javayant NEGOTIATION
Julie StensethJapanXuxue Feng NEW
Alejandro PerinCanadaElwin Sharvill PROPOSAL
Arvin AlbaresArgentinaStephen Shaw QUALIFIED
Tony FollerItalyIvan Magalhaes PROPOSAL
Octavia MaletItalyIoni Bowcher NEW
Isabel BowleyCanadaIvan Magalhaes PROPOSAL
Adams MorascaFranceIvan Magalhaes RENEWAL
Arvin AlbaresSpainAnna Fali UNQUALIFIED
Murillo MaletUnited KingdomIvan Magalhaes UNQUALIFIED
Johnson SergiItalyBernardo Dominic NEGOTIATION
Mayumi KolmetzSpainIvan Magalhaes UNQUALIFIED
Cody SaylorsBrazilBernardo Dominic QUALIFIED
Darci PoquetteArgentinaAnna Fali PROPOSAL
Greenwood BologniaSpainAmy Elsner NEW
Emily WhobreyGermanyIvan Magalhaes NEGOTIATION
Adams MorascaBrazilElwin Sharvill NEW
Jefferson SchemmerIndiaElwin Sharvill UNQUALIFIED
Johnson SergiGermanyElwin Sharvill PROPOSAL
Smith GlickFranceIvan Magalhaes NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Aruna FigeroaArgentinaIoni Bowcher QUALIFIED
Adams MorascaGermanyBernardo Dominic NEW
Costa DilliardBrazilAsiya Javayant QUALIFIED
Rodrigues CampainSpainStephen Shaw NEW
Sinclair WaycottIndiaOnyama Limba RENEWAL
Wickens NestleArgentinaAsiya Javayant NEW
Mujtaba NickaIndiaAnna Fali NEW
Jennifer AmigonIndiaOnyama Limba RENEWAL
Mayumi KolmetzGermanyIvan Magalhaes UNQUALIFIED
Maisha RulapaughAustraliaAnna Fali NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Adams MorascaArgentina2026-04-14Rousseaux, Michael Esq PROPOSAL95Onyama Limba
1001Jeanfrancois VenereUnited Kingdom2026-04-01Buckley Miller Wright PROPOSAL63Anna Fali
1002Munro FerenczCanada2026-04-07Chanay, Jeffrey A Esq QUALIFIED42Anna Fali
1003Misaki RoysterJapan2026-04-09Dorl, James J Esq NEGOTIATION65Elwin Sharvill
1004Deepesh ChuiGermany2026-04-12Chapman, Ross E Esq NEW33Anna Fali
1005Faith GillianRussia2026-04-14Chemel, James L Cpa NEW61Bernardo Dominic
1006Smith GlickIndia2026-04-09Morlong Associates NEGOTIATION0Anna Fali
1007Maria MarrierUnited Kingdom2026-04-02Chanay, Jeffrey A Esq QUALIFIED61Ioni Bowcher
1008Mayumi KolmetzIndia2026-04-16Benton, John B Jr NEGOTIATION49Anna Fali
1009Clifford RimUnited Kingdom2026-03-22Commercial Press NEW57Onyama Limba
1010Smith GlickCanada2026-04-10Chapman, Ross E Esq NEW22Amy Elsner
1011Rodrigues CampainIndia2026-03-31Commercial Press QUALIFIED68Ioni Bowcher
1012Nicolas IturbideItaly2026-04-19Benton, John B Jr RENEWAL32Asiya Javayant
1013Murillo MaletJapan2026-03-27Truhlar And Truhlar Attys NEGOTIATION46Amy Elsner
1014Aditya KuskoFrance2026-04-11Chemel, James L Cpa UNQUALIFIED5Anna Fali
1015David DarakjyAustralia2026-04-01Chapman, Ross E Esq NEW16Stephen Shaw
1016Silvio SlusarskiRussia2026-03-25King, Christopher A Esq NEGOTIATION97Ivan Magalhaes
1017Emily WhobreyItaly2026-03-24Morlong Associates NEW93Stephen Shaw
1018Silvio SlusarskiRussia2026-04-04Dorl, James J Esq RENEWAL79Onyama Limba
1019Isabel BowleyIndia2026-04-17Chanay, Jeffrey A Esq NEW12Ioni Bowcher
1020Silvio SlusarskiUnited Kingdom2026-04-09Rousseaux, Michael Esq RENEWAL26Asiya Javayant
1021Ricardo GauchoGermany2026-03-22Rousseaux, Michael Esq QUALIFIED48Bernardo Dominic
1022Antonio CaudyGermany2026-03-23Printing Dimensions UNQUALIFIED75Ivan Magalhaes
1023Tony FollerCanada2026-04-19Commercial Press NEGOTIATION86Elwin Sharvill
1024Chavez BriddickSpain2026-03-29Commercial Press QUALIFIED64Ioni Bowcher
1025Rodrigues CampainJapan2026-04-18Buckley Miller Wright UNQUALIFIED49Onyama Limba
1026Wickens NestleBrazil2026-04-14Chanay, Jeffrey A Esq PROPOSAL16Amy Elsner
1027Stacey MacleadItaly2026-04-03Commercial Press PROPOSAL93Bernardo Dominic
1028Julie StensethRussia2026-04-05Printing Dimensions PROPOSAL25Onyama Limba
1029David DarakjyArgentina2026-04-10Feltz Printing Service RENEWAL30Elwin Sharvill
1030Stacey MacleadIndia2026-04-07Benton, John B Jr RENEWAL55Amy Elsner
1031Stacey MacleadAustralia2026-04-18Feiner Bros PROPOSAL70Xuxue Feng
1032Ashley DoeCanada2026-04-17Feiner Bros RENEWAL15Anna Fali
1033Alejandro PerinJapan2026-03-24Chemel, James L Cpa QUALIFIED60Anna Fali
1034Izzy GarufiAustralia2026-04-15King, Christopher A Esq RENEWAL99Onyama Limba
1035Jefferson SchemmerGermany2026-04-20Chanay, Jeffrey A Esq NEGOTIATION8Amy Elsner
1036Ivar PaprockiGermany2026-03-28Chemel, James L Cpa UNQUALIFIED40Elwin Sharvill
1037Francesco ShinkoRussia2026-04-02Chemel, James L Cpa QUALIFIED60Anna Fali
1038Octavia MaletRussia2026-04-06Truhlar And Truhlar Attys NEGOTIATION24Ioni Bowcher
1039Darci PoquetteJapan2026-04-05Rangoni Of Florence NEGOTIATION76Amy Elsner
1040Faith GillianSpain2026-04-04Benton, John B Jr RENEWAL42Asiya Javayant
1041Murillo MaletUnited Kingdom2026-03-29Printing Dimensions NEGOTIATION11Elwin Sharvill
1042Cody SaylorsSpain2026-04-16Feltz Printing Service PROPOSAL77Asiya Javayant
1043Francesco ShinkoRussia2026-04-17Commercial Press QUALIFIED43Stephen Shaw
1044Kadeem FlosiFrance2026-04-18Chemel, James L Cpa QUALIFIED45Asiya Javayant
1045Aditya KuskoArgentina2026-03-30Dorl, James J Esq NEGOTIATION58Bernardo Dominic
1046Ivar PaprockiCanada2026-04-04Benton, John B Jr NEW54Bernardo Dominic
1047Silvio SlusarskiCanada2026-03-29Truhlar And Truhlar Attys NEGOTIATION50Xuxue Feng
1048Maisha RulapaughFrance2026-03-29Benton, John B Jr NEW42Bernardo Dominic
1049Faith GillianRussia2026-03-24Truhlar And Truhlar Attys RENEWAL1Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Jennifer AmigonUnited KingdomIvan Magalhaes RENEWAL
Alejandro PerinFranceIvan Magalhaes RENEWAL
Misaki RoysterFranceAnna Fali RENEWAL
David DarakjyCanadaXuxue Feng PROPOSAL
Rodrigues CampainCanadaAsiya Javayant UNQUALIFIED
Greenwood BologniaCanadaOnyama Limba QUALIFIED
Kadeem FlosiCanadaElwin Sharvill NEGOTIATION
Nicolas IturbideItalyElwin Sharvill NEW
Salvatore StockhamCanadaStephen Shaw UNQUALIFIED
Julie StensethRussiaIoni Bowcher RENEWAL
Darci PoquetteIndiaElwin Sharvill NEGOTIATION
Jeanfrancois VenereIndiaIoni Bowcher PROPOSAL
Nicolas IturbideFranceElwin Sharvill QUALIFIED
Wickens NestleBrazilXuxue Feng UNQUALIFIED
David DarakjySpainElwin Sharvill NEW
Claire TollnerJapanBernardo Dominic RENEWAL
Misaki RoysterItalyStephen Shaw NEW
Ivar PaprockiUnited KingdomStephen Shaw PROPOSAL
Faith GillianIndiaXuxue Feng PROPOSAL
Leja CaldareraGermanyStephen Shaw NEW
Mayumi KolmetzCanadaIoni Bowcher PROPOSAL
Wickens NestleRussiaIoni Bowcher PROPOSAL
Juan WieserArgentinaXuxue Feng UNQUALIFIED
Darci PoquetteItalyAmy Elsner QUALIFIED
Misaki RoysterGermanyIoni Bowcher RENEWAL
Jefferson SchemmerIndiaXuxue Feng RENEWAL
Adams MorascaIndiaAnna Fali NEW
Costa DilliardIndiaOnyama Limba RENEWAL
Jennifer AmigonIndiaXuxue Feng NEW
Alejandro PerinAustraliaAmy Elsner QUALIFIED
Faith GillianSpainIoni Bowcher QUALIFIED
Jeanfrancois VenereGermanyIoni Bowcher PROPOSAL
Francesco ShinkoSpainStephen Shaw RENEWAL
Mayumi KolmetzAustraliaElwin Sharvill RENEWAL
Jennifer AmigonGermanyXuxue Feng NEW
Costa DilliardUnited KingdomAmy Elsner RENEWAL
Juan WieserIndiaAsiya Javayant NEW
Julie StensethItalyElwin Sharvill UNQUALIFIED
Smith GlickIndiaAnna Fali QUALIFIED
Clifford RimCanadaAsiya Javayant PROPOSAL
Isabel BowleyCanadaAnna Fali QUALIFIED
Tony FollerJapanIoni Bowcher RENEWAL
Deepesh ChuiItalyIvan Magalhaes RENEWAL
Aditya KuskoSpainAnna Fali QUALIFIED
Johnson SergiArgentinaAnna Fali NEGOTIATION
Jefferson SchemmerSpainIoni Bowcher PROPOSAL
Juan WieserGermanyXuxue Feng NEW
Wickens NestleRussiaOnyama Limba QUALIFIED
Cody SaylorsGermanyXuxue Feng NEGOTIATION
Greenwood BologniaAustraliaIvan Magalhaes PROPOSAL
Frozen Columns
Name
Greenwood Bolognia
Salvatore Stockham
Juan Wieser
Chavez Briddick
Murillo Malet
Maria Marrier
Johnson Sergi
Kaitlin Ostrosky
Clifford Rim
Murillo Malet
Ashley Doe
Ivar Paprocki
Nicolas Iturbide
Francesco Shinko
David Darakjy
Maisha Rulapaugh
Izzy Garufi
Stacey Maclead
Ivar Paprocki
Nicolas Iturbide
Johnson Sergi
Sinclair Waycott
Kadeem Flosi
Deepesh Chui
Maisha Rulapaugh
Stacey Maclead
Munro Ferencz
Maria Marrier
Deepesh Chui
Greenwood Bolognia
Ivar Paprocki
Maria Marrier
Nicolas Iturbide
Mujtaba Nicka
Aruna Figeroa
Rodrigues Campain
Kadeem Flosi
Emily Whobrey
Juan Wieser
Maisha Rulapaugh
Jennifer Amigon
Francesco Shinko
Kadeem Flosi
Aika Inouye
Ashley Doe
Darci Poquette
Aditya Kusko
Tony Foller
Aika Inouye
Costa Dilliard
IdCountryDate
1000Spain2026-03-26
1001Italy2026-04-03
1002Italy2026-04-12
1003Argentina2026-03-27
1004United Kingdom2026-04-19
1005Germany2026-03-26
1006United Kingdom2026-04-20
1007Italy2026-04-05
1008India2026-03-28
1009India2026-03-24
1010France2026-03-24
1011Argentina2026-03-22
1012Australia2026-04-16
1013Italy2026-04-12
1014Germany2026-03-31
1015Australia2026-04-18
1016Argentina2026-03-23
1017Brazil2026-03-29
1018Brazil2026-04-16
1019France2026-03-31
1020Spain2026-04-17
1021Canada2026-03-31
1022Germany2026-03-25
1023Australia2026-03-25
1024Germany2026-04-07
1025Japan2026-03-28
1026Japan2026-04-05
1027United Kingdom2026-04-10
1028Russia2026-03-23
1029India2026-03-31
1030France2026-03-31
1031Argentina2026-04-15
1032India2026-04-13
1033Italy2026-04-12
1034Canada2026-04-04
1035Spain2026-04-05
1036Japan2026-04-04
1037United Kingdom2026-03-25
1038Russia2026-04-01
1039United Kingdom2026-04-20
1040Brazil2026-04-10
1041Canada2026-03-26
1042Argentina2026-03-24
1043Germany2026-04-14
1044Brazil2026-04-11
1045Brazil2026-03-24
1046Japan2026-04-10
1047Italy2026-04-06
1048Australia2026-04-06
1049Spain2026-03-22

On-Demand Data

NameIdCountryDate
Rodrigues Campain1000Argentina2026-04-12
Murillo Malet1001Australia2026-04-14
Costa Dilliard1002Italy2026-03-29
Nicolas Iturbide1003Italy2026-04-03
Johnson Sergi1004Brazil2026-04-09
Juan Wieser1005Italy2026-04-13
Silvio Slusarski1006Spain2026-04-19
Aika Inouye1007Japan2026-04-11
Francesco Shinko1008Italy2026-04-20
Mujtaba Nicka1009Italy2026-03-26
Aika Inouye1010Brazil2026-04-03
Greenwood Bolognia1011Italy2026-04-19
Emily Whobrey1012Russia2026-03-23
Ivar Paprocki1013United Kingdom2026-03-25
Deepesh Chui1014Germany2026-04-12
Ricardo Gaucho1015Russia2026-03-27
Cody Saylors1016India2026-03-30
Morrow Ruta1017France2026-04-06
Mayumi Kolmetz1018Canada2026-04-14
Aika Inouye1019Japan2026-03-26
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Rodrigues CampainItalyAsiya Javayant NEGOTIATION
Aruna FigeroaRussiaIoni Bowcher PROPOSAL
Jefferson SchemmerRussiaStephen Shaw UNQUALIFIED
Misaki RoysterJapanBernardo Dominic RENEWAL
Octavia MaletSpainBernardo Dominic PROPOSAL
Leja CaldareraRussiaElwin Sharvill NEW
Isabel BowleyAustraliaStephen Shaw QUALIFIED
David DarakjyItalyOnyama Limba NEW
Cody SaylorsCanadaIoni Bowcher NEGOTIATION
Stacey MacleadSpainXuxue Feng PROPOSAL
Leja CaldareraUnited KingdomAnna Fali RENEWAL
Aditya KuskoUnited KingdomStephen Shaw PROPOSAL
Murillo MaletFranceAsiya Javayant UNQUALIFIED
Cody SaylorsFranceElwin Sharvill NEGOTIATION
Clifford RimRussiaAsiya Javayant PROPOSAL
Maisha RulapaughIndiaAnna Fali PROPOSAL
Julie StensethRussiaBernardo Dominic UNQUALIFIED
Maisha RulapaughCanadaAmy Elsner UNQUALIFIED
Alejandro PerinBrazilBernardo Dominic PROPOSAL
Faith GillianCanadaAmy Elsner UNQUALIFIED
Ricardo GauchoBrazilElwin Sharvill QUALIFIED
Clifford RimItalyIoni Bowcher UNQUALIFIED
Kaitlin OstroskyAustraliaAsiya Javayant QUALIFIED
Salvatore StockhamGermanyXuxue Feng NEGOTIATION
Jefferson SchemmerItalyElwin Sharvill NEW
Aika InouyeRussiaAmy Elsner NEW
Izzy GarufiItalyIoni Bowcher NEGOTIATION
Jeanfrancois VenereUnited KingdomAmy Elsner NEGOTIATION
Ivar PaprockiRussiaAsiya Javayant RENEWAL
Maria MarrierRussiaIvan Magalhaes UNQUALIFIED
Nicolas IturbideIndiaIoni Bowcher NEW
Darci PoquetteGermanyElwin Sharvill RENEWAL
Silvio SlusarskiGermanyElwin Sharvill QUALIFIED
Smith GlickRussiaBernardo Dominic NEW
Juan WieserArgentinaIvan Magalhaes NEGOTIATION
Smith GlickSpainAsiya Javayant QUALIFIED
Ivar PaprockiJapanOnyama Limba QUALIFIED
Francesco ShinkoAustraliaBernardo Dominic UNQUALIFIED
Arvin AlbaresItalyXuxue Feng UNQUALIFIED
Smith GlickSpainBernardo Dominic RENEWAL

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