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
Jeanfrancois VenereItalyAsiya Javayant QUALIFIED
Nicolas IturbideItalyElwin Sharvill NEW
Juan WieserFranceElwin Sharvill NEGOTIATION
Mayumi KolmetzItalyAnna Fali PROPOSAL
Deepesh ChuiBrazilAmy Elsner NEW
Murillo MaletItalyOnyama Limba NEGOTIATION
Clifford RimArgentinaOnyama Limba UNQUALIFIED
Rodrigues CampainIndiaXuxue Feng UNQUALIFIED
Leja CaldareraGermanyXuxue Feng QUALIFIED
Nicolas IturbideGermanyElwin Sharvill NEGOTIATION
Johnson SergiArgentinaOnyama Limba UNQUALIFIED
Rodrigues CampainBrazilXuxue Feng NEGOTIATION
Alejandro PerinUnited KingdomOnyama Limba QUALIFIED
Sinclair WaycottUnited KingdomXuxue Feng QUALIFIED
Sinclair WaycottBrazilXuxue Feng UNQUALIFIED
Salvatore StockhamGermanyAmy Elsner RENEWAL
Misaki RoysterAustraliaIvan Magalhaes NEW
Stacey MacleadJapanElwin Sharvill UNQUALIFIED
Leon OldroydBrazilAnna Fali RENEWAL
Ivar PaprockiGermanyElwin Sharvill NEGOTIATION
Darci PoquetteCanadaStephen Shaw NEW
Aika InouyeBrazilBernardo Dominic PROPOSAL
Clifford RimUnited KingdomElwin Sharvill QUALIFIED
Nicolas IturbideSpainAnna Fali UNQUALIFIED
Jennifer AmigonAustraliaStephen Shaw UNQUALIFIED
Mayumi KolmetzRussiaXuxue Feng RENEWAL
Wickens NestleUnited KingdomBernardo Dominic RENEWAL
Smith GlickAustraliaIoni Bowcher RENEWAL
Cody SaylorsUnited KingdomAnna Fali RENEWAL
Octavia MaletFranceAmy Elsner QUALIFIED
Silvio SlusarskiFranceXuxue Feng NEW
Wickens NestleFranceXuxue Feng RENEWAL
Misaki RoysterSpainBernardo Dominic PROPOSAL
Misaki RoysterSpainIvan Magalhaes NEW
Jefferson SchemmerArgentinaAsiya Javayant QUALIFIED
Johnson SergiJapanAmy Elsner PROPOSAL
Ivar PaprockiFranceAsiya Javayant NEGOTIATION
Juan WieserGermanyAmy Elsner PROPOSAL
Silvio SlusarskiIndiaIoni Bowcher PROPOSAL
Misaki RoysterBrazilAmy Elsner PROPOSAL
Aditya KuskoJapanIoni Bowcher NEW
Silvio SlusarskiCanadaStephen Shaw NEW
Mayumi KolmetzAustraliaIvan Magalhaes RENEWAL
Costa DilliardFranceAmy Elsner PROPOSAL
Murillo MaletCanadaElwin Sharvill NEGOTIATION
Rodrigues CampainIndiaOnyama Limba NEW
Ivar PaprockiGermanyAsiya Javayant NEW
Ivar PaprockiBrazilElwin Sharvill NEW
Julie StensethSpainStephen Shaw NEGOTIATION
Jones VocelkaFranceIvan Magalhaes NEW
Horizontal
NameCountryRepresentativeStatus
Aika InouyeUnited KingdomAnna Fali UNQUALIFIED
Salvatore StockhamBrazilStephen Shaw RENEWAL
Silvio SlusarskiGermanyAmy Elsner RENEWAL
Kadeem FlosiFranceXuxue Feng RENEWAL
Ashley DoeSpainStephen Shaw PROPOSAL
Johnson SergiJapanStephen Shaw RENEWAL
Darci PoquetteBrazilBernardo Dominic PROPOSAL
Emily WhobreyCanadaElwin Sharvill PROPOSAL
Mujtaba NickaAustraliaAmy Elsner NEW
Chavez BriddickSpainBernardo Dominic UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Stacey MacleadIndia2025-09-10Benton, John B Jr PROPOSAL47Ivan Magalhaes
1001Rodrigues CampainArgentina2025-08-30Buckley Miller Wright RENEWAL76Ioni Bowcher
1002Aika InouyeGermany2025-08-24Printing Dimensions RENEWAL0Stephen Shaw
1003Aruna FigeroaFrance2025-09-11Feltz Printing Service NEGOTIATION67Onyama Limba
1004Kaitlin OstroskyAustralia2025-09-01Chanay, Jeffrey A Esq NEW42Asiya Javayant
1005Morrow RutaJapan2025-08-26Chemel, James L Cpa PROPOSAL66Elwin Sharvill
1006Emily WhobreyFrance2025-09-13Chanay, Jeffrey A Esq RENEWAL65Stephen Shaw
1007Silvio SlusarskiGermany2025-09-21Chapman, Ross E Esq UNQUALIFIED58Elwin Sharvill
1008Julie StensethAustralia2025-08-25King, Christopher A Esq NEW1Elwin Sharvill
1009Leon OldroydRussia2025-09-10Dorl, James J Esq RENEWAL25Ioni Bowcher
1010Ricardo GauchoGermany2025-09-04Truhlar And Truhlar Attys QUALIFIED62Xuxue Feng
1011Smith GlickUnited Kingdom2025-09-03Chanay, Jeffrey A Esq NEGOTIATION62Ivan Magalhaes
1012Kaitlin OstroskyUnited Kingdom2025-08-28Feiner Bros UNQUALIFIED13Onyama Limba
1013Izzy GarufiAustralia2025-08-30Rangoni Of Florence PROPOSAL42Stephen Shaw
1014Mayumi KolmetzAustralia2025-09-14Dorl, James J Esq RENEWAL11Elwin Sharvill
1015Murillo MaletIndia2025-09-07Truhlar And Truhlar Attys NEGOTIATION87Bernardo Dominic
1016Leon OldroydIndia2025-09-07Commercial Press NEGOTIATION38Xuxue Feng
1017Kaitlin OstroskyCanada2025-08-25Chanay, Jeffrey A Esq NEGOTIATION42Anna Fali
1018Cody SaylorsArgentina2025-09-15Chapman, Ross E Esq NEW50Bernardo Dominic
1019Ricardo GauchoFrance2025-08-25Truhlar And Truhlar Attys UNQUALIFIED74Onyama Limba
1020Leja CaldareraArgentina2025-09-03Rangoni Of Florence NEW86Stephen Shaw
1021Murillo MaletSpain2025-08-28Rangoni Of Florence RENEWAL1Stephen Shaw
1022Chavez BriddickIndia2025-08-26Chanay, Jeffrey A Esq NEGOTIATION23Asiya Javayant
1023Adams MorascaArgentina2025-09-16Rousseaux, Michael Esq PROPOSAL17Bernardo Dominic
1024Isabel BowleyJapan2025-09-11Dorl, James J Esq NEGOTIATION23Elwin Sharvill
1025Juan WieserCanada2025-09-05Dorl, James J Esq RENEWAL44Anna Fali
1026Leja CaldareraItaly2025-09-03Rangoni Of Florence RENEWAL71Elwin Sharvill
1027Izzy GarufiItaly2025-09-08Truhlar And Truhlar Attys PROPOSAL12Ioni Bowcher
1028Morrow RutaArgentina2025-08-30Printing Dimensions QUALIFIED71Ioni Bowcher
1029Alejandro PerinFrance2025-08-30Rangoni Of Florence QUALIFIED73Xuxue Feng
1030Antonio CaudyIndia2025-09-05Rangoni Of Florence NEW81Bernardo Dominic
1031Munro FerenczBrazil2025-09-20Benton, John B Jr UNQUALIFIED57Asiya Javayant
1032Leon OldroydSpain2025-09-11Printing Dimensions UNQUALIFIED55Ivan Magalhaes
1033Faith GillianJapan2025-09-03Truhlar And Truhlar Attys PROPOSAL65Xuxue Feng
1034Maisha RulapaughRussia2025-08-29Printing Dimensions RENEWAL7Ioni Bowcher
1035Octavia MaletCanada2025-09-18Printing Dimensions QUALIFIED52Ivan Magalhaes
1036Morrow RutaRussia2025-08-25Rangoni Of Florence NEW16Anna Fali
1037Claire TollnerAustralia2025-09-10Rousseaux, Michael Esq UNQUALIFIED10Xuxue Feng
1038Ashley DoeUnited Kingdom2025-09-04Buckley Miller Wright RENEWAL61Ioni Bowcher
1039Sinclair WaycottRussia2025-08-30Chemel, James L Cpa QUALIFIED19Asiya Javayant
1040Jones VocelkaBrazil2025-08-31Feltz Printing Service RENEWAL22Ioni Bowcher
1041Ashley DoeBrazil2025-09-21King, Christopher A Esq PROPOSAL75Onyama Limba
1042Maisha RulapaughBrazil2025-09-16King, Christopher A Esq NEGOTIATION69Elwin Sharvill
1043Ivar PaprockiFrance2025-09-18Rangoni Of Florence NEGOTIATION13Onyama Limba
1044Jones VocelkaSpain2025-09-16Morlong Associates UNQUALIFIED85Anna Fali
1045Aruna FigeroaGermany2025-09-18Dorl, James J Esq UNQUALIFIED17Xuxue Feng
1046Wickens NestleSpain2025-09-20Chanay, Jeffrey A Esq QUALIFIED76Elwin Sharvill
1047Rodrigues CampainItaly2025-09-14Feiner Bros PROPOSAL81Stephen Shaw
1048Mayumi KolmetzFrance2025-09-18Chanay, Jeffrey A Esq UNQUALIFIED71Amy Elsner
1049Chavez BriddickIndia2025-09-17Printing Dimensions PROPOSAL83Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Sinclair WaycottFranceAsiya Javayant QUALIFIED
Leon OldroydUnited KingdomXuxue Feng RENEWAL
Leja CaldareraSpainStephen Shaw NEGOTIATION
Adams MorascaIndiaAnna Fali UNQUALIFIED
Julie StensethUnited KingdomAmy Elsner QUALIFIED
Ashley DoeSpainAmy Elsner NEGOTIATION
Leja CaldareraFranceOnyama Limba QUALIFIED
Jones VocelkaGermanyXuxue Feng UNQUALIFIED
Jeanfrancois VenereArgentinaIvan Magalhaes QUALIFIED
Claire TollnerBrazilStephen Shaw QUALIFIED
Misaki RoysterIndiaAnna Fali QUALIFIED
Adams MorascaCanadaAmy Elsner UNQUALIFIED
Munro FerenczJapanBernardo Dominic NEW
Misaki RoysterIndiaAsiya Javayant PROPOSAL
Emily WhobreyBrazilAnna Fali QUALIFIED
James ButtGermanyIoni Bowcher NEGOTIATION
Izzy GarufiSpainAnna Fali QUALIFIED
Francesco ShinkoBrazilIvan Magalhaes PROPOSAL
Antonio CaudyBrazilIoni Bowcher NEGOTIATION
Aditya KuskoBrazilIvan Magalhaes NEGOTIATION
Jeanfrancois VenereUnited KingdomOnyama Limba UNQUALIFIED
Izzy GarufiAustraliaAnna Fali NEW
David DarakjySpainOnyama Limba QUALIFIED
Jennifer AmigonJapanElwin Sharvill QUALIFIED
Emily WhobreyGermanyAsiya Javayant QUALIFIED
Izzy GarufiItalyAsiya Javayant PROPOSAL
Jones VocelkaIndiaOnyama Limba QUALIFIED
Misaki RoysterJapanAnna Fali QUALIFIED
Rodrigues CampainAustraliaAsiya Javayant RENEWAL
Arvin AlbaresUnited KingdomIvan Magalhaes QUALIFIED
Salvatore StockhamAustraliaAmy Elsner PROPOSAL
Morrow RutaIndiaElwin Sharvill UNQUALIFIED
David DarakjyFranceStephen Shaw NEW
Juan WieserIndiaXuxue Feng UNQUALIFIED
Antonio CaudyAustraliaStephen Shaw NEGOTIATION
Silvio SlusarskiJapanAmy Elsner PROPOSAL
Maisha RulapaughBrazilIoni Bowcher QUALIFIED
Arvin AlbaresCanadaStephen Shaw NEGOTIATION
James ButtBrazilStephen Shaw RENEWAL
Alejandro PerinArgentinaAmy Elsner UNQUALIFIED
Jefferson SchemmerGermanyXuxue Feng NEGOTIATION
Juan WieserCanadaElwin Sharvill NEW
Kaitlin OstroskyAustraliaIoni Bowcher NEGOTIATION
Smith GlickFranceStephen Shaw RENEWAL
Faith GillianArgentinaXuxue Feng RENEWAL
Wickens NestleAustraliaStephen Shaw QUALIFIED
Julie StensethSpainStephen Shaw QUALIFIED
David DarakjyRussiaBernardo Dominic NEGOTIATION
Jennifer AmigonBrazilAsiya Javayant PROPOSAL
Leja CaldareraUnited KingdomAsiya Javayant RENEWAL
Frozen Columns
Name
Kaitlin Ostrosky
Leja Caldarera
Aika Inouye
Emily Whobrey
Ashley Doe
Johnson Sergi
Smith Glick
Emily Whobrey
Morrow Ruta
David Darakjy
Leon Oldroyd
Sinclair Waycott
Chavez Briddick
Nicolas Iturbide
Juan Wieser
Rodrigues Campain
Aika Inouye
Johnson Sergi
Misaki Royster
Arvin Albares
Smith Glick
Aruna Figeroa
Aruna Figeroa
Kadeem Flosi
Aditya Kusko
Leon Oldroyd
Sinclair Waycott
Aika Inouye
Nicolas Iturbide
Salvatore Stockham
James Butt
Jones Vocelka
Adams Morasca
Izzy Garufi
Smith Glick
Jefferson Schemmer
David Darakjy
Juan Wieser
Maisha Rulapaugh
Maisha Rulapaugh
Emily Whobrey
Alejandro Perin
Tony Foller
Jennifer Amigon
Misaki Royster
Wickens Nestle
David Darakjy
Rodrigues Campain
Kaitlin Ostrosky
Claire Tollner
IdCountryDate
1000Japan2025-09-09
1001Canada2025-09-03
1002Japan2025-09-03
1003Argentina2025-09-18
1004Italy2025-08-29
1005Japan2025-09-05
1006United Kingdom2025-08-27
1007Canada2025-09-12
1008France2025-09-03
1009Germany2025-09-11
1010Russia2025-08-30
1011Japan2025-09-13
1012United Kingdom2025-09-10
1013Argentina2025-09-12
1014Italy2025-08-29
1015France2025-09-06
1016France2025-09-22
1017Brazil2025-08-29
1018Spain2025-09-09
1019Italy2025-09-05
1020France2025-08-24
1021Brazil2025-09-07
1022Russia2025-09-05
1023Brazil2025-09-05
1024Germany2025-09-05
1025United Kingdom2025-08-26
1026Canada2025-09-19
1027Germany2025-09-17
1028Spain2025-08-24
1029France2025-08-25
1030Australia2025-09-09
1031Argentina2025-08-25
1032Spain2025-09-03
1033Argentina2025-08-27
1034Germany2025-08-30
1035Russia2025-09-21
1036United Kingdom2025-09-12
1037Brazil2025-09-01
1038Australia2025-08-27
1039Germany2025-09-10
1040Russia2025-09-12
1041Japan2025-08-26
1042Italy2025-08-24
1043Spain2025-09-09
1044Brazil2025-09-05
1045Brazil2025-08-24
1046Italy2025-09-18
1047France2025-09-01
1048Germany2025-09-03
1049Russia2025-09-17

