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
Murillo MaletArgentinaAsiya Javayant NEGOTIATION
Aruna FigeroaBrazilOnyama Limba QUALIFIED
Aditya KuskoFranceElwin Sharvill QUALIFIED
Aruna FigeroaUnited KingdomStephen Shaw PROPOSAL
Faith GillianRussiaElwin Sharvill NEW
Leon OldroydSpainXuxue Feng NEW
Jeanfrancois VenereRussiaAsiya Javayant PROPOSAL
Claire TollnerSpainAmy Elsner NEGOTIATION
Morrow RutaItalyElwin Sharvill PROPOSAL
David DarakjyItalyElwin Sharvill PROPOSAL
Jefferson SchemmerFranceBernardo Dominic QUALIFIED
Octavia MaletIndiaOnyama Limba QUALIFIED
Antonio CaudyItalyStephen Shaw NEGOTIATION
Ashley DoeBrazilIvan Magalhaes QUALIFIED
Aruna FigeroaArgentinaIvan Magalhaes RENEWAL
Jeanfrancois VenereItalyAnna Fali NEW
Arvin AlbaresRussiaStephen Shaw NEGOTIATION
Wickens NestleCanadaAsiya Javayant NEGOTIATION
James ButtArgentinaBernardo Dominic NEGOTIATION
Salvatore StockhamArgentinaOnyama Limba QUALIFIED
Rodrigues CampainArgentinaIvan Magalhaes QUALIFIED
Cody SaylorsGermanyAmy Elsner NEW
David DarakjyFranceElwin Sharvill UNQUALIFIED
Maria MarrierBrazilStephen Shaw NEW
David DarakjyArgentinaOnyama Limba PROPOSAL
Isabel BowleySpainBernardo Dominic NEGOTIATION
Kadeem FlosiGermanyIoni Bowcher UNQUALIFIED
Alejandro PerinSpainXuxue Feng QUALIFIED
Aruna FigeroaCanadaBernardo Dominic UNQUALIFIED
Cody SaylorsIndiaAnna Fali UNQUALIFIED
Francesco ShinkoAustraliaAsiya Javayant PROPOSAL
Kadeem FlosiJapanBernardo Dominic RENEWAL
Kadeem FlosiUnited KingdomXuxue Feng NEGOTIATION
Arvin AlbaresArgentinaAsiya Javayant NEGOTIATION
Clifford RimArgentinaIvan Magalhaes NEGOTIATION
Antonio CaudyUnited KingdomOnyama Limba PROPOSAL
David DarakjyItalyBernardo Dominic UNQUALIFIED
Izzy GarufiArgentinaXuxue Feng UNQUALIFIED
Aditya KuskoUnited KingdomStephen Shaw RENEWAL
Faith GillianGermanyXuxue Feng RENEWAL
Octavia MaletBrazilAmy Elsner PROPOSAL
Ivar PaprockiArgentinaIvan Magalhaes PROPOSAL
Kaitlin OstroskyJapanElwin Sharvill NEGOTIATION
Clifford RimGermanyOnyama Limba QUALIFIED
Nicolas IturbideUnited KingdomElwin Sharvill PROPOSAL
Silvio SlusarskiRussiaAsiya Javayant NEGOTIATION
Kaitlin OstroskyJapanElwin Sharvill PROPOSAL
Francesco ShinkoBrazilOnyama Limba UNQUALIFIED
Maisha RulapaughArgentinaIvan Magalhaes NEW
Greenwood BologniaItalyIvan Magalhaes UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Emily WhobreyRussiaStephen Shaw PROPOSAL
Jones VocelkaBrazilOnyama Limba NEW
Maisha RulapaughCanadaAmy Elsner NEGOTIATION
Nicolas IturbideFranceXuxue Feng NEGOTIATION
Kadeem FlosiBrazilAsiya Javayant QUALIFIED
Jennifer AmigonUnited KingdomElwin Sharvill PROPOSAL
Aruna FigeroaSpainAnna Fali RENEWAL
Rodrigues CampainFranceOnyama Limba PROPOSAL
Salvatore StockhamRussiaAmy Elsner PROPOSAL
Silvio SlusarskiFranceStephen Shaw QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aika InouyeSpain2026-04-13Commercial Press UNQUALIFIED87Ioni Bowcher
1001Stacey MacleadJapan2026-04-20Rousseaux, Michael Esq RENEWAL95Asiya Javayant
1002Silvio SlusarskiSpain2026-04-01Chapman, Ross E Esq NEGOTIATION17Xuxue Feng
1003Kadeem FlosiRussia2026-04-15Dorl, James J Esq RENEWAL19Xuxue Feng
1004Misaki RoysterAustralia2026-04-03Benton, John B Jr NEW4Ioni Bowcher
1005Deepesh ChuiJapan2026-04-01Chapman, Ross E Esq PROPOSAL9Xuxue Feng
1006Jennifer AmigonRussia2026-03-24King, Christopher A Esq UNQUALIFIED82Ivan Magalhaes
1007Leon OldroydIndia2026-04-20Morlong Associates PROPOSAL9Ioni Bowcher
1008Faith GillianArgentina2026-04-15Feltz Printing Service NEGOTIATION24Asiya Javayant
1009Ricardo GauchoIndia2026-03-24Rousseaux, Michael Esq PROPOSAL32Elwin Sharvill
1010Alejandro PerinCanada2026-04-21Truhlar And Truhlar Attys RENEWAL57Stephen Shaw
1011Munro FerenczIndia2026-04-06Chapman, Ross E Esq PROPOSAL13Ivan Magalhaes
1012Octavia MaletIndia2026-03-30Dorl, James J Esq PROPOSAL91Onyama Limba
1013David DarakjySpain2026-03-28Feltz Printing Service PROPOSAL31Anna Fali
1014Mayumi KolmetzIndia2026-03-25Commercial Press PROPOSAL93Onyama Limba
1015Octavia MaletSpain2026-04-16Truhlar And Truhlar Attys UNQUALIFIED41Stephen Shaw
1016Salvatore StockhamIndia2026-04-07Chanay, Jeffrey A Esq PROPOSAL74Ioni Bowcher
1017Alejandro PerinFrance2026-03-28Truhlar And Truhlar Attys NEGOTIATION14Anna Fali
1018Izzy GarufiAustralia2026-04-18King, Christopher A Esq UNQUALIFIED58Amy Elsner
1019Smith GlickGermany2026-04-05Chanay, Jeffrey A Esq NEGOTIATION15Bernardo Dominic
1020Leja CaldareraRussia2026-04-01Commercial Press RENEWAL77Elwin Sharvill
1021Jennifer AmigonFrance2026-04-18Chemel, James L Cpa PROPOSAL6Bernardo Dominic
1022Sinclair WaycottSpain2026-03-29Commercial Press QUALIFIED13Anna Fali
1023Francesco ShinkoSpain2026-04-12Feltz Printing Service NEW29Stephen Shaw
1024Mayumi KolmetzAustralia2026-04-11Printing Dimensions PROPOSAL22Onyama Limba
1025Murillo MaletRussia2026-04-07Rousseaux, Michael Esq PROPOSAL38Anna Fali
1026Jennifer AmigonJapan2026-04-21Dorl, James J Esq QUALIFIED47Xuxue Feng
1027Deepesh ChuiGermany2026-03-30Rousseaux, Michael Esq UNQUALIFIED6Ioni Bowcher
1028Silvio SlusarskiAustralia2026-04-10King, Christopher A Esq UNQUALIFIED18Ivan Magalhaes
1029Kaitlin OstroskyBrazil2026-04-03Rousseaux, Michael Esq QUALIFIED2Onyama Limba
1030Costa DilliardFrance2026-03-29Buckley Miller Wright PROPOSAL72Ioni Bowcher
1031Francesco ShinkoAustralia2026-04-17Rousseaux, Michael Esq UNQUALIFIED43Elwin Sharvill
1032Jefferson SchemmerRussia2026-04-09Printing Dimensions NEW89Elwin Sharvill
1033Aditya KuskoAustralia2026-04-21Printing Dimensions PROPOSAL57Asiya Javayant
1034Arvin AlbaresJapan2026-04-07Chemel, James L Cpa NEGOTIATION78Xuxue Feng
1035Antonio CaudyJapan2026-03-26Feiner Bros PROPOSAL5Amy Elsner
1036Mujtaba NickaAustralia2026-04-03Feltz Printing Service NEW49Ioni Bowcher
1037Francesco ShinkoFrance2026-04-18Truhlar And Truhlar Attys QUALIFIED19Ioni Bowcher
1038Leja CaldareraRussia2026-04-14Rangoni Of Florence QUALIFIED55Ioni Bowcher
1039Rodrigues CampainArgentina2026-03-25Morlong Associates NEW47Ivan Magalhaes
1040Morrow RutaBrazil2026-03-28Chanay, Jeffrey A Esq RENEWAL25Stephen Shaw
1041Wickens NestleArgentina2026-04-09Printing Dimensions NEW5Stephen Shaw
1042Aruna FigeroaItaly2026-03-29Chapman, Ross E Esq UNQUALIFIED45Xuxue Feng
1043Munro FerenczIndia2026-04-13Rousseaux, Michael Esq QUALIFIED44Onyama Limba
1044Tony FollerJapan2026-03-25Chanay, Jeffrey A Esq QUALIFIED24Asiya Javayant
1045Francesco ShinkoItaly2026-04-12Morlong Associates PROPOSAL11Ioni Bowcher
1046Darci PoquetteGermany2026-04-08Benton, John B Jr NEGOTIATION1Onyama Limba
1047Costa DilliardIndia2026-03-27Feiner Bros PROPOSAL22Ioni Bowcher
1048Emily WhobreyUnited Kingdom2026-04-02Chapman, Ross E Esq NEGOTIATION20Bernardo Dominic
1049Faith GillianIndia2026-04-04Chemel, James L Cpa RENEWAL8Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Antonio CaudyItalyAmy Elsner UNQUALIFIED
Arvin AlbaresAustraliaStephen Shaw PROPOSAL
Costa DilliardUnited KingdomOnyama Limba PROPOSAL
Johnson SergiRussiaElwin Sharvill UNQUALIFIED
Arvin AlbaresJapanAmy Elsner RENEWAL
Johnson SergiGermanyAmy Elsner QUALIFIED
Jeanfrancois VenereJapanAmy Elsner QUALIFIED
Mayumi KolmetzUnited KingdomOnyama Limba UNQUALIFIED
Misaki RoysterArgentinaBernardo Dominic NEW
Misaki RoysterArgentinaIoni Bowcher PROPOSAL
Greenwood BologniaFranceAnna Fali NEGOTIATION
Antonio CaudyUnited KingdomAnna Fali NEGOTIATION
Costa DilliardJapanAmy Elsner PROPOSAL
Octavia MaletFranceAnna Fali UNQUALIFIED
Aika InouyeAustraliaBernardo Dominic NEGOTIATION
Maria MarrierJapanOnyama Limba UNQUALIFIED
Darci PoquetteUnited KingdomStephen Shaw QUALIFIED
Wickens NestleGermanyAmy Elsner QUALIFIED
Wickens NestleJapanAnna Fali NEGOTIATION
Salvatore StockhamArgentinaXuxue Feng UNQUALIFIED
Ivar PaprockiCanadaIvan Magalhaes NEGOTIATION
Jennifer AmigonUnited KingdomElwin Sharvill UNQUALIFIED
Juan WieserSpainXuxue Feng QUALIFIED
Claire TollnerArgentinaOnyama Limba RENEWAL
Aditya KuskoJapanAnna Fali RENEWAL
Jeanfrancois VenereItalyXuxue Feng PROPOSAL
Emily WhobreyCanadaIvan Magalhaes UNQUALIFIED
Rodrigues CampainAustraliaXuxue Feng RENEWAL
Mujtaba NickaJapanStephen Shaw RENEWAL
Leon OldroydUnited KingdomAmy Elsner UNQUALIFIED
Darci PoquetteRussiaAmy Elsner QUALIFIED
Mujtaba NickaCanadaXuxue Feng RENEWAL
Ashley DoeCanadaXuxue Feng NEW
Alejandro PerinJapanIvan Magalhaes NEGOTIATION
Leja CaldareraCanadaStephen Shaw QUALIFIED
Mayumi KolmetzUnited KingdomAmy Elsner NEW
Stacey MacleadRussiaIvan Magalhaes NEW
Smith GlickIndiaOnyama Limba NEW
Aditya KuskoAustraliaIvan Magalhaes NEW
Aditya KuskoFranceAnna Fali UNQUALIFIED
Alejandro PerinFranceIoni Bowcher RENEWAL
Deepesh ChuiFranceAmy Elsner RENEWAL
Misaki RoysterFranceIoni Bowcher UNQUALIFIED
Darci PoquetteUnited KingdomOnyama Limba QUALIFIED
Costa DilliardSpainBernardo Dominic NEGOTIATION
Ricardo GauchoArgentinaBernardo Dominic QUALIFIED
Faith GillianSpainIoni Bowcher NEGOTIATION
Chavez BriddickAustraliaAmy Elsner NEW
Alejandro PerinCanadaAnna Fali PROPOSAL
Leja CaldareraCanadaIvan Magalhaes QUALIFIED
Frozen Columns
Name
Cody Saylors
Aika Inouye
Silvio Slusarski
Stacey Maclead
Stacey Maclead
Aruna Figeroa
Izzy Garufi
Smith Glick
Rodrigues Campain
Deepesh Chui
Isabel Bowley
Izzy Garufi
Stacey Maclead
Aruna Figeroa
Antonio Caudy
Clifford Rim
Maria Marrier
Juan Wieser
Leja Caldarera
Johnson Sergi
David Darakjy
Clifford Rim
Aditya Kusko
Cody Saylors
Sinclair Waycott
Silvio Slusarski
David Darakjy
Jeanfrancois Venere
Costa Dilliard
Claire Tollner
Jefferson Schemmer
Clifford Rim
Claire Tollner
Munro Ferencz
Costa Dilliard
Kadeem Flosi
Kaitlin Ostrosky
Morrow Ruta
Misaki Royster
Chavez Briddick
Julie Stenseth
Antonio Caudy
Darci Poquette
Rodrigues Campain
Wickens Nestle
Chavez Briddick
Jones Vocelka
Maria Marrier
Stacey Maclead
Arvin Albares
IdCountryDate
1000France2026-04-18
1001Australia2026-04-07
1002Argentina2026-04-11
1003Canada2026-04-09
1004Canada2026-03-24
1005Argentina2026-03-23
1006France2026-04-09
1007Australia2026-04-12
1008Italy2026-03-27
1009Canada2026-04-02
1010Argentina2026-04-01
1011Germany2026-04-05
1012France2026-04-08
1013Australia2026-03-26
1014Spain2026-04-03
1015India2026-04-18
1016Spain2026-03-31
1017Brazil2026-04-16
1018India2026-04-16
1019India2026-03-26
1020Japan2026-04-13
1021Japan2026-04-10
1022Argentina2026-03-29
1023India2026-03-26
1024Brazil2026-04-05
1025Canada2026-03-27
1026France2026-03-24
1027Japan2026-04-04
1028India2026-04-03
1029Italy2026-04-07
1030Canada2026-04-21
1031Australia2026-04-13
1032Australia2026-04-04
1033Italy2026-04-17
1034Japan2026-04-13
1035Spain2026-04-02
1036Italy2026-03-27
1037Japan2026-04-09
1038Argentina2026-04-04
1039Argentina2026-03-25
1040Argentina2026-04-01
1041Argentina2026-03-30
1042Brazil2026-03-24
1043France2026-03-30
1044Japan2026-04-01
1045Brazil2026-04-08
1046Germany2026-04-14
1047Canada2026-04-10
1048Canada2026-04-06
1049United Kingdom2026-04-12

