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
Maisha RulapaughItalyAmy Elsner NEGOTIATION
Rodrigues CampainItalyIoni Bowcher RENEWAL
Faith GillianFranceBernardo Dominic UNQUALIFIED
Jennifer AmigonCanadaStephen Shaw UNQUALIFIED
James ButtJapanElwin Sharvill NEW
Aditya KuskoItalyAnna Fali RENEWAL
Juan WieserBrazilIoni Bowcher UNQUALIFIED
Aika InouyeAustraliaAsiya Javayant RENEWAL
Aika InouyeBrazilStephen Shaw PROPOSAL
Claire TollnerArgentinaElwin Sharvill PROPOSAL
Kaitlin OstroskyBrazilOnyama Limba QUALIFIED
Izzy GarufiIndiaBernardo Dominic UNQUALIFIED
Salvatore StockhamFranceXuxue Feng QUALIFIED
Jennifer AmigonSpainAmy Elsner NEGOTIATION
Cody SaylorsJapanBernardo Dominic NEW
Salvatore StockhamAustraliaIoni Bowcher RENEWAL
Misaki RoysterIndiaStephen Shaw PROPOSAL
Salvatore StockhamAustraliaAsiya Javayant RENEWAL
Salvatore StockhamSpainOnyama Limba PROPOSAL
Cody SaylorsUnited KingdomStephen Shaw UNQUALIFIED
Leon OldroydFranceAmy Elsner UNQUALIFIED
Alejandro PerinItalyAnna Fali UNQUALIFIED
Johnson SergiItalyXuxue Feng RENEWAL
Ashley DoeItalyAsiya Javayant NEW
Kaitlin OstroskyRussiaIoni Bowcher NEW
Octavia MaletItalyIvan Magalhaes RENEWAL
Chavez BriddickIndiaElwin Sharvill RENEWAL
Costa DilliardArgentinaElwin Sharvill PROPOSAL
Aditya KuskoSpainAnna Fali RENEWAL
Ricardo GauchoAustraliaIoni Bowcher UNQUALIFIED
David DarakjyArgentinaAnna Fali NEGOTIATION
Murillo MaletIndiaAsiya Javayant NEW
Leja CaldareraSpainAsiya Javayant NEGOTIATION
Munro FerenczAustraliaElwin Sharvill UNQUALIFIED
Mayumi KolmetzIndiaStephen Shaw NEGOTIATION
Alejandro PerinCanadaElwin Sharvill QUALIFIED
Octavia MaletCanadaAsiya Javayant RENEWAL
Izzy GarufiCanadaIvan Magalhaes NEW
Maisha RulapaughUnited KingdomIoni Bowcher QUALIFIED
Johnson SergiAustraliaElwin Sharvill PROPOSAL
David DarakjyAustraliaAmy Elsner NEW
Smith GlickBrazilAnna Fali QUALIFIED
Juan WieserCanadaOnyama Limba RENEWAL
Rodrigues CampainFranceXuxue Feng NEGOTIATION
Mayumi KolmetzSpainXuxue Feng NEW
Aditya KuskoIndiaIoni Bowcher UNQUALIFIED
Mayumi KolmetzAustraliaAmy Elsner PROPOSAL
Clifford RimFranceElwin Sharvill NEW
Francesco ShinkoUnited KingdomXuxue Feng RENEWAL
Sinclair WaycottSpainElwin Sharvill QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Nicolas IturbideJapanAsiya Javayant PROPOSAL
Mayumi KolmetzUnited KingdomBernardo Dominic NEGOTIATION
Aruna FigeroaUnited KingdomElwin Sharvill QUALIFIED
Faith GillianBrazilOnyama Limba PROPOSAL
Maisha RulapaughUnited KingdomOnyama Limba QUALIFIED
Costa DilliardItalyBernardo Dominic UNQUALIFIED
Misaki RoysterAustraliaStephen Shaw QUALIFIED
Munro FerenczRussiaElwin Sharvill RENEWAL
Wickens NestleGermanyIvan Magalhaes UNQUALIFIED
Ricardo GauchoSpainXuxue Feng QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Maisha RulapaughUnited Kingdom2026-05-19Rousseaux, Michael Esq PROPOSAL0Xuxue Feng
1001Cody SaylorsItaly2026-05-11Dorl, James J Esq NEGOTIATION3Elwin Sharvill
1002Octavia MaletUnited Kingdom2026-06-09Dorl, James J Esq QUALIFIED84Ivan Magalhaes
1003Wickens NestleFrance2026-06-07Rousseaux, Michael Esq PROPOSAL49Onyama Limba
1004Leja CaldareraCanada2026-06-06Feltz Printing Service RENEWAL49Stephen Shaw
1005Darci PoquetteUnited Kingdom2026-05-21Truhlar And Truhlar Attys QUALIFIED47Bernardo Dominic
1006Silvio SlusarskiRussia2026-05-26Dorl, James J Esq RENEWAL87Anna Fali
1007James ButtGermany2026-06-09Dorl, James J Esq RENEWAL46Amy Elsner
1008Ricardo GauchoSpain2026-05-29Rousseaux, Michael Esq RENEWAL78Ioni Bowcher
1009Misaki RoysterRussia2026-05-24Chanay, Jeffrey A Esq NEW20Ioni Bowcher
1010Smith GlickRussia2026-05-27Printing Dimensions QUALIFIED27Ivan Magalhaes
1011Wickens NestleRussia2026-05-30Rangoni Of Florence NEGOTIATION9Ioni Bowcher
1012Leon OldroydIndia2026-06-03Chemel, James L Cpa RENEWAL98Asiya Javayant
1013Francesco ShinkoCanada2026-06-01Rangoni Of Florence RENEWAL41Onyama Limba
1014Smith GlickBrazil2026-05-19Rangoni Of Florence NEGOTIATION74Bernardo Dominic
1015Wickens NestleBrazil2026-06-01Chanay, Jeffrey A Esq UNQUALIFIED74Bernardo Dominic
1016Costa DilliardJapan2026-06-07Printing Dimensions UNQUALIFIED80Onyama Limba
1017Silvio SlusarskiArgentina2026-05-23Rousseaux, Michael Esq NEW22Bernardo Dominic
1018Jones VocelkaArgentina2026-06-01Rangoni Of Florence RENEWAL87Ioni Bowcher
1019Salvatore StockhamCanada2026-06-03Rousseaux, Michael Esq RENEWAL89Anna Fali
1020Nicolas IturbideBrazil2026-05-19Rangoni Of Florence NEGOTIATION0Ivan Magalhaes
1021Alejandro PerinCanada2026-05-15Chanay, Jeffrey A Esq QUALIFIED92Onyama Limba
1022Leja CaldareraAustralia2026-05-13Benton, John B Jr UNQUALIFIED92Ivan Magalhaes
1023Emily WhobreySpain2026-05-16Benton, John B Jr NEGOTIATION9Anna Fali
1024Smith GlickAustralia2026-06-05Feiner Bros QUALIFIED40Xuxue Feng
1025Emily WhobreyGermany2026-06-09Rangoni Of Florence NEGOTIATION13Asiya Javayant
1026Jones VocelkaRussia2026-06-08Truhlar And Truhlar Attys QUALIFIED29Stephen Shaw
1027Smith GlickUnited Kingdom2026-06-01Chemel, James L Cpa RENEWAL51Bernardo Dominic
1028David DarakjyIndia2026-05-17Printing Dimensions RENEWAL82Bernardo Dominic
1029Aruna FigeroaItaly2026-05-14Feiner Bros UNQUALIFIED34Onyama Limba
1030Sinclair WaycottRussia2026-06-02Chemel, James L Cpa PROPOSAL63Bernardo Dominic
1031Stacey MacleadSpain2026-05-21King, Christopher A Esq RENEWAL14Anna Fali
1032James ButtCanada2026-05-11Truhlar And Truhlar Attys NEGOTIATION91Anna Fali
1033Sinclair WaycottSpain2026-06-02Rangoni Of Florence UNQUALIFIED65Elwin Sharvill
1034Jones VocelkaAustralia2026-05-14Truhlar And Truhlar Attys QUALIFIED36Amy Elsner
1035Francesco ShinkoArgentina2026-05-12Chemel, James L Cpa NEW67Xuxue Feng
1036Octavia MaletUnited Kingdom2026-05-13Rousseaux, Michael Esq NEGOTIATION86Asiya Javayant
1037Francesco ShinkoJapan2026-05-30Rousseaux, Michael Esq NEGOTIATION37Anna Fali
1038Munro FerenczGermany2026-06-06Chanay, Jeffrey A Esq QUALIFIED87Xuxue Feng
1039Aruna FigeroaBrazil2026-06-06Feltz Printing Service NEGOTIATION75Stephen Shaw
1040Leja CaldareraCanada2026-05-28Chapman, Ross E Esq RENEWAL8Ivan Magalhaes
1041Sinclair WaycottRussia2026-05-19Printing Dimensions RENEWAL22Ivan Magalhaes
1042Cody SaylorsAustralia2026-05-14Rousseaux, Michael Esq NEGOTIATION87Bernardo Dominic
1043Francesco ShinkoAustralia2026-06-05Truhlar And Truhlar Attys NEW74Asiya Javayant
1044Juan WieserRussia2026-06-09Feltz Printing Service NEGOTIATION84Elwin Sharvill
1045Jefferson SchemmerUnited Kingdom2026-05-17Morlong Associates PROPOSAL25Xuxue Feng
1046Leon OldroydIndia2026-06-03Truhlar And Truhlar Attys RENEWAL35Anna Fali
1047Juan WieserRussia2026-06-09Feltz Printing Service RENEWAL58Ivan Magalhaes
1048Adams MorascaItaly2026-06-08Benton, John B Jr NEW3Anna Fali
1049Emily WhobreyUnited Kingdom2026-05-25Feiner Bros RENEWAL35Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Ivar PaprockiJapanIvan Magalhaes PROPOSAL
Antonio CaudyItalyOnyama Limba RENEWAL
Jones VocelkaRussiaXuxue Feng UNQUALIFIED
Kadeem FlosiIndiaAmy Elsner PROPOSAL
Izzy GarufiIndiaXuxue Feng PROPOSAL
Costa DilliardItalyXuxue Feng QUALIFIED
Clifford RimArgentinaIvan Magalhaes QUALIFIED
Emily WhobreyIndiaIoni Bowcher PROPOSAL
Juan WieserAustraliaElwin Sharvill PROPOSAL
Maisha RulapaughFranceIoni Bowcher NEW
Silvio SlusarskiJapanBernardo Dominic QUALIFIED
Kaitlin OstroskyArgentinaAsiya Javayant PROPOSAL
Costa DilliardFranceIoni Bowcher PROPOSAL
Smith GlickUnited KingdomElwin Sharvill QUALIFIED
Costa DilliardItalyStephen Shaw PROPOSAL
James ButtArgentinaOnyama Limba NEW
Leja CaldareraArgentinaAmy Elsner QUALIFIED
James ButtSpainIvan Magalhaes RENEWAL
Aditya KuskoJapanIoni Bowcher QUALIFIED
Leja CaldareraBrazilAmy Elsner RENEWAL
Morrow RutaFranceIvan Magalhaes RENEWAL
Adams MorascaCanadaElwin Sharvill NEW
Maisha RulapaughArgentinaIvan Magalhaes QUALIFIED
Alejandro PerinSpainElwin Sharvill PROPOSAL
Deepesh ChuiAustraliaAmy Elsner NEW
Aika InouyeSpainElwin Sharvill QUALIFIED
Clifford RimGermanyOnyama Limba RENEWAL
Mayumi KolmetzArgentinaXuxue Feng RENEWAL
Smith GlickItalyIvan Magalhaes UNQUALIFIED
Clifford RimSpainAnna Fali QUALIFIED
Leon OldroydAustraliaIoni Bowcher NEW
Kadeem FlosiItalyOnyama Limba NEGOTIATION
Cody SaylorsSpainElwin Sharvill NEGOTIATION
Arvin AlbaresItalyAmy Elsner NEW
Sinclair WaycottSpainIvan Magalhaes RENEWAL
Clifford RimRussiaIoni Bowcher RENEWAL
Maria MarrierJapanOnyama Limba NEW
Julie StensethJapanIoni Bowcher RENEWAL
Johnson SergiJapanStephen Shaw NEW
Smith GlickSpainXuxue Feng RENEWAL
Mayumi KolmetzJapanElwin Sharvill PROPOSAL
Jefferson SchemmerBrazilStephen Shaw PROPOSAL
Johnson SergiUnited KingdomIoni Bowcher RENEWAL
Sinclair WaycottUnited KingdomAsiya Javayant QUALIFIED
Darci PoquetteFranceIvan Magalhaes UNQUALIFIED
Jeanfrancois VenereSpainStephen Shaw NEW
Ricardo GauchoArgentinaAmy Elsner PROPOSAL
Deepesh ChuiRussiaIvan Magalhaes NEGOTIATION
Mayumi KolmetzAustraliaBernardo Dominic UNQUALIFIED
Maisha RulapaughUnited KingdomXuxue Feng PROPOSAL
Frozen Columns
Name
Kaitlin Ostrosky
Aika Inouye
Kaitlin Ostrosky
Izzy Garufi
Salvatore Stockham
Octavia Malet
Mujtaba Nicka
Maisha Rulapaugh
Clifford Rim
Cody Saylors
Faith Gillian
Aditya Kusko
Tony Foller
Faith Gillian
Arvin Albares
Silvio Slusarski
Aditya Kusko
Juan Wieser
Mujtaba Nicka
Deepesh Chui
Clifford Rim
Munro Ferencz
Jennifer Amigon
Francesco Shinko
David Darakjy
Stacey Maclead
Faith Gillian
Kaitlin Ostrosky
Arvin Albares
Aika Inouye
Chavez Briddick
Ricardo Gaucho
Octavia Malet
Darci Poquette
Cody Saylors
Jeanfrancois Venere
Kaitlin Ostrosky
Kadeem Flosi
Juan Wieser
Jennifer Amigon
Emily Whobrey
Salvatore Stockham
Deepesh Chui
Aika Inouye
Aika Inouye
Juan Wieser
Ricardo Gaucho
Mujtaba Nicka
Maria Marrier
Morrow Ruta
IdCountryDate
1000India2026-06-03
1001India2026-05-13
1002Australia2026-06-05
1003Japan2026-05-16
1004Brazil2026-05-25
1005Spain2026-05-28
1006United Kingdom2026-06-07
1007France2026-05-23
1008Russia2026-06-03
1009Australia2026-05-25
1010United Kingdom2026-05-29
1011Japan2026-06-02
1012France2026-06-02
1013Japan2026-05-17
1014Italy2026-05-14
1015India2026-06-05
1016France2026-05-24
1017Argentina2026-05-13
1018France2026-06-02
1019France2026-05-15
1020Russia2026-06-01
1021France2026-05-28
1022Russia2026-05-20
1023Germany2026-05-29
1024Russia2026-06-01
1025Spain2026-05-15
1026United Kingdom2026-05-26
1027India2026-06-05
1028Canada2026-06-07
1029Brazil2026-06-05
1030United Kingdom2026-06-08
1031Canada2026-06-09
1032Russia2026-05-31
1033Australia2026-05-31
1034Russia2026-06-06
1035Canada2026-05-30
1036Argentina2026-05-20
1037Brazil2026-05-31
1038Argentina2026-05-12
1039Italy2026-05-17
1040India2026-05-26
1041Italy2026-05-30
1042United Kingdom2026-05-26
1043Brazil2026-05-13
1044Brazil2026-05-30
1045Spain2026-05-24
1046United Kingdom2026-05-18
1047United Kingdom2026-06-06
1048United Kingdom2026-05-17
1049Japan2026-06-02