On-Demand Data

NameIdCountryDate
James Butt1000France2025-09-11
Izzy Garufi1001Germany2025-08-31
Deepesh Chui1002India2025-08-26
Julie Stenseth1003Canada2025-09-09
Aika Inouye1004Spain2025-09-17
Leja Caldarera1005France2025-09-04
James Butt1006Canada2025-09-21
Ivar Paprocki1007United Kingdom2025-08-30
David Darakjy1008Japan2025-08-30
Nicolas Iturbide1009United Kingdom2025-09-04
Smith Glick1010United Kingdom2025-09-04
Morrow Ruta1011France2025-09-07
Silvio Slusarski1012Australia2025-08-28
Juan Wieser1013Brazil2025-09-15
Kadeem Flosi1014United Kingdom2025-09-05
Maisha Rulapaugh1015Australia2025-09-22
Kadeem Flosi1016Australia2025-08-25
Emily Whobrey1017France2025-08-25
Tony Foller1018Australia2025-09-04
Ricardo Gaucho1019India2025-08-24
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Morrow RutaAustraliaBernardo Dominic RENEWAL
Cody SaylorsFranceAnna Fali QUALIFIED
Emily WhobreyGermanyElwin Sharvill UNQUALIFIED
Jefferson SchemmerItalyXuxue Feng PROPOSAL
Kaitlin OstroskyItalyOnyama Limba QUALIFIED
Stacey MacleadRussiaIoni Bowcher RENEWAL
Costa DilliardBrazilIvan Magalhaes NEW
Aditya KuskoBrazilBernardo Dominic RENEWAL
Adams MorascaIndiaBernardo Dominic NEGOTIATION
Aditya KuskoBrazilBernardo Dominic PROPOSAL
Darci PoquetteRussiaElwin Sharvill NEW
Munro FerenczAustraliaAnna Fali RENEWAL
Jones VocelkaIndiaAnna Fali QUALIFIED
Tony FollerAustraliaAsiya Javayant QUALIFIED
Kaitlin OstroskyRussiaAmy Elsner UNQUALIFIED
Murillo MaletBrazilBernardo Dominic QUALIFIED
Julie StensethUnited KingdomXuxue Feng RENEWAL
Julie StensethAustraliaAmy Elsner QUALIFIED
Alejandro PerinRussiaBernardo Dominic PROPOSAL
Kaitlin OstroskyJapanIoni Bowcher NEGOTIATION
Morrow RutaArgentinaXuxue Feng NEW
Darci PoquetteUnited KingdomElwin Sharvill UNQUALIFIED
Misaki RoysterIndiaElwin Sharvill QUALIFIED
Mayumi KolmetzBrazilIvan Magalhaes NEGOTIATION
Julie StensethJapanXuxue Feng PROPOSAL
Kaitlin OstroskyUnited KingdomBernardo Dominic NEGOTIATION
Smith GlickAustraliaIvan Magalhaes NEGOTIATION
Maria MarrierIndiaAmy Elsner NEGOTIATION
Aika InouyeItalyElwin Sharvill NEGOTIATION
James ButtRussiaOnyama Limba NEW
Aditya KuskoSpainIoni Bowcher UNQUALIFIED
Maria MarrierUnited KingdomOnyama Limba RENEWAL
Darci PoquetteBrazilStephen Shaw NEGOTIATION
Arvin AlbaresRussiaStephen Shaw UNQUALIFIED
Jennifer AmigonSpainOnyama Limba UNQUALIFIED
Jeanfrancois VenereBrazilStephen Shaw PROPOSAL
Aditya KuskoGermanyXuxue Feng NEGOTIATION
Ricardo GauchoRussiaStephen Shaw RENEWAL
Ricardo GauchoJapanBernardo Dominic QUALIFIED
Cody SaylorsUnited KingdomOnyama Limba 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>