On-Demand Data

NameIdCountryDate
Silvio Slusarski1000Italy2026-04-07
Silvio Slusarski1001Australia2026-04-02
Juan Wieser1002France2026-04-06
Cody Saylors1003Spain2026-04-02
Sinclair Waycott1004Spain2026-04-05
Morrow Ruta1005France2026-04-20
Johnson Sergi1006Brazil2026-03-25
Kadeem Flosi1007Brazil2026-03-31
Julie Stenseth1008United Kingdom2026-04-08
Stacey Maclead1009Italy2026-04-03
Aruna Figeroa1010Argentina2026-04-04
Francesco Shinko1011India2026-03-29
Misaki Royster1012France2026-04-21
Morrow Ruta1013France2026-04-02
Juan Wieser1014Germany2026-04-12
Antonio Caudy1015France2026-04-15
Leon Oldroyd1016Spain2026-04-11
Silvio Slusarski1017Canada2026-04-18
Tony Foller1018Brazil2026-03-27
Octavia Malet1019Italy2026-04-17
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Cody SaylorsBrazilStephen Shaw PROPOSAL
Aika InouyeIndiaOnyama Limba QUALIFIED
Misaki RoysterSpainAmy Elsner PROPOSAL
Cody SaylorsAustraliaElwin Sharvill UNQUALIFIED
Jefferson SchemmerBrazilAmy Elsner RENEWAL
Smith GlickCanadaIvan Magalhaes NEW
Misaki RoysterItalyAnna Fali RENEWAL
David DarakjyCanadaAnna Fali PROPOSAL
Mayumi KolmetzGermanyElwin Sharvill NEW
Tony FollerUnited KingdomIoni Bowcher RENEWAL
Antonio CaudyRussiaIoni Bowcher UNQUALIFIED
Salvatore StockhamGermanyAmy Elsner NEGOTIATION
Adams MorascaRussiaAsiya Javayant PROPOSAL
Cody SaylorsGermanyStephen Shaw RENEWAL
James ButtFranceElwin Sharvill QUALIFIED
David DarakjyIndiaAnna Fali NEW
Tony FollerSpainBernardo Dominic RENEWAL
Wickens NestleSpainAsiya Javayant QUALIFIED
Sinclair WaycottSpainXuxue Feng UNQUALIFIED
Mujtaba NickaUnited KingdomOnyama Limba NEW
Ricardo GauchoSpainAnna Fali PROPOSAL
Deepesh ChuiRussiaIoni Bowcher QUALIFIED
Jennifer AmigonCanadaStephen Shaw NEGOTIATION
Sinclair WaycottRussiaElwin Sharvill NEGOTIATION
Chavez BriddickBrazilIvan Magalhaes NEGOTIATION
Greenwood BologniaBrazilAsiya Javayant NEGOTIATION
Misaki RoysterSpainBernardo Dominic NEW
Jeanfrancois VenereBrazilIoni Bowcher RENEWAL
Kaitlin OstroskySpainBernardo Dominic UNQUALIFIED
Cody SaylorsGermanyAmy Elsner QUALIFIED
Silvio SlusarskiJapanAmy Elsner QUALIFIED
Johnson SergiAustraliaIoni Bowcher NEW
James ButtAustraliaIoni Bowcher NEW
Aditya KuskoBrazilXuxue Feng QUALIFIED
Ricardo GauchoFranceElwin Sharvill NEGOTIATION
Leja CaldareraSpainBernardo Dominic UNQUALIFIED
Jennifer AmigonJapanXuxue Feng QUALIFIED
James ButtSpainAmy Elsner PROPOSAL
Francesco ShinkoSpainIoni Bowcher QUALIFIED
Mujtaba NickaUnited KingdomIvan Magalhaes QUALIFIED

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