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 RimFranceAsiya Javayant NEGOTIATION
Faith GillianFranceIoni Bowcher RENEWAL
Jefferson SchemmerIndiaOnyama Limba PROPOSAL
Tony FollerUnited KingdomAsiya Javayant PROPOSAL
Isabel BowleyUnited KingdomAmy Elsner PROPOSAL
Kadeem FlosiBrazilStephen Shaw UNQUALIFIED
Leon OldroydRussiaOnyama Limba UNQUALIFIED
Tony FollerItalyStephen Shaw NEGOTIATION
Misaki RoysterAustraliaIvan Magalhaes NEW
Clifford RimUnited KingdomElwin Sharvill NEGOTIATION
Claire TollnerFranceIoni Bowcher RENEWAL
Maria MarrierCanadaIvan Magalhaes QUALIFIED
Aditya KuskoArgentinaIoni Bowcher QUALIFIED
Costa DilliardBrazilXuxue Feng QUALIFIED
Jeanfrancois VenereFranceAnna Fali NEW
Johnson SergiIndiaStephen Shaw RENEWAL
Tony FollerItalyAnna Fali NEW
Juan WieserItalyIvan Magalhaes RENEWAL
Darci PoquetteSpainStephen Shaw RENEWAL
Julie StensethArgentinaStephen Shaw PROPOSAL
Jones VocelkaUnited KingdomElwin Sharvill NEGOTIATION
Clifford RimSpainAsiya Javayant NEW
Leon OldroydArgentinaIvan Magalhaes UNQUALIFIED
Arvin AlbaresIndiaXuxue Feng NEW
Claire TollnerBrazilStephen Shaw NEW
Misaki RoysterIndiaOnyama Limba NEW
Leja CaldareraIndiaStephen Shaw NEW
Julie StensethIndiaIoni Bowcher PROPOSAL
Juan WieserIndiaElwin Sharvill NEW
Juan WieserGermanyAmy Elsner QUALIFIED
Mujtaba NickaJapanIvan Magalhaes UNQUALIFIED
Jefferson SchemmerCanadaIvan Magalhaes RENEWAL
Salvatore StockhamRussiaAsiya Javayant RENEWAL
Murillo MaletFranceElwin Sharvill PROPOSAL
Julie StensethCanadaIvan Magalhaes QUALIFIED
Tony FollerFranceBernardo Dominic UNQUALIFIED
Octavia MaletArgentinaOnyama Limba RENEWAL
Greenwood BologniaBrazilIoni Bowcher QUALIFIED
Maria MarrierUnited KingdomBernardo Dominic UNQUALIFIED
Octavia MaletFranceIoni Bowcher NEW
Silvio SlusarskiRussiaAmy Elsner UNQUALIFIED
Jennifer AmigonGermanyAnna Fali QUALIFIED
Claire TollnerUnited KingdomAnna Fali NEGOTIATION
Mujtaba NickaAustraliaAnna Fali PROPOSAL
Murillo MaletCanadaAmy Elsner NEW
Murillo MaletBrazilIoni Bowcher RENEWAL
Greenwood BologniaArgentinaElwin Sharvill UNQUALIFIED
Johnson SergiFranceStephen Shaw NEW
Arvin AlbaresBrazilAnna Fali NEGOTIATION
Izzy GarufiSpainAsiya Javayant NEW
Horizontal
NameCountryRepresentativeStatus
Sinclair WaycottBrazilIoni Bowcher NEW
Rodrigues CampainCanadaXuxue Feng UNQUALIFIED
Clifford RimFranceElwin Sharvill QUALIFIED
Leja CaldareraFranceOnyama Limba PROPOSAL
Wickens NestleItalyXuxue Feng UNQUALIFIED
Misaki RoysterItalyAmy Elsner RENEWAL
Clifford RimIndiaStephen Shaw NEW
Murillo MaletJapanIoni Bowcher UNQUALIFIED
Aruna FigeroaIndiaIvan Magalhaes NEGOTIATION
Munro FerenczFranceAmy Elsner NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Smith GlickArgentina2026-06-13Truhlar And Truhlar Attys QUALIFIED98Asiya Javayant
1001Silvio SlusarskiAustralia2026-06-07Chanay, Jeffrey A Esq RENEWAL50Amy Elsner
1002Sinclair WaycottBrazil2026-06-16Feiner Bros RENEWAL40Bernardo Dominic
1003Isabel BowleyRussia2026-06-01Morlong Associates PROPOSAL94Bernardo Dominic
1004Emily WhobreySpain2026-06-01Buckley Miller Wright UNQUALIFIED93Onyama Limba
1005Nicolas IturbideIndia2026-06-11King, Christopher A Esq UNQUALIFIED23Asiya Javayant
1006Maisha RulapaughBrazil2026-06-21Benton, John B Jr UNQUALIFIED2Anna Fali
1007Izzy GarufiCanada2026-06-14Commercial Press NEW81Anna Fali
1008Antonio CaudyGermany2026-06-16Benton, John B Jr NEGOTIATION15Asiya Javayant
1009Maisha RulapaughSpain2026-05-31Rangoni Of Florence QUALIFIED52Stephen Shaw
1010Alejandro PerinRussia2026-06-06Dorl, James J Esq RENEWAL97Onyama Limba
1011Claire TollnerRussia2026-06-15King, Christopher A Esq QUALIFIED52Anna Fali
1012Maria MarrierArgentina2026-06-11King, Christopher A Esq UNQUALIFIED80Elwin Sharvill
1013Clifford RimItaly2026-05-31Chemel, James L Cpa NEGOTIATION96Bernardo Dominic
1014Aruna FigeroaRussia2026-06-08Feiner Bros RENEWAL17Elwin Sharvill
1015Claire TollnerGermany2026-06-14Commercial Press RENEWAL86Elwin Sharvill
1016Silvio SlusarskiArgentina2026-06-11Morlong Associates NEGOTIATION85Stephen Shaw
1017Wickens NestleBrazil2026-06-12Truhlar And Truhlar Attys QUALIFIED24Bernardo Dominic
1018Johnson SergiIndia2026-05-25Benton, John B Jr PROPOSAL67Bernardo Dominic
1019Francesco ShinkoAustralia2026-06-20Morlong Associates NEGOTIATION56Ivan Magalhaes
1020Silvio SlusarskiGermany2026-06-16Feiner Bros PROPOSAL97Onyama Limba
1021James ButtCanada2026-05-29Morlong Associates NEGOTIATION92Ivan Magalhaes
1022Smith GlickUnited Kingdom2026-06-05Rousseaux, Michael Esq NEW95Anna Fali
1023Leja CaldareraGermany2026-06-06Feiner Bros NEGOTIATION2Ioni Bowcher
1024Aruna FigeroaSpain2026-05-29Chemel, James L Cpa PROPOSAL43Anna Fali
1025James ButtIndia2026-06-02Feltz Printing Service RENEWAL85Bernardo Dominic
1026Salvatore StockhamRussia2026-06-05Chapman, Ross E Esq RENEWAL60Xuxue Feng
1027Aruna FigeroaGermany2026-06-19Buckley Miller Wright QUALIFIED56Bernardo Dominic
1028Antonio CaudyBrazil2026-06-03Chemel, James L Cpa UNQUALIFIED78Bernardo Dominic
1029David DarakjyBrazil2026-06-21Chapman, Ross E Esq QUALIFIED76Elwin Sharvill
1030Cody SaylorsItaly2026-06-04Printing Dimensions QUALIFIED25Amy Elsner
1031Leon OldroydGermany2026-06-07Chemel, James L Cpa PROPOSAL41Bernardo Dominic
1032Jennifer AmigonItaly2026-06-06Feltz Printing Service PROPOSAL80Ioni Bowcher
1033Kaitlin OstroskyJapan2026-06-08Morlong Associates NEGOTIATION7Bernardo Dominic
1034Darci PoquetteBrazil2026-06-15Chemel, James L Cpa PROPOSAL22Onyama Limba
1035Rodrigues CampainItaly2026-06-09King, Christopher A Esq PROPOSAL87Onyama Limba
1036Sinclair WaycottJapan2026-05-23Buckley Miller Wright UNQUALIFIED83Anna Fali
1037Maisha RulapaughCanada2026-05-28Printing Dimensions QUALIFIED72Asiya Javayant
1038Antonio CaudyArgentina2026-06-13Benton, John B Jr UNQUALIFIED55Xuxue Feng
1039Greenwood BologniaSpain2026-06-01Feltz Printing Service PROPOSAL83Xuxue Feng
1040Jefferson SchemmerBrazil2026-06-02Chemel, James L Cpa PROPOSAL84Ivan Magalhaes
1041Greenwood BologniaJapan2026-06-08Feiner Bros QUALIFIED43Asiya Javayant
1042Arvin AlbaresCanada2026-06-12Feltz Printing Service PROPOSAL43Elwin Sharvill
1043Greenwood BologniaSpain2026-05-27Commercial Press NEW29Stephen Shaw
1044Emily WhobreySpain2026-06-14Commercial Press UNQUALIFIED83Amy Elsner
1045Stacey MacleadUnited Kingdom2026-06-14Chanay, Jeffrey A Esq PROPOSAL65Ivan Magalhaes
1046Ashley DoeGermany2026-06-18Feiner Bros QUALIFIED78Elwin Sharvill
1047Juan WieserRussia2026-06-03Chapman, Ross E Esq NEGOTIATION19Bernardo Dominic
1048Deepesh ChuiFrance2026-06-10Rousseaux, Michael Esq UNQUALIFIED96Amy Elsner
1049Munro FerenczSpain2026-06-06Chapman, Ross E Esq PROPOSAL6Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Octavia MaletUnited KingdomAsiya Javayant UNQUALIFIED
Cody SaylorsUnited KingdomXuxue Feng QUALIFIED
Aika InouyeAustraliaAsiya Javayant NEW
Morrow RutaBrazilElwin Sharvill NEW
Aruna FigeroaArgentinaIvan Magalhaes PROPOSAL
Silvio SlusarskiIndiaElwin Sharvill PROPOSAL
Tony FollerSpainIoni Bowcher NEGOTIATION
Deepesh ChuiBrazilElwin Sharvill QUALIFIED
Ricardo GauchoSpainXuxue Feng NEW
Octavia MaletJapanBernardo Dominic UNQUALIFIED
Nicolas IturbideItalyStephen Shaw NEW
Sinclair WaycottBrazilOnyama Limba QUALIFIED
Kaitlin OstroskyRussiaAnna Fali QUALIFIED
Silvio SlusarskiIndiaStephen Shaw NEGOTIATION
Claire TollnerFranceBernardo Dominic NEGOTIATION
Leja CaldareraSpainBernardo Dominic NEGOTIATION
Ivar PaprockiItalyIvan Magalhaes NEGOTIATION
Morrow RutaRussiaIoni Bowcher NEGOTIATION
Aruna FigeroaArgentinaAmy Elsner NEGOTIATION
Greenwood BologniaJapanAsiya Javayant NEW
Morrow RutaCanadaOnyama Limba NEW
Ricardo GauchoItalyIvan Magalhaes PROPOSAL
Deepesh ChuiAustraliaStephen Shaw UNQUALIFIED
Mujtaba NickaBrazilAnna Fali NEGOTIATION
Nicolas IturbideAustraliaAnna Fali NEGOTIATION
Tony FollerRussiaBernardo Dominic UNQUALIFIED
Aika InouyeUnited KingdomOnyama Limba NEGOTIATION
Isabel BowleySpainAmy Elsner NEGOTIATION
Munro FerenczGermanyAsiya Javayant UNQUALIFIED
David DarakjyUnited KingdomElwin Sharvill NEGOTIATION
Ivar PaprockiUnited KingdomStephen Shaw NEW
Maria MarrierCanadaBernardo Dominic UNQUALIFIED
Jennifer AmigonUnited KingdomBernardo Dominic NEW
Arvin AlbaresJapanIoni Bowcher QUALIFIED
Nicolas IturbideIndiaBernardo Dominic NEGOTIATION
Mayumi KolmetzGermanyAnna Fali RENEWAL
Darci PoquetteBrazilXuxue Feng UNQUALIFIED
Smith GlickJapanIvan Magalhaes NEW
Ivar PaprockiUnited KingdomAnna Fali RENEWAL
Wickens NestleArgentinaOnyama Limba QUALIFIED
Clifford RimIndiaIoni Bowcher PROPOSAL
Mujtaba NickaItalyBernardo Dominic QUALIFIED
Deepesh ChuiFranceAnna Fali NEW
Chavez BriddickUnited KingdomElwin Sharvill NEW
Jones VocelkaGermanyAsiya Javayant UNQUALIFIED
Munro FerenczBrazilStephen Shaw UNQUALIFIED
Jefferson SchemmerJapanBernardo Dominic RENEWAL
Kaitlin OstroskyCanadaXuxue Feng NEW
Leja CaldareraJapanAmy Elsner NEGOTIATION
Greenwood BologniaCanadaStephen Shaw UNQUALIFIED
Frozen Columns
Name
Arvin Albares
Julie Stenseth
Jennifer Amigon
Juan Wieser
Mujtaba Nicka
Ricardo Gaucho
Rodrigues Campain
Claire Tollner
Maisha Rulapaugh
Johnson Sergi
Izzy Garufi
Johnson Sergi
Emily Whobrey
Maria Marrier
Maria Marrier
Ivar Paprocki
Claire Tollner
Maria Marrier
Jones Vocelka
Aditya Kusko
Deepesh Chui
Nicolas Iturbide
Maisha Rulapaugh
Smith Glick
Arvin Albares
Rodrigues Campain
Nicolas Iturbide
Tony Foller
Alejandro Perin
Julie Stenseth
Leon Oldroyd
Ashley Doe
Ashley Doe
Munro Ferencz
Ashley Doe
Antonio Caudy
Cody Saylors
Kaitlin Ostrosky
Ivar Paprocki
Johnson Sergi
Maria Marrier
Faith Gillian
Deepesh Chui
Mayumi Kolmetz
David Darakjy
Cody Saylors
Ivar Paprocki
Deepesh Chui
Wickens Nestle
Smith Glick
IdCountryDate
1000Australia2026-06-21
1001Argentina2026-06-04
1002Brazil2026-05-28
1003India2026-06-17
1004Spain2026-06-05
1005Brazil2026-05-26
1006Japan2026-06-03
1007Japan2026-05-30
1008Brazil2026-06-19
1009Brazil2026-06-05
1010Australia2026-05-29
1011France2026-06-01
1012Australia2026-06-20
1013India2026-06-09
1014Brazil2026-06-21
1015France2026-06-10
1016Canada2026-06-11
1017France2026-06-01
1018Spain2026-05-29
1019Japan2026-06-02
1020Japan2026-06-14
1021Australia2026-05-26
1022United Kingdom2026-06-04
1023Japan2026-05-27
1024Brazil2026-06-08
1025Brazil2026-06-08
1026Germany2026-05-26
1027Germany2026-06-21
1028Spain2026-06-13
1029India2026-06-03
1030Germany2026-06-09
1031United Kingdom2026-06-07
1032Russia2026-05-30
1033Spain2026-05-27
1034Japan2026-05-30
1035Canada2026-06-15
1036Japan2026-06-11
1037United Kingdom2026-06-10
1038United Kingdom2026-06-08
1039Russia2026-05-28
1040Brazil2026-05-31
1041Spain2026-06-12
1042Australia2026-06-16
1043France2026-06-18
1044France2026-05-25
1045Canada2026-05-26
1046India2026-06-07
1047France2026-05-25
1048Australia2026-06-14
1049Italy2026-06-04

