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
James ButtRussiaAmy Elsner QUALIFIED
Clifford RimCanadaIoni Bowcher RENEWAL
Silvio SlusarskiJapanAnna Fali UNQUALIFIED
Munro FerenczGermanyAmy Elsner NEW
Claire TollnerGermanyOnyama Limba RENEWAL
Octavia MaletAustraliaAmy Elsner UNQUALIFIED
Ricardo GauchoUnited KingdomIoni Bowcher RENEWAL
Stacey MacleadUnited KingdomElwin Sharvill RENEWAL
Antonio CaudyGermanyOnyama Limba RENEWAL
Rodrigues CampainRussiaBernardo Dominic NEW
Aditya KuskoIndiaAmy Elsner PROPOSAL
Maria MarrierAustraliaStephen Shaw UNQUALIFIED
Julie StensethSpainElwin Sharvill NEGOTIATION
Aika InouyeBrazilStephen Shaw RENEWAL
Jefferson SchemmerIndiaIoni Bowcher RENEWAL
Ricardo GauchoBrazilAnna Fali UNQUALIFIED
Claire TollnerSpainOnyama Limba RENEWAL
Jones VocelkaJapanIoni Bowcher QUALIFIED
Ashley DoeBrazilOnyama Limba NEGOTIATION
Jeanfrancois VenereJapanElwin Sharvill RENEWAL
Misaki RoysterGermanyOnyama Limba PROPOSAL
Emily WhobreyCanadaAsiya Javayant PROPOSAL
Stacey MacleadUnited KingdomAsiya Javayant UNQUALIFIED
Maria MarrierRussiaAnna Fali NEGOTIATION
Claire TollnerUnited KingdomIoni Bowcher QUALIFIED
Ricardo GauchoArgentinaBernardo Dominic RENEWAL
Misaki RoysterBrazilElwin Sharvill QUALIFIED
Cody SaylorsCanadaOnyama Limba UNQUALIFIED
Costa DilliardIndiaXuxue Feng NEGOTIATION
Faith GillianBrazilElwin Sharvill PROPOSAL
Deepesh ChuiRussiaAnna Fali NEGOTIATION
Antonio CaudyIndiaBernardo Dominic NEW
Munro FerenczRussiaElwin Sharvill NEW
Izzy GarufiUnited KingdomIoni Bowcher PROPOSAL
Aruna FigeroaSpainAsiya Javayant NEW
Costa DilliardIndiaAmy Elsner NEW
Morrow RutaRussiaOnyama Limba RENEWAL
James ButtFranceIvan Magalhaes PROPOSAL
Francesco ShinkoUnited KingdomElwin Sharvill NEW
Jeanfrancois VenereItalyStephen Shaw RENEWAL
Octavia MaletFranceOnyama Limba PROPOSAL
Stacey MacleadJapanOnyama Limba QUALIFIED
Ivar PaprockiJapanIvan Magalhaes UNQUALIFIED
Aruna FigeroaJapanOnyama Limba PROPOSAL
Maisha RulapaughBrazilElwin Sharvill QUALIFIED
Cody SaylorsItalyIvan Magalhaes NEW
Costa DilliardJapanBernardo Dominic UNQUALIFIED
James ButtSpainAsiya Javayant NEGOTIATION
Silvio SlusarskiFranceBernardo Dominic UNQUALIFIED
Adams MorascaCanadaXuxue Feng PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Misaki RoysterAustraliaElwin Sharvill RENEWAL
Arvin AlbaresBrazilElwin Sharvill RENEWAL
James ButtRussiaElwin Sharvill QUALIFIED
Ivar PaprockiUnited KingdomAsiya Javayant NEGOTIATION
Izzy GarufiGermanyAsiya Javayant PROPOSAL
Nicolas IturbideItalyOnyama Limba PROPOSAL
Jones VocelkaItalyBernardo Dominic QUALIFIED
Izzy GarufiUnited KingdomElwin Sharvill RENEWAL
Arvin AlbaresAustraliaAsiya Javayant PROPOSAL
Smith GlickIndiaStephen Shaw PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Tony FollerItaly2026-05-31Rousseaux, Michael Esq UNQUALIFIED50Anna Fali
1001Rodrigues CampainItaly2026-06-10Feltz Printing Service RENEWAL88Stephen Shaw
1002Costa DilliardGermany2026-06-11Dorl, James J Esq UNQUALIFIED72Elwin Sharvill
1003Ricardo GauchoGermany2026-06-16Morlong Associates PROPOSAL24Stephen Shaw
1004Juan WieserRussia2026-05-28Benton, John B Jr QUALIFIED84Stephen Shaw
1005Sinclair WaycottFrance2026-05-29Chemel, James L Cpa PROPOSAL18Stephen Shaw
1006Stacey MacleadBrazil2026-05-26Dorl, James J Esq UNQUALIFIED6Elwin Sharvill
1007Antonio CaudyGermany2026-06-09Morlong Associates RENEWAL47Anna Fali
1008Ricardo GauchoItaly2026-06-11Chemel, James L Cpa NEGOTIATION91Onyama Limba
1009Aruna FigeroaGermany2026-05-27Feltz Printing Service NEW22Xuxue Feng
1010Jones VocelkaBrazil2026-06-08Feltz Printing Service QUALIFIED4Xuxue Feng
1011Darci PoquetteSpain2026-05-28Truhlar And Truhlar Attys NEW0Bernardo Dominic
1012Leon OldroydSpain2026-05-27Chemel, James L Cpa NEGOTIATION15Stephen Shaw
1013Kaitlin OstroskyArgentina2026-06-10Benton, John B Jr RENEWAL27Stephen Shaw
1014Faith GillianBrazil2026-06-15Printing Dimensions NEGOTIATION48Ivan Magalhaes
1015Arvin AlbaresJapan2026-05-26Buckley Miller Wright PROPOSAL88Elwin Sharvill
1016Francesco ShinkoJapan2026-05-30Rangoni Of Florence RENEWAL16Stephen Shaw
1017Misaki RoysterSpain2026-06-01Chanay, Jeffrey A Esq NEGOTIATION38Asiya Javayant
1018Antonio CaudySpain2026-06-07King, Christopher A Esq PROPOSAL90Elwin Sharvill
1019Leja CaldareraRussia2026-06-17Chapman, Ross E Esq NEGOTIATION23Ivan Magalhaes
1020Arvin AlbaresUnited Kingdom2026-06-20Benton, John B Jr RENEWAL92Amy Elsner
1021Silvio SlusarskiFrance2026-05-23Benton, John B Jr NEW18Asiya Javayant
1022Salvatore StockhamIndia2026-06-01Chanay, Jeffrey A Esq NEGOTIATION70Ioni Bowcher
1023Murillo MaletJapan2026-06-20Truhlar And Truhlar Attys PROPOSAL54Onyama Limba
1024Jones VocelkaUnited Kingdom2026-05-30Truhlar And Truhlar Attys NEW5Stephen Shaw
1025Jefferson SchemmerCanada2026-06-12Morlong Associates QUALIFIED70Stephen Shaw
1026Sinclair WaycottIndia2026-05-27Rangoni Of Florence PROPOSAL51Onyama Limba
1027Johnson SergiIndia2026-06-12Feiner Bros PROPOSAL10Ivan Magalhaes
1028Julie StensethJapan2026-05-29Chemel, James L Cpa PROPOSAL93Ivan Magalhaes
1029James ButtItaly2026-06-20Buckley Miller Wright NEGOTIATION58Amy Elsner
1030Aruna FigeroaSpain2026-06-07Truhlar And Truhlar Attys RENEWAL1Bernardo Dominic
1031Jefferson SchemmerUnited Kingdom2026-06-18King, Christopher A Esq QUALIFIED50Ioni Bowcher
1032Munro FerenczBrazil2026-05-25Chanay, Jeffrey A Esq NEW28Stephen Shaw
1033Johnson SergiUnited Kingdom2026-06-13Feiner Bros QUALIFIED54Ivan Magalhaes
1034Aika InouyeBrazil2026-06-05Rangoni Of Florence NEGOTIATION46Bernardo Dominic
1035Ashley DoeIndia2026-06-01Rousseaux, Michael Esq NEW87Stephen Shaw
1036Costa DilliardUnited Kingdom2026-05-23Feltz Printing Service UNQUALIFIED14Ivan Magalhaes
1037Maisha RulapaughJapan2026-06-08Buckley Miller Wright RENEWAL8Xuxue Feng
1038Isabel BowleyRussia2026-06-12Dorl, James J Esq RENEWAL5Ivan Magalhaes
1039Francesco ShinkoSpain2026-06-04Printing Dimensions RENEWAL32Stephen Shaw
1040Alejandro PerinSpain2026-06-08Truhlar And Truhlar Attys RENEWAL60Xuxue Feng
1041Ashley DoeCanada2026-06-17Chemel, James L Cpa PROPOSAL92Asiya Javayant
1042Adams MorascaGermany2026-05-31Chanay, Jeffrey A Esq NEGOTIATION57Asiya Javayant
1043Silvio SlusarskiUnited Kingdom2026-06-07Chemel, James L Cpa QUALIFIED54Ivan Magalhaes
1044Mayumi KolmetzRussia2026-06-18Benton, John B Jr NEW49Ivan Magalhaes
1045Arvin AlbaresCanada2026-06-06Chanay, Jeffrey A Esq RENEWAL1Bernardo Dominic
1046Sinclair WaycottJapan2026-06-14Buckley Miller Wright UNQUALIFIED37Asiya Javayant
1047Deepesh ChuiFrance2026-06-08Benton, John B Jr PROPOSAL68Bernardo Dominic
1048Ricardo GauchoItaly2026-06-18Feltz Printing Service RENEWAL12Stephen Shaw
1049Tony FollerAustralia2026-05-28Benton, John B Jr RENEWAL26Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Misaki RoysterSpainAmy Elsner NEW
Adams MorascaSpainOnyama Limba QUALIFIED
Adams MorascaSpainAnna Fali UNQUALIFIED
Aika InouyeBrazilAsiya Javayant QUALIFIED
Munro FerenczFranceOnyama Limba RENEWAL
Ricardo GauchoSpainIvan Magalhaes UNQUALIFIED
Murillo MaletRussiaIvan Magalhaes PROPOSAL
Isabel BowleyFranceBernardo Dominic QUALIFIED
Cody SaylorsUnited KingdomIvan Magalhaes NEGOTIATION
Nicolas IturbideSpainOnyama Limba RENEWAL
Emily WhobreyFranceXuxue Feng PROPOSAL
David DarakjySpainXuxue Feng QUALIFIED
Deepesh ChuiIndiaElwin Sharvill RENEWAL
Leja CaldareraUnited KingdomIvan Magalhaes UNQUALIFIED
Alejandro PerinFranceOnyama Limba RENEWAL
Aditya KuskoSpainBernardo Dominic RENEWAL
Octavia MaletArgentinaAnna Fali NEGOTIATION
Jones VocelkaGermanyIvan Magalhaes UNQUALIFIED
Silvio SlusarskiCanadaAmy Elsner UNQUALIFIED
Antonio CaudyAustraliaStephen Shaw NEGOTIATION
Munro FerenczAustraliaElwin Sharvill NEGOTIATION
Salvatore StockhamSpainAsiya Javayant QUALIFIED
Misaki RoysterArgentinaOnyama Limba RENEWAL
Salvatore StockhamSpainBernardo Dominic RENEWAL
Johnson SergiUnited KingdomAmy Elsner PROPOSAL
Costa DilliardUnited KingdomAmy Elsner RENEWAL
Murillo MaletItalyAmy Elsner QUALIFIED
James ButtFranceElwin Sharvill NEW
Francesco ShinkoJapanAmy Elsner QUALIFIED
Jefferson SchemmerArgentinaStephen Shaw PROPOSAL
Mujtaba NickaIndiaStephen Shaw PROPOSAL
Chavez BriddickItalyAsiya Javayant NEGOTIATION
Clifford RimAustraliaOnyama Limba NEW
Alejandro PerinSpainIvan Magalhaes RENEWAL
Leja CaldareraBrazilStephen Shaw RENEWAL
Misaki RoysterArgentinaStephen Shaw PROPOSAL
Murillo MaletUnited KingdomElwin Sharvill UNQUALIFIED
Emily WhobreyGermanyStephen Shaw QUALIFIED
Mayumi KolmetzFranceAsiya Javayant UNQUALIFIED
Jefferson SchemmerJapanOnyama Limba PROPOSAL
Tony FollerBrazilOnyama Limba RENEWAL
Stacey MacleadGermanyIoni Bowcher NEGOTIATION
Salvatore StockhamFranceIoni Bowcher UNQUALIFIED
David DarakjyJapanElwin Sharvill NEGOTIATION
Salvatore StockhamCanadaIoni Bowcher PROPOSAL
Adams MorascaAustraliaXuxue Feng PROPOSAL
Misaki RoysterArgentinaOnyama Limba NEGOTIATION
David DarakjyCanadaOnyama Limba PROPOSAL
Tony FollerFranceXuxue Feng UNQUALIFIED
Claire TollnerGermanyAsiya Javayant UNQUALIFIED
Frozen Columns
Name
Mayumi Kolmetz
Leon Oldroyd
Jeanfrancois Venere
Isabel Bowley
Rodrigues Campain
Faith Gillian
Ashley Doe
Salvatore Stockham
Leon Oldroyd
Aika Inouye
Alejandro Perin
Deepesh Chui
Silvio Slusarski
Arvin Albares
Darci Poquette
Kaitlin Ostrosky
Darci Poquette
Aruna Figeroa
Faith Gillian
Ashley Doe
Claire Tollner
Nicolas Iturbide
Jennifer Amigon
Alejandro Perin
Antonio Caudy
Leon Oldroyd
Izzy Garufi
Costa Dilliard
Ashley Doe
Ricardo Gaucho
Faith Gillian
Mujtaba Nicka
Maria Marrier
Aika Inouye
Murillo Malet
Cody Saylors
Faith Gillian
Chavez Briddick
Kaitlin Ostrosky
Johnson Sergi
David Darakjy
Claire Tollner
Murillo Malet
Ashley Doe
Kaitlin Ostrosky
Kadeem Flosi
Maria Marrier
Rodrigues Campain
Claire Tollner
Maria Marrier
IdCountryDate
1000Argentina2026-05-27
1001Germany2026-06-19
1002Russia2026-05-25
1003Brazil2026-06-17
1004Argentina2026-05-28
1005Spain2026-06-03
1006India2026-06-13
1007Spain2026-06-21
1008United Kingdom2026-05-24
1009United Kingdom2026-06-14
1010Australia2026-05-31
1011Russia2026-06-12
1012Spain2026-06-11
1013United Kingdom2026-06-16
1014India2026-05-23
1015Brazil2026-06-07
1016United Kingdom2026-06-01
1017Spain2026-06-02
1018Germany2026-05-24
1019Russia2026-06-05
1020Spain2026-06-17
1021Argentina2026-06-21
1022Spain2026-06-18
1023Argentina2026-06-11
1024Japan2026-05-29
1025Canada2026-05-28
1026United Kingdom2026-06-15
1027Russia2026-05-26
1028India2026-06-01
1029India2026-05-23
1030Brazil2026-05-24
1031Germany2026-05-30
1032Italy2026-05-30
1033France2026-05-30
1034Russia2026-06-14
1035Canada2026-06-11
1036Canada2026-06-13
1037Italy2026-06-15
1038India2026-05-27
1039Russia2026-06-10
1040India2026-06-04
1041Argentina2026-05-29
1042Japan2026-06-13
1043Italy2026-06-10
1044Germany2026-06-04
1045Brazil2026-06-19
1046Argentina2026-06-17
1047Russia2026-06-21
1048Argentina2026-05-25
1049Russia2026-05-30

