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
Kaitlin OstroskyCanadaAnna Fali QUALIFIED
Alejandro PerinGermanyAsiya Javayant NEGOTIATION
David DarakjyCanadaAmy Elsner UNQUALIFIED
Cody SaylorsGermanyAsiya Javayant NEGOTIATION
Octavia MaletSpainStephen Shaw QUALIFIED
James ButtArgentinaIoni Bowcher RENEWAL
Adams MorascaBrazilIvan Magalhaes NEGOTIATION
Deepesh ChuiItalyElwin Sharvill QUALIFIED
Maria MarrierUnited KingdomIoni Bowcher PROPOSAL
Jones VocelkaJapanXuxue Feng RENEWAL
Maisha RulapaughRussiaIoni Bowcher RENEWAL
Tony FollerIndiaIoni Bowcher PROPOSAL
Smith GlickUnited KingdomIoni Bowcher NEW
Ashley DoeAustraliaOnyama Limba PROPOSAL
Maisha RulapaughSpainOnyama Limba UNQUALIFIED
Leja CaldareraAustraliaIvan Magalhaes NEW
Murillo MaletFranceIvan Magalhaes NEW
Claire TollnerFranceAnna Fali PROPOSAL
Juan WieserCanadaIvan Magalhaes NEW
Maisha RulapaughBrazilIoni Bowcher PROPOSAL
Tony FollerArgentinaIvan Magalhaes QUALIFIED
Silvio SlusarskiGermanyBernardo Dominic NEGOTIATION
Mujtaba NickaJapanBernardo Dominic RENEWAL
James ButtSpainAsiya Javayant QUALIFIED
Cody SaylorsCanadaAmy Elsner NEGOTIATION
Jennifer AmigonRussiaXuxue Feng UNQUALIFIED
Ashley DoeAustraliaOnyama Limba NEW
Munro FerenczAustraliaOnyama Limba QUALIFIED
James ButtBrazilAnna Fali UNQUALIFIED
Arvin AlbaresBrazilElwin Sharvill NEGOTIATION
Misaki RoysterArgentinaBernardo Dominic PROPOSAL
Misaki RoysterUnited KingdomXuxue Feng QUALIFIED
Mujtaba NickaArgentinaAsiya Javayant RENEWAL
Misaki RoysterFranceOnyama Limba RENEWAL
Tony FollerRussiaIvan Magalhaes QUALIFIED
Leja CaldareraCanadaIvan Magalhaes NEW
Silvio SlusarskiFranceAnna Fali QUALIFIED
Maria MarrierRussiaIoni Bowcher NEGOTIATION
Francesco ShinkoArgentinaAmy Elsner UNQUALIFIED
David DarakjyUnited KingdomIoni Bowcher NEW
Francesco ShinkoCanadaBernardo Dominic QUALIFIED
Mayumi KolmetzSpainIoni Bowcher UNQUALIFIED
Aruna FigeroaUnited KingdomAsiya Javayant RENEWAL
Claire TollnerItalyAmy Elsner NEW
Costa DilliardItalyStephen Shaw RENEWAL
Nicolas IturbideUnited KingdomIoni Bowcher NEGOTIATION
Nicolas IturbideBrazilXuxue Feng QUALIFIED
Chavez BriddickIndiaStephen Shaw PROPOSAL
Ashley DoeItalyXuxue Feng NEGOTIATION
Isabel BowleyFranceElwin Sharvill NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Octavia MaletCanadaStephen Shaw UNQUALIFIED
Jefferson SchemmerBrazilXuxue Feng RENEWAL
Clifford RimItalyElwin Sharvill NEGOTIATION
Leja CaldareraUnited KingdomOnyama Limba QUALIFIED
Jeanfrancois VenereFranceXuxue Feng NEGOTIATION
Murillo MaletFranceElwin Sharvill NEGOTIATION
Kadeem FlosiSpainXuxue Feng NEW
Antonio CaudyGermanyAnna Fali NEW
Aruna FigeroaUnited KingdomStephen Shaw UNQUALIFIED
Francesco ShinkoGermanyAmy Elsner QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jones VocelkaRussia2026-04-21Rousseaux, Michael Esq NEW53Asiya Javayant
1001Juan WieserJapan2026-04-14Feltz Printing Service NEW88Amy Elsner
1002Mujtaba NickaGermany2026-03-28Buckley Miller Wright UNQUALIFIED72Ioni Bowcher
1003Izzy GarufiIndia2026-04-06Feiner Bros NEGOTIATION27Onyama Limba
1004Munro FerenczItaly2026-04-15Chemel, James L Cpa NEGOTIATION10Stephen Shaw
1005Isabel BowleySpain2026-04-13Benton, John B Jr NEW65Onyama Limba
1006Emily WhobreyIndia2026-03-30Buckley Miller Wright UNQUALIFIED51Bernardo Dominic
1007Francesco ShinkoSpain2026-04-18Truhlar And Truhlar Attys NEW80Ioni Bowcher
1008Kaitlin OstroskyAustralia2026-04-20Printing Dimensions PROPOSAL14Asiya Javayant
1009Tony FollerArgentina2026-04-08Rousseaux, Michael Esq NEW17Amy Elsner
1010Ivar PaprockiRussia2026-04-13Chemel, James L Cpa UNQUALIFIED79Amy Elsner
1011Darci PoquetteFrance2026-04-06Truhlar And Truhlar Attys QUALIFIED37Xuxue Feng
1012Juan WieserSpain2026-03-31Rangoni Of Florence QUALIFIED64Anna Fali
1013Leon OldroydRussia2026-04-07Feiner Bros QUALIFIED99Ioni Bowcher
1014Silvio SlusarskiAustralia2026-04-05Morlong Associates UNQUALIFIED72Bernardo Dominic
1015Adams MorascaCanada2026-04-22Truhlar And Truhlar Attys UNQUALIFIED3Asiya Javayant
1016Alejandro PerinArgentina2026-04-21Chapman, Ross E Esq QUALIFIED28Onyama Limba
1017Adams MorascaIndia2026-04-09Commercial Press RENEWAL96Anna Fali
1018Deepesh ChuiIndia2026-04-09Chanay, Jeffrey A Esq UNQUALIFIED95Xuxue Feng
1019Greenwood BologniaItaly2026-04-19Chemel, James L Cpa UNQUALIFIED74Bernardo Dominic
1020Kaitlin OstroskyFrance2026-04-22Morlong Associates QUALIFIED98Onyama Limba
1021Wickens NestleItaly2026-04-13Benton, John B Jr QUALIFIED67Stephen Shaw
1022Maisha RulapaughRussia2026-03-31Feltz Printing Service RENEWAL37Ioni Bowcher
1023Emily WhobreyItaly2026-03-28Rangoni Of Florence RENEWAL24Asiya Javayant
1024Mujtaba NickaSpain2026-04-17Rousseaux, Michael Esq UNQUALIFIED1Ivan Magalhaes
1025Nicolas IturbideFrance2026-04-22Morlong Associates NEGOTIATION92Onyama Limba
1026Smith GlickRussia2026-04-09Morlong Associates QUALIFIED83Ioni Bowcher
1027Jennifer AmigonFrance2026-04-13Chanay, Jeffrey A Esq PROPOSAL92Ivan Magalhaes
1028Maria MarrierSpain2026-04-04Dorl, James J Esq QUALIFIED61Amy Elsner
1029Juan WieserSpain2026-04-03Chemel, James L Cpa PROPOSAL47Bernardo Dominic
1030Faith GillianUnited Kingdom2026-03-29Commercial Press UNQUALIFIED44Asiya Javayant
1031Aditya KuskoUnited Kingdom2026-04-06Chemel, James L Cpa RENEWAL51Asiya Javayant
1032Julie StensethCanada2026-04-13Feiner Bros QUALIFIED94Amy Elsner
1033Faith GillianIndia2026-03-30Dorl, James J Esq NEW94Asiya Javayant
1034Emily WhobreyJapan2026-03-27Printing Dimensions QUALIFIED38Anna Fali
1035Darci PoquetteAustralia2026-04-12Rangoni Of Florence QUALIFIED32Asiya Javayant
1036Isabel BowleyUnited Kingdom2026-03-28Feltz Printing Service UNQUALIFIED97Anna Fali
1037Jefferson SchemmerGermany2026-03-29Dorl, James J Esq UNQUALIFIED80Asiya Javayant
1038Johnson SergiBrazil2026-04-16Rangoni Of Florence PROPOSAL96Asiya Javayant
1039Faith GillianSpain2026-04-08Benton, John B Jr PROPOSAL46Ivan Magalhaes
1040Ricardo GauchoBrazil2026-04-15Rousseaux, Michael Esq QUALIFIED50Ivan Magalhaes
1041Julie StensethAustralia2026-04-19Commercial Press NEGOTIATION27Xuxue Feng
1042Nicolas IturbideFrance2026-04-20Feiner Bros NEGOTIATION86Elwin Sharvill
1043Salvatore StockhamRussia2026-03-28Truhlar And Truhlar Attys UNQUALIFIED79Bernardo Dominic
1044Arvin AlbaresRussia2026-04-03Rousseaux, Michael Esq RENEWAL82Anna Fali
1045Mayumi KolmetzJapan2026-04-05Chapman, Ross E Esq QUALIFIED81Anna Fali
1046Morrow RutaSpain2026-03-30King, Christopher A Esq RENEWAL19Anna Fali
1047Mayumi KolmetzUnited Kingdom2026-03-28Rangoni Of Florence UNQUALIFIED42Ioni Bowcher
1048Maisha RulapaughIndia2026-04-19Rousseaux, Michael Esq NEGOTIATION32Asiya Javayant
1049Aruna FigeroaJapan2026-04-10Chemel, James L Cpa NEW40Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Francesco ShinkoSpainBernardo Dominic QUALIFIED
Kadeem FlosiUnited KingdomElwin Sharvill QUALIFIED
Ashley DoeCanadaStephen Shaw RENEWAL
James ButtSpainElwin Sharvill RENEWAL
James ButtUnited KingdomAmy Elsner UNQUALIFIED
Claire TollnerArgentinaElwin Sharvill PROPOSAL
Arvin AlbaresSpainIvan Magalhaes QUALIFIED
Francesco ShinkoIndiaBernardo Dominic UNQUALIFIED
Aditya KuskoUnited KingdomBernardo Dominic NEGOTIATION
Aika InouyeSpainStephen Shaw QUALIFIED
Aruna FigeroaJapanElwin Sharvill UNQUALIFIED
Maisha RulapaughBrazilElwin Sharvill RENEWAL
Deepesh ChuiAustraliaAnna Fali RENEWAL
Smith GlickBrazilAnna Fali NEW
Mayumi KolmetzSpainAmy Elsner PROPOSAL
Faith GillianJapanOnyama Limba NEGOTIATION
Jones VocelkaFranceStephen Shaw PROPOSAL
Munro FerenczJapanAmy Elsner PROPOSAL
Jeanfrancois VenereArgentinaAmy Elsner PROPOSAL
Stacey MacleadAustraliaBernardo Dominic NEW
Rodrigues CampainItalyAmy Elsner NEW
Ivar PaprockiUnited KingdomStephen Shaw PROPOSAL
Kaitlin OstroskyAustraliaBernardo Dominic NEGOTIATION
Leon OldroydFranceStephen Shaw PROPOSAL
Jones VocelkaJapanOnyama Limba NEW
Misaki RoysterAustraliaBernardo Dominic QUALIFIED
Isabel BowleyUnited KingdomIvan Magalhaes QUALIFIED
Salvatore StockhamJapanAmy Elsner PROPOSAL
Johnson SergiGermanyBernardo Dominic NEW
Munro FerenczAustraliaBernardo Dominic NEW
Darci PoquetteArgentinaAnna Fali QUALIFIED
Smith GlickCanadaXuxue Feng RENEWAL
Deepesh ChuiArgentinaAsiya Javayant NEW
Francesco ShinkoUnited KingdomAmy Elsner RENEWAL
Rodrigues CampainCanadaXuxue Feng NEGOTIATION
Ashley DoeFranceAnna Fali NEW
Octavia MaletFranceStephen Shaw QUALIFIED
Stacey MacleadRussiaAsiya Javayant NEGOTIATION
Juan WieserAustraliaOnyama Limba NEGOTIATION
Izzy GarufiIndiaOnyama Limba NEGOTIATION
Rodrigues CampainJapanAsiya Javayant RENEWAL
Juan WieserItalyElwin Sharvill UNQUALIFIED
Clifford RimIndiaIoni Bowcher RENEWAL
Chavez BriddickAustraliaOnyama Limba NEGOTIATION
Leon OldroydItalyBernardo Dominic NEGOTIATION
Maria MarrierJapanIvan Magalhaes QUALIFIED
Rodrigues CampainSpainOnyama Limba NEGOTIATION
Johnson SergiCanadaXuxue Feng NEW
Ivar PaprockiBrazilElwin Sharvill UNQUALIFIED
Maria MarrierBrazilElwin Sharvill RENEWAL
Frozen Columns
Name
Morrow Ruta
Costa Dilliard
Maria Marrier
Jeanfrancois Venere
Sinclair Waycott
Izzy Garufi
Francesco Shinko
Ricardo Gaucho
Nicolas Iturbide
Greenwood Bolognia
Cody Saylors
Mujtaba Nicka
Clifford Rim
James Butt
Aruna Figeroa
Munro Ferencz
Morrow Ruta
Nicolas Iturbide
David Darakjy
Juan Wieser
Kaitlin Ostrosky
Francesco Shinko
Wickens Nestle
Aika Inouye
Greenwood Bolognia
Adams Morasca
Aditya Kusko
Chavez Briddick
Jeanfrancois Venere
Jefferson Schemmer
Cody Saylors
Jones Vocelka
Silvio Slusarski
Mayumi Kolmetz
Antonio Caudy
Kaitlin Ostrosky
Stacey Maclead
Stacey Maclead
Munro Ferencz
Jeanfrancois Venere
Misaki Royster
Octavia Malet
Kadeem Flosi
Izzy Garufi
Kaitlin Ostrosky
Salvatore Stockham
Antonio Caudy
Cody Saylors
Darci Poquette
Stacey Maclead
IdCountryDate
1000Canada2026-04-21
1001Japan2026-04-16
1002Germany2026-04-15
1003Canada2026-04-18
1004Brazil2026-04-16
1005Germany2026-04-12
1006Russia2026-03-31
1007France2026-04-09
1008Argentina2026-04-11
1009Canada2026-04-03
1010France2026-03-27
1011France2026-04-05
1012Argentina2026-04-17
1013Brazil2026-03-30
1014France2026-03-29
1015Russia2026-04-13
1016Australia2026-04-16
1017Brazil2026-04-23
1018Russia2026-04-17
1019Germany2026-04-10
1020United Kingdom2026-04-02
1021Russia2026-04-16
1022Russia2026-04-13
1023Spain2026-04-08
1024Italy2026-04-24
1025Brazil2026-03-29
1026Australia2026-04-08
1027Australia2026-04-07
1028United Kingdom2026-04-18
1029Spain2026-04-22
1030France2026-04-17
1031France2026-04-11
1032Spain2026-04-25
1033Australia2026-04-22
1034United Kingdom2026-04-23
1035France2026-04-10
1036Japan2026-03-29
1037United Kingdom2026-04-01
1038India2026-03-30
1039Brazil2026-04-12
1040Japan2026-04-15
1041Japan2026-04-18
1042Spain2026-04-21
1043Canada2026-04-17
1044France2026-03-29
1045United Kingdom2026-04-05
1046Spain2026-04-02
1047France2026-04-02
1048Spain2026-04-03
1049India2026-04-02

