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
Clifford RimAustraliaAsiya Javayant RENEWAL
Julie StensethArgentinaBernardo Dominic RENEWAL
Jones VocelkaArgentinaElwin Sharvill NEGOTIATION
James ButtSpainIvan Magalhaes PROPOSAL
Faith GillianJapanIoni Bowcher NEGOTIATION
Alejandro PerinCanadaIvan Magalhaes RENEWAL
Ivar PaprockiSpainOnyama Limba RENEWAL
Tony FollerUnited KingdomAnna Fali NEW
Smith GlickArgentinaXuxue Feng QUALIFIED
Misaki RoysterGermanyIvan Magalhaes QUALIFIED
Greenwood BologniaFranceOnyama Limba QUALIFIED
Ivar PaprockiCanadaIvan Magalhaes PROPOSAL
Cody SaylorsItalyBernardo Dominic NEGOTIATION
Sinclair WaycottJapanIoni Bowcher NEW
Sinclair WaycottRussiaIoni Bowcher NEGOTIATION
Ivar PaprockiItalyIoni Bowcher NEW
Jeanfrancois VenereJapanBernardo Dominic NEGOTIATION
Mujtaba NickaIndiaStephen Shaw NEW
Kadeem FlosiCanadaXuxue Feng PROPOSAL
Cody SaylorsGermanyAsiya Javayant QUALIFIED
Izzy GarufiArgentinaIvan Magalhaes QUALIFIED
Ricardo GauchoRussiaOnyama Limba NEGOTIATION
Leon OldroydItalyIoni Bowcher UNQUALIFIED
Ricardo GauchoIndiaElwin Sharvill UNQUALIFIED
Izzy GarufiSpainOnyama Limba QUALIFIED
Stacey MacleadBrazilXuxue Feng QUALIFIED
James ButtFranceAsiya Javayant NEW
Nicolas IturbideJapanBernardo Dominic NEGOTIATION
Adams MorascaArgentinaXuxue Feng NEW
Izzy GarufiIndiaXuxue Feng RENEWAL
Misaki RoysterBrazilBernardo Dominic QUALIFIED
Smith GlickJapanAnna Fali UNQUALIFIED
Rodrigues CampainItalyXuxue Feng NEGOTIATION
Silvio SlusarskiBrazilXuxue Feng NEGOTIATION
Costa DilliardCanadaAsiya Javayant QUALIFIED
Alejandro PerinGermanyAmy Elsner UNQUALIFIED
Smith GlickCanadaElwin Sharvill QUALIFIED
James ButtJapanBernardo Dominic NEW
Arvin AlbaresItalyIoni Bowcher RENEWAL
Leon OldroydCanadaElwin Sharvill NEGOTIATION
Silvio SlusarskiArgentinaElwin Sharvill NEGOTIATION
Munro FerenczUnited KingdomElwin Sharvill PROPOSAL
Rodrigues CampainJapanOnyama Limba QUALIFIED
Jones VocelkaArgentinaAmy Elsner NEW
Jones VocelkaCanadaXuxue Feng UNQUALIFIED
Jones VocelkaRussiaXuxue Feng QUALIFIED
Maisha RulapaughFranceXuxue Feng PROPOSAL
Cody SaylorsIndiaIoni Bowcher QUALIFIED
Antonio CaudyGermanyAnna Fali PROPOSAL
Julie StensethAustraliaOnyama Limba RENEWAL
Horizontal
NameCountryRepresentativeStatus
Mayumi KolmetzFranceIoni Bowcher PROPOSAL
Francesco ShinkoRussiaBernardo Dominic PROPOSAL
Darci PoquetteUnited KingdomAsiya Javayant RENEWAL
Faith GillianUnited KingdomOnyama Limba NEGOTIATION
Mayumi KolmetzArgentinaAmy Elsner QUALIFIED
Stacey MacleadJapanXuxue Feng UNQUALIFIED
Ricardo GauchoBrazilXuxue Feng RENEWAL
Stacey MacleadBrazilOnyama Limba RENEWAL
Jefferson SchemmerFranceAmy Elsner NEGOTIATION
Murillo MaletAustraliaAsiya Javayant UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Tony FollerItaly2026-04-06King, Christopher A Esq QUALIFIED34Stephen Shaw
1001Smith GlickSpain2026-04-12Chapman, Ross E Esq PROPOSAL85Ivan Magalhaes
1002Emily WhobreyCanada2026-04-07King, Christopher A Esq UNQUALIFIED98Anna Fali
1003Octavia MaletBrazil2026-04-10Chapman, Ross E Esq NEW39Elwin Sharvill
1004Jones VocelkaGermany2026-04-21Rangoni Of Florence NEW32Elwin Sharvill
1005Claire TollnerBrazil2026-04-04Commercial Press NEGOTIATION18Stephen Shaw
1006Izzy GarufiArgentina2026-04-28Chapman, Ross E Esq NEGOTIATION9Amy Elsner
1007David DarakjyCanada2026-04-30Rousseaux, Michael Esq QUALIFIED39Bernardo Dominic
1008Aika InouyeGermany2026-04-20Chanay, Jeffrey A Esq NEW71Asiya Javayant
1009Murillo MaletBrazil2026-04-06Feiner Bros NEW7Amy Elsner
1010Nicolas IturbideBrazil2026-05-02King, Christopher A Esq NEGOTIATION44Elwin Sharvill
1011Adams MorascaFrance2026-04-06Morlong Associates PROPOSAL44Bernardo Dominic
1012Arvin AlbaresBrazil2026-04-27King, Christopher A Esq UNQUALIFIED69Ivan Magalhaes
1013Morrow RutaItaly2026-04-23King, Christopher A Esq RENEWAL59Onyama Limba
1014Mayumi KolmetzRussia2026-04-26Morlong Associates NEW23Xuxue Feng
1015James ButtBrazil2026-04-22Printing Dimensions NEGOTIATION21Ioni Bowcher
1016Claire TollnerCanada2026-04-27Benton, John B Jr QUALIFIED32Ivan Magalhaes
1017Isabel BowleyBrazil2026-04-17King, Christopher A Esq QUALIFIED32Stephen Shaw
1018Kadeem FlosiAustralia2026-04-03Chemel, James L Cpa PROPOSAL6Anna Fali
1019Kadeem FlosiRussia2026-04-13Buckley Miller Wright PROPOSAL42Stephen Shaw
1020Alejandro PerinRussia2026-04-17Chapman, Ross E Esq NEGOTIATION86Onyama Limba
1021Ivar PaprockiFrance2026-04-23Buckley Miller Wright RENEWAL59Xuxue Feng
1022Isabel BowleyCanada2026-04-18Dorl, James J Esq RENEWAL19Asiya Javayant
1023Kaitlin OstroskySpain2026-04-12Feiner Bros NEW3Elwin Sharvill
1024Julie StensethUnited Kingdom2026-05-02Rangoni Of Florence PROPOSAL1Elwin Sharvill
1025Ivar PaprockiCanada2026-04-30Feiner Bros RENEWAL3Stephen Shaw
1026James ButtUnited Kingdom2026-04-21Commercial Press NEW16Ioni Bowcher
1027Adams MorascaRussia2026-04-12Rangoni Of Florence NEW36Asiya Javayant
1028Cody SaylorsAustralia2026-04-14Buckley Miller Wright NEW62Ioni Bowcher
1029Isabel BowleyJapan2026-04-27Rousseaux, Michael Esq NEW26Asiya Javayant
1030Murillo MaletIndia2026-04-06Truhlar And Truhlar Attys UNQUALIFIED34Onyama Limba
1031Mujtaba NickaJapan2026-04-10Feiner Bros UNQUALIFIED49Ioni Bowcher
1032Costa DilliardIndia2026-04-11Buckley Miller Wright PROPOSAL57Onyama Limba
1033Juan WieserCanada2026-04-23Chanay, Jeffrey A Esq UNQUALIFIED7Asiya Javayant
1034Tony FollerUnited Kingdom2026-04-06Buckley Miller Wright NEW94Ivan Magalhaes
1035Mujtaba NickaGermany2026-04-27Rangoni Of Florence RENEWAL59Xuxue Feng
1036Ricardo GauchoItaly2026-04-27Buckley Miller Wright NEGOTIATION83Ivan Magalhaes
1037Morrow RutaSpain2026-04-07Buckley Miller Wright NEW29Bernardo Dominic
1038Rodrigues CampainArgentina2026-04-05Truhlar And Truhlar Attys NEW8Ivan Magalhaes
1039Ashley DoeRussia2026-04-24Chanay, Jeffrey A Esq QUALIFIED51Xuxue Feng
1040Aika InouyeSpain2026-04-21Benton, John B Jr NEGOTIATION94Asiya Javayant
1041Sinclair WaycottIndia2026-04-08Chemel, James L Cpa QUALIFIED51Ioni Bowcher
1042Kaitlin OstroskyAustralia2026-04-29Rousseaux, Michael Esq QUALIFIED1Elwin Sharvill
1043Ivar PaprockiArgentina2026-04-23Morlong Associates NEGOTIATION42Anna Fali
1044Alejandro PerinItaly2026-04-13Feiner Bros NEW42Amy Elsner
1045Maisha RulapaughIndia2026-04-22Chanay, Jeffrey A Esq UNQUALIFIED13Bernardo Dominic
1046Adams MorascaItaly2026-04-30Feltz Printing Service UNQUALIFIED92Amy Elsner
1047Kaitlin OstroskySpain2026-04-10Chemel, James L Cpa QUALIFIED91Elwin Sharvill
1048Costa DilliardArgentina2026-04-04Morlong Associates PROPOSAL7Ioni Bowcher
1049Munro FerenczAustralia2026-04-15Chapman, Ross E Esq UNQUALIFIED16Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Cody SaylorsArgentinaElwin Sharvill NEGOTIATION
Kaitlin OstroskyAustraliaAsiya Javayant NEGOTIATION
Juan WieserItalyAnna Fali NEGOTIATION
Aika InouyeBrazilOnyama Limba RENEWAL
Ricardo GauchoCanadaAmy Elsner RENEWAL
Adams MorascaItalyAmy Elsner QUALIFIED
Izzy GarufiFranceIvan Magalhaes RENEWAL
Cody SaylorsItalyElwin Sharvill NEW
Mujtaba NickaArgentinaIoni Bowcher QUALIFIED
Greenwood BologniaGermanyIoni Bowcher RENEWAL
Morrow RutaAustraliaBernardo Dominic PROPOSAL
Silvio SlusarskiBrazilAsiya Javayant UNQUALIFIED
Izzy GarufiRussiaIvan Magalhaes NEGOTIATION
Morrow RutaAustraliaAmy Elsner NEW
Leja CaldareraIndiaAsiya Javayant QUALIFIED
Misaki RoysterAustraliaIoni Bowcher NEW
Mayumi KolmetzFranceOnyama Limba PROPOSAL
Deepesh ChuiJapanStephen Shaw UNQUALIFIED
Wickens NestleCanadaIvan Magalhaes NEGOTIATION
Clifford RimFranceIoni Bowcher QUALIFIED
Jefferson SchemmerArgentinaOnyama Limba UNQUALIFIED
Smith GlickSpainIvan Magalhaes NEGOTIATION
Isabel BowleyRussiaOnyama Limba RENEWAL
Greenwood BologniaJapanIoni Bowcher RENEWAL
Greenwood BologniaItalyOnyama Limba PROPOSAL
Morrow RutaRussiaAmy Elsner NEW
James ButtGermanyXuxue Feng UNQUALIFIED
David DarakjySpainAmy Elsner NEGOTIATION
Ashley DoeRussiaStephen Shaw RENEWAL
Salvatore StockhamItalyXuxue Feng RENEWAL
Faith GillianUnited KingdomIvan Magalhaes PROPOSAL
Sinclair WaycottIndiaOnyama Limba UNQUALIFIED
Nicolas IturbideCanadaElwin Sharvill RENEWAL
Aruna FigeroaSpainOnyama Limba UNQUALIFIED
Maria MarrierCanadaStephen Shaw RENEWAL
Sinclair WaycottFranceAmy Elsner PROPOSAL
Mayumi KolmetzAustraliaElwin Sharvill RENEWAL
Greenwood BologniaUnited KingdomIvan Magalhaes NEW
Ashley DoeJapanAsiya Javayant NEW
Darci PoquetteBrazilXuxue Feng PROPOSAL
Stacey MacleadBrazilAnna Fali RENEWAL
Maria MarrierSpainStephen Shaw QUALIFIED
Cody SaylorsRussiaXuxue Feng PROPOSAL
Nicolas IturbideIndiaAnna Fali QUALIFIED
Smith GlickGermanyStephen Shaw NEGOTIATION
Leja CaldareraRussiaAsiya Javayant NEW
Wickens NestleAustraliaElwin Sharvill NEW
Mayumi KolmetzItalyXuxue Feng PROPOSAL
Ricardo GauchoIndiaAmy Elsner RENEWAL
Salvatore StockhamBrazilOnyama Limba QUALIFIED
Frozen Columns
Name
Izzy Garufi
Tony Foller
Francesco Shinko
Murillo Malet
Johnson Sergi
Octavia Malet
Murillo Malet
Emily Whobrey
Isabel Bowley
Kaitlin Ostrosky
Aruna Figeroa
Isabel Bowley
Tony Foller
Leon Oldroyd
Isabel Bowley
Smith Glick
Octavia Malet
Stacey Maclead
Kaitlin Ostrosky
Clifford Rim
Adams Morasca
Munro Ferencz
Isabel Bowley
Aruna Figeroa
Jennifer Amigon
Kaitlin Ostrosky
Emily Whobrey
Mujtaba Nicka
Adams Morasca
Rodrigues Campain
Leja Caldarera
Munro Ferencz
Aditya Kusko
Isabel Bowley
Emily Whobrey
Francesco Shinko
Alejandro Perin
Jeanfrancois Venere
Jefferson Schemmer
Francesco Shinko
Izzy Garufi
Kaitlin Ostrosky
Chavez Briddick
Leon Oldroyd
Murillo Malet
Stacey Maclead
Isabel Bowley
Rodrigues Campain
Leja Caldarera
Ashley Doe
IdCountryDate
1000Argentina2026-04-10
1001Russia2026-04-03
1002Australia2026-04-20
1003Germany2026-04-05
1004Brazil2026-05-01
1005Argentina2026-04-09
1006India2026-04-09
1007Germany2026-04-29
1008India2026-04-15
1009Italy2026-04-20
1010Australia2026-04-14
1011France2026-04-14
1012Brazil2026-04-18
1013Spain2026-04-13
1014Spain2026-04-05
1015Germany2026-04-04
1016Russia2026-04-25
1017Japan2026-04-23
1018India2026-04-20
1019Germany2026-05-01
1020United Kingdom2026-04-12
1021Australia2026-04-24
1022India2026-04-13
1023Australia2026-04-07
1024United Kingdom2026-04-07
1025Germany2026-04-20
1026Germany2026-04-15
1027Germany2026-04-25
1028Argentina2026-04-28
1029United Kingdom2026-04-06
1030Germany2026-04-25
1031Canada2026-04-07
1032Australia2026-04-27
1033Brazil2026-04-23
1034India2026-04-06
1035Brazil2026-04-28
1036Brazil2026-04-16
1037Argentina2026-04-04
1038France2026-04-04
1039Spain2026-04-21
1040France2026-04-23
1041Canada2026-04-09
1042Australia2026-04-11
1043Germany2026-04-05
1044United Kingdom2026-04-16
1045Russia2026-04-17
1046United Kingdom2026-04-12
1047Japan2026-04-23
1048Canada2026-04-27
1049Brazil2026-04-23