On-Demand Data

NameIdCountryDate
Deepesh Chui1000Brazil2026-06-12
Sinclair Waycott1001India2026-06-18
Jeanfrancois Venere1002Spain2026-06-07
James Butt1003Japan2026-05-27
Izzy Garufi1004Japan2026-05-26
Sinclair Waycott1005France2026-06-16
Kaitlin Ostrosky1006Russia2026-06-16
Aika Inouye1007India2026-06-07
Aika Inouye1008Italy2026-05-25
Faith Gillian1009Australia2026-05-29
Smith Glick1010Argentina2026-06-04
Mayumi Kolmetz1011Germany2026-05-29
Johnson Sergi1012India2026-06-09
Claire Tollner1013Brazil2026-06-07
Darci Poquette1014France2026-06-14
Maria Marrier1015France2026-06-06
Johnson Sergi1016Argentina2026-06-18
Nicolas Iturbide1017India2026-06-04
Aditya Kusko1018France2026-05-30
Jefferson Schemmer1019Russia2026-06-20
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Tony FollerIndiaBernardo Dominic NEGOTIATION
Smith GlickRussiaIoni Bowcher NEGOTIATION
Alejandro PerinRussiaBernardo Dominic UNQUALIFIED
Ivar PaprockiFranceStephen Shaw NEW
Kaitlin OstroskyArgentinaStephen Shaw RENEWAL
Chavez BriddickFranceStephen Shaw UNQUALIFIED
Faith GillianGermanyIoni Bowcher NEGOTIATION
Ricardo GauchoGermanyAsiya Javayant UNQUALIFIED
Tony FollerArgentinaBernardo Dominic QUALIFIED
Ricardo GauchoBrazilAmy Elsner PROPOSAL
Claire TollnerGermanyIoni Bowcher PROPOSAL
Emily WhobreyIndiaAmy Elsner QUALIFIED
Izzy GarufiIndiaAsiya Javayant RENEWAL
Aika InouyeSpainBernardo Dominic NEGOTIATION
Arvin AlbaresAustraliaElwin Sharvill QUALIFIED
James ButtGermanyIvan Magalhaes UNQUALIFIED
Greenwood BologniaSpainAsiya Javayant UNQUALIFIED
Jeanfrancois VenereAustraliaXuxue Feng QUALIFIED
Arvin AlbaresCanadaIvan Magalhaes NEW
Aditya KuskoIndiaStephen Shaw NEW
Rodrigues CampainIndiaBernardo Dominic UNQUALIFIED
David DarakjyItalyBernardo Dominic RENEWAL
Emily WhobreyBrazilXuxue Feng RENEWAL
Silvio SlusarskiIndiaElwin Sharvill NEW
Alejandro PerinGermanyXuxue Feng NEW
Sinclair WaycottFranceBernardo Dominic NEW
Stacey MacleadFranceXuxue Feng QUALIFIED
Aruna FigeroaFranceXuxue Feng NEGOTIATION
Ricardo GauchoJapanAsiya Javayant QUALIFIED
Leon OldroydItalyBernardo Dominic RENEWAL
Izzy GarufiRussiaIvan Magalhaes NEGOTIATION
Izzy GarufiCanadaOnyama Limba RENEWAL
Misaki RoysterAustraliaElwin Sharvill QUALIFIED
Antonio CaudyIndiaAnna Fali NEW
Ricardo GauchoItalyBernardo Dominic RENEWAL
Nicolas IturbideItalyXuxue Feng RENEWAL
Leja CaldareraIndiaAsiya Javayant QUALIFIED
Ricardo GauchoAustraliaOnyama Limba UNQUALIFIED
Morrow RutaSpainAsiya Javayant NEGOTIATION
Salvatore StockhamAustraliaXuxue Feng NEW

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