On-Demand Data

NameIdCountryDate
Cody Saylors1000Canada2026-06-06
Antonio Caudy1001France2026-05-22
Johnson Sergi1002Spain2026-06-05
Izzy Garufi1003United Kingdom2026-05-18
Arvin Albares1004Argentina2026-06-06
Izzy Garufi1005United Kingdom2026-05-31
Salvatore Stockham1006Brazil2026-05-19
Maisha Rulapaugh1007Argentina2026-05-13
Salvatore Stockham1008Australia2026-05-27
Julie Stenseth1009Italy2026-06-08
Faith Gillian1010Australia2026-05-23
Silvio Slusarski1011Australia2026-05-16
Arvin Albares1012India2026-05-16
Emily Whobrey1013Japan2026-06-03
Misaki Royster1014India2026-05-12
Mayumi Kolmetz1015Canada2026-06-07
Adams Morasca1016United Kingdom2026-05-31
Sinclair Waycott1017Brazil2026-05-25
Ricardo Gaucho1018Italy2026-05-13
Misaki Royster1019France2026-05-15
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Smith GlickBrazilStephen Shaw PROPOSAL
Maria MarrierArgentinaAmy Elsner NEW
Tony FollerGermanyStephen Shaw QUALIFIED
Isabel BowleyUnited KingdomAsiya Javayant NEW
Johnson SergiCanadaIoni Bowcher QUALIFIED
Aruna FigeroaCanadaIvan Magalhaes NEGOTIATION
Costa DilliardRussiaXuxue Feng QUALIFIED
Izzy GarufiFranceAsiya Javayant NEGOTIATION
Izzy GarufiFranceXuxue Feng PROPOSAL
Ivar PaprockiItalyIvan Magalhaes NEW
Faith GillianRussiaIvan Magalhaes RENEWAL
Munro FerenczIndiaAmy Elsner PROPOSAL
Izzy GarufiAustraliaStephen Shaw NEW
Jones VocelkaUnited KingdomAsiya Javayant QUALIFIED
Morrow RutaJapanIvan Magalhaes RENEWAL
Nicolas IturbideCanadaStephen Shaw NEGOTIATION
Misaki RoysterItalyAmy Elsner UNQUALIFIED
Jefferson SchemmerJapanElwin Sharvill NEGOTIATION
Darci PoquetteGermanyIoni Bowcher NEGOTIATION
Mujtaba NickaCanadaBernardo Dominic NEGOTIATION
Rodrigues CampainFranceXuxue Feng QUALIFIED
Morrow RutaRussiaAnna Fali PROPOSAL
Kaitlin OstroskyItalyXuxue Feng RENEWAL
Jefferson SchemmerRussiaOnyama Limba RENEWAL
Alejandro PerinIndiaBernardo Dominic UNQUALIFIED
Deepesh ChuiIndiaIvan Magalhaes PROPOSAL
Costa DilliardFranceAsiya Javayant NEW
Arvin AlbaresIndiaXuxue Feng NEGOTIATION
Izzy GarufiSpainAnna Fali QUALIFIED
Ivar PaprockiFranceOnyama Limba UNQUALIFIED
Maisha RulapaughBrazilIvan Magalhaes PROPOSAL
Sinclair WaycottUnited KingdomAsiya Javayant UNQUALIFIED
Ivar PaprockiAustraliaAsiya Javayant RENEWAL
Aruna FigeroaBrazilAsiya Javayant NEW
Ivar PaprockiFranceStephen Shaw UNQUALIFIED
Faith GillianJapanIoni Bowcher NEW
Darci PoquetteFranceAmy Elsner RENEWAL
Jones VocelkaUnited KingdomAsiya Javayant UNQUALIFIED
Aditya KuskoGermanyAmy Elsner PROPOSAL
Antonio CaudyIndiaIoni Bowcher PROPOSAL

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