On-Demand Data

NameIdCountryDate
Greenwood Bolognia1000United Kingdom2026-04-16
Francesco Shinko1001Brazil2026-04-03
Leja Caldarera1002Japan2026-04-14
Maisha Rulapaugh1003United Kingdom2026-04-21
Juan Wieser1004Germany2026-05-02
Smith Glick1005Spain2026-05-01
Cody Saylors1006Canada2026-04-10
Adams Morasca1007Italy2026-04-14
Cody Saylors1008France2026-04-17
Juan Wieser1009France2026-04-08
Arvin Albares1010United Kingdom2026-04-13
Darci Poquette1011Italy2026-04-12
Greenwood Bolognia1012Canada2026-05-01
Maisha Rulapaugh1013Brazil2026-04-04
Morrow Ruta1014Spain2026-04-28
Cody Saylors1015Argentina2026-05-01
Deepesh Chui1016Spain2026-04-27
Leja Caldarera1017India2026-04-10
Isabel Bowley1018Argentina2026-04-25
Aruna Figeroa1019United Kingdom2026-04-24
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
James ButtAustraliaIvan Magalhaes QUALIFIED
Morrow RutaUnited KingdomAnna Fali UNQUALIFIED
Ricardo GauchoAustraliaAnna Fali NEGOTIATION
Johnson SergiAustraliaAmy Elsner RENEWAL
Morrow RutaJapanXuxue Feng UNQUALIFIED
Kadeem FlosiGermanyBernardo Dominic RENEWAL
Adams MorascaSpainIoni Bowcher NEW
Ivar PaprockiAustraliaIoni Bowcher RENEWAL
Aruna FigeroaRussiaIvan Magalhaes NEW
Silvio SlusarskiUnited KingdomElwin Sharvill QUALIFIED
David DarakjyFranceIoni Bowcher NEGOTIATION
Francesco ShinkoJapanOnyama Limba NEW
Nicolas IturbideUnited KingdomAnna Fali NEGOTIATION
Rodrigues CampainJapanXuxue Feng RENEWAL
Faith GillianSpainAsiya Javayant PROPOSAL
Clifford RimJapanAnna Fali NEGOTIATION
Nicolas IturbideJapanAsiya Javayant RENEWAL
Ivar PaprockiArgentinaOnyama Limba NEW
Arvin AlbaresRussiaStephen Shaw NEGOTIATION
Aruna FigeroaItalyIvan Magalhaes NEGOTIATION
Greenwood BologniaIndiaStephen Shaw NEW
Julie StensethIndiaAnna Fali PROPOSAL
Jeanfrancois VenereArgentinaAsiya Javayant PROPOSAL
Greenwood BologniaUnited KingdomAnna Fali NEW
Ivar PaprockiFranceStephen Shaw PROPOSAL
Wickens NestleUnited KingdomBernardo Dominic NEW
Clifford RimItalyBernardo Dominic NEW
Mujtaba NickaUnited KingdomStephen Shaw QUALIFIED
Francesco ShinkoRussiaOnyama Limba PROPOSAL
Aika InouyeIndiaStephen Shaw QUALIFIED
Jones VocelkaGermanyElwin Sharvill RENEWAL
Kaitlin OstroskyJapanIvan Magalhaes NEGOTIATION
Faith GillianUnited KingdomAsiya Javayant RENEWAL
Darci PoquetteArgentinaIvan Magalhaes NEW
Sinclair WaycottJapanAnna Fali UNQUALIFIED
Mayumi KolmetzItalyXuxue Feng PROPOSAL
Cody SaylorsItalyXuxue Feng QUALIFIED
Wickens NestleGermanyXuxue Feng NEGOTIATION
Arvin AlbaresAustraliaAsiya Javayant QUALIFIED
Adams MorascaUnited KingdomElwin Sharvill 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>