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
Stacey MacleadFranceXuxue Feng NEW
Morrow RutaGermanyStephen Shaw PROPOSAL
Claire TollnerAustraliaStephen Shaw RENEWAL
Silvio SlusarskiGermanyElwin Sharvill NEW
Octavia MaletAustraliaOnyama Limba PROPOSAL
Claire TollnerGermanyAmy Elsner QUALIFIED
Jones VocelkaRussiaOnyama Limba RENEWAL
Ivar PaprockiIndiaAnna Fali PROPOSAL
Chavez BriddickSpainOnyama Limba RENEWAL
Chavez BriddickJapanStephen Shaw PROPOSAL
Arvin AlbaresAustraliaXuxue Feng NEW
Claire TollnerAustraliaBernardo Dominic QUALIFIED
Darci PoquetteFranceAsiya Javayant RENEWAL
Salvatore StockhamBrazilXuxue Feng NEGOTIATION
Greenwood BologniaAustraliaAmy Elsner NEW
Clifford RimJapanOnyama Limba QUALIFIED
Misaki RoysterSpainOnyama Limba PROPOSAL
David DarakjyRussiaAnna Fali NEW
Jefferson SchemmerFranceAsiya Javayant NEGOTIATION
Stacey MacleadRussiaXuxue Feng QUALIFIED
Misaki RoysterFranceOnyama Limba RENEWAL
Antonio CaudySpainAmy Elsner NEGOTIATION
Kadeem FlosiJapanOnyama Limba RENEWAL
Salvatore StockhamIndiaBernardo Dominic NEW
Jones VocelkaAustraliaAmy Elsner UNQUALIFIED
James ButtCanadaAnna Fali PROPOSAL
Morrow RutaArgentinaStephen Shaw PROPOSAL
David DarakjyJapanAmy Elsner NEGOTIATION
Izzy GarufiGermanyAsiya Javayant NEGOTIATION
Kadeem FlosiBrazilIoni Bowcher PROPOSAL
Jennifer AmigonBrazilOnyama Limba NEW
Kadeem FlosiItalyAnna Fali NEW
Octavia MaletItalyAsiya Javayant RENEWAL
Claire TollnerBrazilElwin Sharvill RENEWAL
Claire TollnerFranceXuxue Feng UNQUALIFIED
Izzy GarufiArgentinaOnyama Limba QUALIFIED
Leja CaldareraBrazilAnna Fali QUALIFIED
Julie StensethCanadaBernardo Dominic RENEWAL
Jeanfrancois VenereUnited KingdomAmy Elsner NEGOTIATION
Maria MarrierIndiaIoni Bowcher NEGOTIATION
Mayumi KolmetzIndiaOnyama Limba RENEWAL
James ButtRussiaElwin Sharvill RENEWAL
Rodrigues CampainItalyOnyama Limba RENEWAL
Francesco ShinkoFranceIoni Bowcher QUALIFIED
Munro FerenczAustraliaIoni Bowcher UNQUALIFIED
Chavez BriddickArgentinaAnna Fali UNQUALIFIED
Munro FerenczArgentinaAnna Fali QUALIFIED
James ButtFranceIoni Bowcher NEGOTIATION
Faith GillianFranceAsiya Javayant NEGOTIATION
Costa DilliardUnited KingdomAnna Fali NEW
Horizontal
NameCountryRepresentativeStatus
Leon OldroydBrazilIvan Magalhaes RENEWAL
Wickens NestleBrazilIoni Bowcher QUALIFIED
Julie StensethSpainOnyama Limba NEGOTIATION
Mujtaba NickaGermanyAsiya Javayant QUALIFIED
Alejandro PerinIndiaBernardo Dominic NEW
Murillo MaletAustraliaBernardo Dominic RENEWAL
Mayumi KolmetzJapanAnna Fali PROPOSAL
Salvatore StockhamRussiaIvan Magalhaes NEW
Claire TollnerUnited KingdomElwin Sharvill PROPOSAL
Clifford RimItalyAmy Elsner NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Darci PoquetteJapan2026-06-11Morlong Associates NEW14Xuxue Feng
1001Emily WhobreyItaly2026-06-15Truhlar And Truhlar Attys NEGOTIATION49Asiya Javayant
1002Aruna FigeroaAustralia2026-06-09Feiner Bros RENEWAL85Stephen Shaw
1003Maisha RulapaughIndia2026-06-03Feiner Bros NEGOTIATION10Ioni Bowcher
1004Tony FollerBrazil2026-06-16Rousseaux, Michael Esq UNQUALIFIED19Bernardo Dominic
1005Greenwood BologniaFrance2026-06-10Morlong Associates NEW52Ioni Bowcher
1006Jennifer AmigonIndia2026-05-26Truhlar And Truhlar Attys RENEWAL6Xuxue Feng
1007Arvin AlbaresSpain2026-05-23Chanay, Jeffrey A Esq NEGOTIATION86Ioni Bowcher
1008Juan WieserBrazil2026-05-29Benton, John B Jr QUALIFIED17Asiya Javayant
1009Arvin AlbaresFrance2026-05-20Truhlar And Truhlar Attys RENEWAL67Ioni Bowcher
1010Adams MorascaGermany2026-05-28Printing Dimensions PROPOSAL77Xuxue Feng
1011Jennifer AmigonItaly2026-06-02Feltz Printing Service NEW99Xuxue Feng
1012James ButtFrance2026-05-30Rousseaux, Michael Esq RENEWAL85Elwin Sharvill
1013Aditya KuskoGermany2026-06-06Dorl, James J Esq UNQUALIFIED94Xuxue Feng
1014Rodrigues CampainRussia2026-05-19Chanay, Jeffrey A Esq NEW61Xuxue Feng
1015Wickens NestleIndia2026-06-14Benton, John B Jr UNQUALIFIED24Amy Elsner
1016Francesco ShinkoSpain2026-06-08Feiner Bros UNQUALIFIED58Anna Fali
1017Cody SaylorsFrance2026-05-23Truhlar And Truhlar Attys NEGOTIATION53Ioni Bowcher
1018Isabel BowleyItaly2026-06-15Dorl, James J Esq NEGOTIATION65Anna Fali
1019Maisha RulapaughGermany2026-05-20Chanay, Jeffrey A Esq QUALIFIED66Xuxue Feng
1020Chavez BriddickAustralia2026-05-24Rangoni Of Florence QUALIFIED36Amy Elsner
1021Clifford RimFrance2026-05-25Commercial Press NEGOTIATION16Bernardo Dominic
1022Costa DilliardJapan2026-06-15Feltz Printing Service NEW5Ioni Bowcher
1023Ashley DoeRussia2026-06-10Chapman, Ross E Esq NEGOTIATION13Asiya Javayant
1024Mayumi KolmetzFrance2026-06-15Chemel, James L Cpa NEW76Asiya Javayant
1025Octavia MaletGermany2026-06-05Printing Dimensions RENEWAL7Asiya Javayant
1026David DarakjyCanada2026-05-27Printing Dimensions UNQUALIFIED44Stephen Shaw
1027Stacey MacleadIndia2026-06-11Chemel, James L Cpa NEGOTIATION74Bernardo Dominic
1028Alejandro PerinIndia2026-05-23Chanay, Jeffrey A Esq RENEWAL1Ioni Bowcher
1029Morrow RutaRussia2026-05-25Commercial Press NEW54Bernardo Dominic
1030Deepesh ChuiCanada2026-06-03Feltz Printing Service PROPOSAL1Bernardo Dominic
1031Leon OldroydCanada2026-06-12Feltz Printing Service PROPOSAL1Ioni Bowcher
1032Claire TollnerUnited Kingdom2026-06-11Rousseaux, Michael Esq RENEWAL2Amy Elsner
1033Leon OldroydFrance2026-06-12Benton, John B Jr QUALIFIED52Bernardo Dominic
1034Julie StensethBrazil2026-06-15Feiner Bros PROPOSAL82Stephen Shaw
1035Ashley DoeFrance2026-06-12King, Christopher A Esq PROPOSAL97Onyama Limba
1036Octavia MaletAustralia2026-05-24Benton, John B Jr RENEWAL19Asiya Javayant
1037Emily WhobreyItaly2026-05-23Chemel, James L Cpa NEGOTIATION3Onyama Limba
1038Tony FollerRussia2026-05-18Chemel, James L Cpa PROPOSAL13Asiya Javayant
1039Antonio CaudyArgentina2026-06-15Morlong Associates NEGOTIATION82Elwin Sharvill
1040Isabel BowleyRussia2026-06-02Chemel, James L Cpa QUALIFIED5Amy Elsner
1041Morrow RutaIndia2026-05-29Commercial Press RENEWAL54Amy Elsner
1042Wickens NestleRussia2026-05-18Chapman, Ross E Esq QUALIFIED28Stephen Shaw
1043Deepesh ChuiUnited Kingdom2026-06-11Commercial Press UNQUALIFIED65Elwin Sharvill
1044Wickens NestleIndia2026-06-08Dorl, James J Esq UNQUALIFIED56Bernardo Dominic
1045Rodrigues CampainIndia2026-05-22Feiner Bros UNQUALIFIED78Anna Fali
1046Misaki RoysterFrance2026-05-19Truhlar And Truhlar Attys NEGOTIATION37Anna Fali
1047Aditya KuskoItaly2026-06-08Morlong Associates NEGOTIATION41Elwin Sharvill
1048Mujtaba NickaJapan2026-06-06Rangoni Of Florence QUALIFIED45Elwin Sharvill
1049Sinclair WaycottBrazil2026-05-25Benton, John B Jr UNQUALIFIED15Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Jefferson SchemmerAustraliaOnyama Limba QUALIFIED
James ButtGermanyIoni Bowcher PROPOSAL
Arvin AlbaresItalyAsiya Javayant NEGOTIATION
Jones VocelkaCanadaStephen Shaw RENEWAL
Morrow RutaItalyBernardo Dominic QUALIFIED
Mujtaba NickaSpainBernardo Dominic UNQUALIFIED
Johnson SergiGermanyIvan Magalhaes PROPOSAL
Maria MarrierIndiaXuxue Feng RENEWAL
Maria MarrierArgentinaElwin Sharvill RENEWAL
David DarakjyArgentinaIoni Bowcher NEGOTIATION
Morrow RutaItalyAmy Elsner NEGOTIATION
Ivar PaprockiGermanyXuxue Feng QUALIFIED
Stacey MacleadItalyXuxue Feng UNQUALIFIED
Kaitlin OstroskyBrazilIoni Bowcher QUALIFIED
David DarakjyUnited KingdomElwin Sharvill NEGOTIATION
Kadeem FlosiGermanyStephen Shaw NEW
Alejandro PerinArgentinaStephen Shaw QUALIFIED
Jennifer AmigonBrazilIoni Bowcher NEW
Morrow RutaBrazilXuxue Feng UNQUALIFIED
Ashley DoeAustraliaAnna Fali UNQUALIFIED
Wickens NestleRussiaOnyama Limba QUALIFIED
Jeanfrancois VenereFranceXuxue Feng UNQUALIFIED
Kadeem FlosiItalyOnyama Limba NEGOTIATION
Maria MarrierBrazilAnna Fali NEW
Aika InouyeSpainIvan Magalhaes PROPOSAL
Tony FollerJapanBernardo Dominic RENEWAL
Mujtaba NickaItalyIoni Bowcher UNQUALIFIED
Tony FollerRussiaAnna Fali QUALIFIED
Nicolas IturbideCanadaStephen Shaw RENEWAL
Nicolas IturbideAustraliaBernardo Dominic UNQUALIFIED
Jeanfrancois VenereCanadaAmy Elsner QUALIFIED
Wickens NestleJapanBernardo Dominic QUALIFIED
Arvin AlbaresUnited KingdomOnyama Limba NEW
Ashley DoeBrazilOnyama Limba PROPOSAL
Mayumi KolmetzUnited KingdomBernardo Dominic NEGOTIATION
Rodrigues CampainGermanyIoni Bowcher QUALIFIED
Johnson SergiSpainAsiya Javayant QUALIFIED
Munro FerenczUnited KingdomIvan Magalhaes PROPOSAL
James ButtGermanyBernardo Dominic QUALIFIED
James ButtSpainAsiya Javayant PROPOSAL
Kaitlin OstroskyIndiaAnna Fali NEW
Antonio CaudyCanadaXuxue Feng QUALIFIED
Antonio CaudyArgentinaOnyama Limba NEGOTIATION
Aruna FigeroaBrazilElwin Sharvill PROPOSAL
Julie StensethAustraliaAnna Fali NEGOTIATION
Ricardo GauchoBrazilAsiya Javayant PROPOSAL
Alejandro PerinAustraliaIvan Magalhaes RENEWAL
Arvin AlbaresUnited KingdomIoni Bowcher NEGOTIATION
Arvin AlbaresRussiaXuxue Feng NEGOTIATION
Jefferson SchemmerRussiaAsiya Javayant RENEWAL
Frozen Columns
Name
Silvio Slusarski
Alejandro Perin
Sinclair Waycott
Kadeem Flosi
Salvatore Stockham
Ashley Doe
Tony Foller
Faith Gillian
Maisha Rulapaugh
Arvin Albares
Ricardo Gaucho
Jennifer Amigon
Maria Marrier
Juan Wieser
Octavia Malet
Leja Caldarera
Salvatore Stockham
Alejandro Perin
Izzy Garufi
Antonio Caudy
Izzy Garufi
Nicolas Iturbide
Aika Inouye
Nicolas Iturbide
Alejandro Perin
Nicolas Iturbide
Alejandro Perin
David Darakjy
Kaitlin Ostrosky
Aditya Kusko
Silvio Slusarski
Murillo Malet
Salvatore Stockham
Nicolas Iturbide
Aditya Kusko
Jeanfrancois Venere
Aruna Figeroa
Tony Foller
Izzy Garufi
Claire Tollner
Isabel Bowley
Antonio Caudy
Alejandro Perin
Emily Whobrey
Kadeem Flosi
Octavia Malet
Leja Caldarera
Murillo Malet
Leon Oldroyd
Kadeem Flosi
IdCountryDate
1000Canada2026-05-28
1001Brazil2026-06-01
1002France2026-06-15
1003Brazil2026-06-02
1004Russia2026-06-04
1005Argentina2026-06-16
1006Spain2026-06-07
1007Germany2026-05-28
1008Germany2026-05-31
1009Russia2026-05-21
1010Spain2026-06-12
1011Canada2026-06-08
1012United Kingdom2026-05-19
1013India2026-05-24
1014Spain2026-06-08
1015France2026-06-16
1016India2026-05-20
1017Brazil2026-06-10
1018Brazil2026-05-23
1019France2026-05-28
1020Spain2026-05-26
1021Japan2026-06-12
1022France2026-06-04
1023Spain2026-05-30
1024Argentina2026-06-12
1025Brazil2026-06-07
1026Japan2026-06-09
1027Brazil2026-06-09
1028Brazil2026-06-03
1029Russia2026-06-09
1030France2026-06-06
1031United Kingdom2026-05-29
1032France2026-06-04
1033Australia2026-05-31
1034Italy2026-06-15
1035Brazil2026-05-21
1036Australia2026-05-22
1037Japan2026-05-22
1038India2026-06-11
1039United Kingdom2026-06-08
1040Canada2026-06-11
1041India2026-06-04
1042France2026-05-20
1043Spain2026-06-12
1044Italy2026-05-18
1045Canada2026-06-04
1046Germany2026-06-14
1047Japan2026-06-07
1048Russia2026-06-02
1049France2026-05-29