On-Demand Data

NameIdCountryDate
Maria Marrier1000United Kingdom2026-04-13
Greenwood Bolognia1001Spain2026-04-10
Nicolas Iturbide1002Australia2026-04-07
Deepesh Chui1003United Kingdom2026-04-01
Chavez Briddick1004Russia2026-04-24
Nicolas Iturbide1005Brazil2026-04-25
Maria Marrier1006India2026-04-23
Greenwood Bolognia1007Canada2026-04-17
Arvin Albares1008Russia2026-04-14
Misaki Royster1009Japan2026-04-18
Munro Ferencz1010Australia2026-04-18
Antonio Caudy1011Argentina2026-04-18
Misaki Royster1012Argentina2026-04-06
Julie Stenseth1013Italy2026-04-07
Morrow Ruta1014Canada2026-04-19
Alejandro Perin1015France2026-03-30
Munro Ferencz1016Canada2026-04-21
Alejandro Perin1017Brazil2026-04-04
Leon Oldroyd1018Argentina2026-04-16
Leon Oldroyd1019Russia2026-03-31
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Silvio SlusarskiIndiaBernardo Dominic NEGOTIATION
Jeanfrancois VenereFranceAnna Fali PROPOSAL
Silvio SlusarskiUnited KingdomAnna Fali RENEWAL
Octavia MaletCanadaXuxue Feng UNQUALIFIED
Maria MarrierBrazilStephen Shaw RENEWAL
Costa DilliardBrazilOnyama Limba NEGOTIATION
Clifford RimCanadaElwin Sharvill UNQUALIFIED
Aditya KuskoJapanIoni Bowcher QUALIFIED
Antonio CaudyUnited KingdomXuxue Feng PROPOSAL
Jeanfrancois VenereBrazilOnyama Limba QUALIFIED
Ivar PaprockiBrazilAmy Elsner UNQUALIFIED
Darci PoquetteBrazilAsiya Javayant PROPOSAL
Murillo MaletGermanyXuxue Feng NEW
Jefferson SchemmerFranceIoni Bowcher PROPOSAL
Isabel BowleyIndiaIoni Bowcher NEGOTIATION
Salvatore StockhamFranceAmy Elsner RENEWAL
Stacey MacleadCanadaBernardo Dominic UNQUALIFIED
Kaitlin OstroskyArgentinaAmy Elsner NEGOTIATION
Darci PoquetteArgentinaAsiya Javayant QUALIFIED
Aika InouyeUnited KingdomBernardo Dominic UNQUALIFIED
Wickens NestleRussiaBernardo Dominic RENEWAL
Johnson SergiFranceOnyama Limba NEGOTIATION
Wickens NestleBrazilOnyama Limba UNQUALIFIED
Antonio CaudyArgentinaXuxue Feng RENEWAL
Octavia MaletUnited KingdomElwin Sharvill QUALIFIED
Aruna FigeroaCanadaIoni Bowcher PROPOSAL
Adams MorascaRussiaElwin Sharvill NEW
Sinclair WaycottFranceIvan Magalhaes RENEWAL
Emily WhobreyIndiaAmy Elsner RENEWAL
Jones VocelkaBrazilAnna Fali RENEWAL
Murillo MaletGermanyIvan Magalhaes PROPOSAL
Murillo MaletJapanAmy Elsner UNQUALIFIED
Murillo MaletItalyOnyama Limba NEGOTIATION
Jefferson SchemmerBrazilOnyama Limba NEGOTIATION
Nicolas IturbideFranceBernardo Dominic PROPOSAL
Francesco ShinkoAustraliaXuxue Feng RENEWAL
Izzy GarufiSpainElwin Sharvill RENEWAL
Izzy GarufiRussiaIvan Magalhaes QUALIFIED
Faith GillianUnited KingdomElwin Sharvill QUALIFIED
Silvio SlusarskiArgentinaAsiya Javayant 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>