On-Demand Data

NameIdCountryDate
Deepesh Chui1000Russia2026-06-17
Jennifer Amigon1001Australia2026-06-01
Leja Caldarera1002Italy2026-06-20
Greenwood Bolognia1003Argentina2026-05-23
Murillo Malet1004United Kingdom2026-06-07
Aruna Figeroa1005Brazil2026-06-01
Alejandro Perin1006Russia2026-06-21
Misaki Royster1007Spain2026-05-23
Aruna Figeroa1008Australia2026-06-13
Mayumi Kolmetz1009Canada2026-05-27
David Darakjy1010India2026-06-05
Salvatore Stockham1011Brazil2026-06-20
Emily Whobrey1012Japan2026-06-21
Faith Gillian1013Japan2026-06-08
David Darakjy1014Spain2026-06-18
Arvin Albares1015Japan2026-05-30
Juan Wieser1016Spain2026-06-17
Smith Glick1017Italy2026-05-29
Smith Glick1018France2026-05-28
Aditya Kusko1019United Kingdom2026-05-26
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Rodrigues CampainArgentinaOnyama Limba UNQUALIFIED
Clifford RimGermanyOnyama Limba UNQUALIFIED
Wickens NestleJapanIvan Magalhaes QUALIFIED
Salvatore StockhamFranceOnyama Limba QUALIFIED
Clifford RimIndiaAmy Elsner PROPOSAL
Maria MarrierAustraliaAnna Fali NEGOTIATION
Darci PoquetteGermanyAnna Fali PROPOSAL
Jones VocelkaCanadaElwin Sharvill UNQUALIFIED
Salvatore StockhamBrazilOnyama Limba RENEWAL
Jones VocelkaRussiaElwin Sharvill QUALIFIED
Mujtaba NickaBrazilAnna Fali NEW
Jones VocelkaUnited KingdomAsiya Javayant UNQUALIFIED
Sinclair WaycottFranceIoni Bowcher RENEWAL
Rodrigues CampainCanadaStephen Shaw UNQUALIFIED
Aditya KuskoJapanAsiya Javayant PROPOSAL
Alejandro PerinAustraliaElwin Sharvill QUALIFIED
Maisha RulapaughGermanyStephen Shaw NEW
Sinclair WaycottSpainOnyama Limba NEW
Jefferson SchemmerItalyXuxue Feng UNQUALIFIED
Tony FollerItalyAmy Elsner PROPOSAL
Juan WieserArgentinaElwin Sharvill PROPOSAL
James ButtBrazilElwin Sharvill NEGOTIATION
Ashley DoeFranceStephen Shaw NEW
Sinclair WaycottIndiaAsiya Javayant RENEWAL
Aruna FigeroaItalyAmy Elsner RENEWAL
Munro FerenczSpainOnyama Limba PROPOSAL
Jones VocelkaRussiaElwin Sharvill RENEWAL
Leon OldroydItalyBernardo Dominic QUALIFIED
Ivar PaprockiUnited KingdomXuxue Feng UNQUALIFIED
Johnson SergiAustraliaXuxue Feng NEW
Rodrigues CampainArgentinaElwin Sharvill RENEWAL
Octavia MaletAustraliaStephen Shaw QUALIFIED
Sinclair WaycottSpainBernardo Dominic NEW
Greenwood BologniaArgentinaBernardo Dominic RENEWAL
Maisha RulapaughRussiaIoni Bowcher NEGOTIATION
Ricardo GauchoFranceBernardo Dominic UNQUALIFIED
Clifford RimGermanyXuxue Feng UNQUALIFIED
Wickens NestleIndiaAmy Elsner NEW
Rodrigues CampainJapanAnna Fali UNQUALIFIED
Greenwood BologniaSpainIvan Magalhaes 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>