On-Demand Data

NameIdCountryDate
Greenwood Bolognia1000Russia2026-05-20
Nicolas Iturbide1001Canada2026-05-23
Antonio Caudy1002Japan2026-06-14
Faith Gillian1003Brazil2026-05-20
Sinclair Waycott1004United Kingdom2026-05-27
Ivar Paprocki1005United Kingdom2026-05-26
Antonio Caudy1006Argentina2026-06-14
Jennifer Amigon1007Germany2026-06-05
Chavez Briddick1008France2026-06-01
Sinclair Waycott1009Canada2026-06-05
Ricardo Gaucho1010France2026-05-18
Mayumi Kolmetz1011Spain2026-06-09
Mujtaba Nicka1012Brazil2026-06-04
Kaitlin Ostrosky1013Italy2026-05-20
Jennifer Amigon1014France2026-06-10
Leja Caldarera1015Brazil2026-05-24
Mujtaba Nicka1016Australia2026-05-24
Deepesh Chui1017Russia2026-05-26
Aika Inouye1018India2026-05-27
Salvatore Stockham1019Italy2026-06-04
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jennifer AmigonRussiaElwin Sharvill RENEWAL
Chavez BriddickRussiaAnna Fali QUALIFIED
Jennifer AmigonBrazilXuxue Feng PROPOSAL
Nicolas IturbideArgentinaIvan Magalhaes RENEWAL
Ricardo GauchoIndiaXuxue Feng PROPOSAL
Maisha RulapaughAustraliaIoni Bowcher NEGOTIATION
Wickens NestleUnited KingdomBernardo Dominic NEGOTIATION
Costa DilliardArgentinaAnna Fali RENEWAL
Salvatore StockhamRussiaElwin Sharvill NEW
James ButtItalyStephen Shaw PROPOSAL
Ivar PaprockiFranceAsiya Javayant NEW
Julie StensethGermanyStephen Shaw UNQUALIFIED
Faith GillianIndiaAmy Elsner NEW
Leon OldroydItalyIvan Magalhaes QUALIFIED
Silvio SlusarskiAustraliaBernardo Dominic PROPOSAL
Johnson SergiUnited KingdomAnna Fali PROPOSAL
Octavia MaletGermanyOnyama Limba NEW
Izzy GarufiBrazilAmy Elsner QUALIFIED
Darci PoquetteCanadaBernardo Dominic NEW
Wickens NestleRussiaBernardo Dominic NEGOTIATION
Nicolas IturbideAustraliaOnyama Limba NEW
Jeanfrancois VenereRussiaElwin Sharvill RENEWAL
Emily WhobreyBrazilXuxue Feng NEGOTIATION
Adams MorascaGermanyAsiya Javayant PROPOSAL
Greenwood BologniaArgentinaStephen Shaw UNQUALIFIED
Emily WhobreyAustraliaAnna Fali UNQUALIFIED
Smith GlickCanadaElwin Sharvill NEW
Aruna FigeroaItalyAnna Fali PROPOSAL
Arvin AlbaresSpainOnyama Limba QUALIFIED
Johnson SergiSpainIoni Bowcher RENEWAL
Maria MarrierIndiaAmy Elsner NEW
Alejandro PerinFranceBernardo Dominic RENEWAL
Octavia MaletBrazilOnyama Limba NEW
Leja CaldareraItalyOnyama Limba QUALIFIED
Jennifer AmigonAustraliaStephen Shaw RENEWAL
Sinclair WaycottUnited KingdomStephen Shaw NEGOTIATION
Izzy GarufiItalyElwin Sharvill NEW
Julie StensethJapanAmy Elsner QUALIFIED
Kadeem FlosiAustraliaAnna Fali UNQUALIFIED
Juan WieserItalyOnyama Limba RENEWAL

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