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
Alejandro PerinIndiaAmy Elsner QUALIFIED
Arvin AlbaresIndiaStephen Shaw NEGOTIATION
Antonio CaudyItalyIvan Magalhaes RENEWAL
Ricardo GauchoBrazilBernardo Dominic NEW
Clifford RimRussiaStephen Shaw NEW
Aruna FigeroaJapanBernardo Dominic NEW
Deepesh ChuiArgentinaAnna Fali QUALIFIED
Wickens NestleFranceIoni Bowcher NEGOTIATION
Rodrigues CampainRussiaStephen Shaw NEW
Rodrigues CampainItalyAnna Fali NEGOTIATION
Francesco ShinkoUnited KingdomElwin Sharvill QUALIFIED
Izzy GarufiItalyXuxue Feng UNQUALIFIED
Ashley DoeSpainAnna Fali QUALIFIED
Juan WieserIndiaAmy Elsner QUALIFIED
Maria MarrierUnited KingdomAsiya Javayant PROPOSAL
Leon OldroydBrazilOnyama Limba RENEWAL
Jones VocelkaItalyXuxue Feng QUALIFIED
Leja CaldareraAustraliaAnna Fali NEW
Maria MarrierIndiaElwin Sharvill NEGOTIATION
Izzy GarufiFranceElwin Sharvill PROPOSAL
Aruna FigeroaArgentinaIvan Magalhaes NEGOTIATION
Adams MorascaItalyStephen Shaw PROPOSAL
Claire TollnerRussiaXuxue Feng NEGOTIATION
Emily WhobreyItalyAmy Elsner QUALIFIED
Mujtaba NickaFranceIvan Magalhaes UNQUALIFIED
Rodrigues CampainFranceElwin Sharvill UNQUALIFIED
Smith GlickIndiaBernardo Dominic RENEWAL
Jeanfrancois VenereCanadaIoni Bowcher NEGOTIATION
Ivar PaprockiJapanAmy Elsner NEW
Octavia MaletItalyAsiya Javayant NEGOTIATION
Murillo MaletJapanAsiya Javayant NEW
Mujtaba NickaItalyOnyama Limba QUALIFIED
Aruna FigeroaFranceAmy Elsner PROPOSAL
Tony FollerItalyXuxue Feng UNQUALIFIED
Francesco ShinkoIndiaXuxue Feng QUALIFIED
Aruna FigeroaBrazilXuxue Feng PROPOSAL
Maisha RulapaughUnited KingdomBernardo Dominic PROPOSAL
Leja CaldareraBrazilBernardo Dominic NEW
Jennifer AmigonFranceAnna Fali PROPOSAL
Ricardo GauchoBrazilAmy Elsner NEGOTIATION
Jennifer AmigonArgentinaIoni Bowcher NEW
Sinclair WaycottIndiaOnyama Limba RENEWAL
Murillo MaletSpainIoni Bowcher UNQUALIFIED
Maisha RulapaughIndiaXuxue Feng QUALIFIED
Aika InouyeRussiaXuxue Feng NEW
Aditya KuskoIndiaStephen Shaw NEW
Ivar PaprockiJapanAnna Fali NEGOTIATION
Nicolas IturbideJapanElwin Sharvill NEGOTIATION
Mujtaba NickaIndiaBernardo Dominic NEW
Murillo MaletGermanyElwin Sharvill NEW
Horizontal
NameCountryRepresentativeStatus
Misaki RoysterItalyIvan Magalhaes UNQUALIFIED
Smith GlickItalyAmy Elsner RENEWAL
Mujtaba NickaBrazilBernardo Dominic RENEWAL
Aika InouyeBrazilStephen Shaw QUALIFIED
Sinclair WaycottFranceElwin Sharvill QUALIFIED
Greenwood BologniaGermanyAsiya Javayant NEGOTIATION
Alejandro PerinUnited KingdomAmy Elsner QUALIFIED
Octavia MaletAustraliaAsiya Javayant PROPOSAL
James ButtFranceAsiya Javayant RENEWAL
Nicolas IturbideIndiaIvan Magalhaes NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Chavez BriddickRussia2026-05-12Rousseaux, Michael Esq QUALIFIED82Bernardo Dominic
1001Nicolas IturbideArgentina2026-05-12Chemel, James L Cpa UNQUALIFIED2Ivan Magalhaes
1002Smith GlickSpain2026-05-05Rousseaux, Michael Esq QUALIFIED27Ivan Magalhaes
1003Jennifer AmigonFrance2026-04-29Truhlar And Truhlar Attys PROPOSAL25Asiya Javayant
1004Aditya KuskoJapan2026-04-30King, Christopher A Esq NEGOTIATION41Bernardo Dominic
1005Maria MarrierJapan2026-04-25Chapman, Ross E Esq PROPOSAL37Onyama Limba
1006Aditya KuskoUnited Kingdom2026-05-19Chemel, James L Cpa NEW64Amy Elsner
1007Arvin AlbaresAustralia2026-05-10Chemel, James L Cpa NEGOTIATION82Onyama Limba
1008Maisha RulapaughArgentina2026-05-23Rousseaux, Michael Esq NEGOTIATION32Onyama Limba
1009David DarakjyJapan2026-05-09Rangoni Of Florence UNQUALIFIED30Elwin Sharvill
1010Jennifer AmigonRussia2026-05-22King, Christopher A Esq PROPOSAL30Anna Fali
1011Costa DilliardCanada2026-05-20Morlong Associates NEGOTIATION15Bernardo Dominic
1012Munro FerenczSpain2026-05-09Truhlar And Truhlar Attys NEW80Asiya Javayant
1013Murillo MaletAustralia2026-05-08Commercial Press PROPOSAL62Ivan Magalhaes
1014Misaki RoysterCanada2026-05-02Buckley Miller Wright NEGOTIATION29Stephen Shaw
1015Aditya KuskoSpain2026-05-09King, Christopher A Esq RENEWAL95Stephen Shaw
1016Kaitlin OstroskyRussia2026-05-20Chemel, James L Cpa RENEWAL48Xuxue Feng
1017Faith GillianUnited Kingdom2026-05-10King, Christopher A Esq NEGOTIATION12Bernardo Dominic
1018Antonio CaudyAustralia2026-05-11Rousseaux, Michael Esq UNQUALIFIED45Bernardo Dominic
1019Claire TollnerFrance2026-05-24Benton, John B Jr NEW61Anna Fali
1020Deepesh ChuiJapan2026-05-18Dorl, James J Esq UNQUALIFIED6Xuxue Feng
1021Claire TollnerJapan2026-04-30Dorl, James J Esq RENEWAL63Ioni Bowcher
1022Tony FollerGermany2026-05-01Chapman, Ross E Esq NEW22Ivan Magalhaes
1023Silvio SlusarskiSpain2026-04-28Commercial Press NEGOTIATION44Amy Elsner
1024Maisha RulapaughSpain2026-05-15Chapman, Ross E Esq NEW15Bernardo Dominic
1025Claire TollnerIndia2026-05-06Rousseaux, Michael Esq UNQUALIFIED25Anna Fali
1026Tony FollerBrazil2026-05-01Chemel, James L Cpa PROPOSAL87Xuxue Feng
1027Adams MorascaCanada2026-05-05Chemel, James L Cpa NEW44Asiya Javayant
1028David DarakjyUnited Kingdom2026-05-13Commercial Press RENEWAL39Xuxue Feng
1029David DarakjyGermany2026-04-30Printing Dimensions NEGOTIATION6Bernardo Dominic
1030Costa DilliardAustralia2026-05-15Commercial Press RENEWAL12Xuxue Feng
1031Tony FollerJapan2026-05-14Benton, John B Jr NEGOTIATION10Ioni Bowcher
1032David DarakjyIndia2026-05-18Chemel, James L Cpa RENEWAL22Xuxue Feng
1033Claire TollnerArgentina2026-05-20Truhlar And Truhlar Attys RENEWAL90Elwin Sharvill
1034Rodrigues CampainRussia2026-05-17Buckley Miller Wright UNQUALIFIED77Bernardo Dominic
1035David DarakjyJapan2026-04-25Rousseaux, Michael Esq NEW77Ivan Magalhaes
1036Kadeem FlosiItaly2026-04-26Feltz Printing Service NEW44Elwin Sharvill
1037Emily WhobreyRussia2026-05-17Feltz Printing Service NEGOTIATION60Bernardo Dominic
1038Salvatore StockhamJapan2026-04-30Rangoni Of Florence QUALIFIED16Xuxue Feng
1039Adams MorascaJapan2026-05-08Feltz Printing Service RENEWAL20Ioni Bowcher
1040Rodrigues CampainAustralia2026-05-23Benton, John B Jr RENEWAL4Asiya Javayant
1041Isabel BowleyArgentina2026-05-17Truhlar And Truhlar Attys UNQUALIFIED91Xuxue Feng
1042Arvin AlbaresSpain2026-05-12Rangoni Of Florence UNQUALIFIED92Asiya Javayant
1043Munro FerenczBrazil2026-05-23Buckley Miller Wright NEGOTIATION36Elwin Sharvill
1044Maria MarrierGermany2026-05-08King, Christopher A Esq NEGOTIATION45Asiya Javayant
1045Aika InouyeJapan2026-04-28Truhlar And Truhlar Attys PROPOSAL68Anna Fali
1046Isabel BowleyBrazil2026-05-02Chemel, James L Cpa QUALIFIED64Xuxue Feng
1047David DarakjyFrance2026-05-05Feltz Printing Service RENEWAL44Amy Elsner
1048Salvatore StockhamArgentina2026-05-02Dorl, James J Esq RENEWAL99Elwin Sharvill
1049Mujtaba NickaAustralia2026-05-08Benton, John B Jr NEW29Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Costa DilliardItalyStephen Shaw PROPOSAL
Adams MorascaJapanAsiya Javayant NEW
Salvatore StockhamSpainAnna Fali PROPOSAL
Deepesh ChuiItalyIvan Magalhaes PROPOSAL
Isabel BowleyBrazilOnyama Limba UNQUALIFIED
Tony FollerIndiaOnyama Limba NEGOTIATION
Adams MorascaBrazilBernardo Dominic NEGOTIATION
Faith GillianIndiaAnna Fali NEW
Darci PoquetteRussiaIvan Magalhaes PROPOSAL
Wickens NestleSpainElwin Sharvill RENEWAL
Deepesh ChuiGermanyIoni Bowcher RENEWAL
Octavia MaletAustraliaXuxue Feng RENEWAL
Greenwood BologniaFranceOnyama Limba QUALIFIED
Jones VocelkaIndiaAnna Fali RENEWAL
Ashley DoeBrazilXuxue Feng NEGOTIATION
Izzy GarufiUnited KingdomIoni Bowcher NEGOTIATION
Sinclair WaycottSpainIvan Magalhaes PROPOSAL
Jefferson SchemmerIndiaAsiya Javayant UNQUALIFIED
Cody SaylorsBrazilStephen Shaw NEGOTIATION
Maisha RulapaughBrazilAnna Fali PROPOSAL
Misaki RoysterFranceElwin Sharvill PROPOSAL
Mujtaba NickaCanadaAmy Elsner NEW
Claire TollnerCanadaBernardo Dominic RENEWAL
Tony FollerItalyIoni Bowcher QUALIFIED
Deepesh ChuiIndiaElwin Sharvill NEW
Faith GillianIndiaElwin Sharvill NEGOTIATION
Isabel BowleyRussiaStephen Shaw PROPOSAL
Smith GlickFranceIvan Magalhaes PROPOSAL
Jeanfrancois VenereArgentinaXuxue Feng NEGOTIATION
Isabel BowleyIndiaStephen Shaw RENEWAL
Aika InouyeSpainStephen Shaw NEGOTIATION
Morrow RutaJapanAmy Elsner RENEWAL
Greenwood BologniaUnited KingdomIvan Magalhaes NEGOTIATION
Francesco ShinkoBrazilBernardo Dominic RENEWAL
James ButtUnited KingdomElwin Sharvill QUALIFIED
Nicolas IturbideUnited KingdomBernardo Dominic UNQUALIFIED
Jefferson SchemmerFranceAsiya Javayant QUALIFIED
Aika InouyeArgentinaStephen Shaw NEGOTIATION
Jeanfrancois VenereSpainXuxue Feng PROPOSAL
Sinclair WaycottUnited KingdomOnyama Limba NEW
Deepesh ChuiSpainBernardo Dominic NEW
Arvin AlbaresFranceAnna Fali RENEWAL
Mayumi KolmetzJapanXuxue Feng NEW
James ButtItalyElwin Sharvill UNQUALIFIED
Darci PoquetteArgentinaAsiya Javayant RENEWAL
Juan WieserItalyBernardo Dominic PROPOSAL
Alejandro PerinBrazilAmy Elsner NEW
Johnson SergiRussiaAsiya Javayant UNQUALIFIED
Smith GlickCanadaXuxue Feng QUALIFIED
Francesco ShinkoBrazilXuxue Feng UNQUALIFIED
Frozen Columns
Name
Wickens Nestle
Stacey Maclead
Munro Ferencz
Adams Morasca
Clifford Rim
Kaitlin Ostrosky
Juan Wieser
Maria Marrier
James Butt
Claire Tollner
Faith Gillian
Tony Foller
Emily Whobrey
Claire Tollner
Darci Poquette
Leon Oldroyd
Murillo Malet
Stacey Maclead
Isabel Bowley
Smith Glick
Arvin Albares
Antonio Caudy
Wickens Nestle
Leja Caldarera
Ricardo Gaucho
Emily Whobrey
Antonio Caudy
Faith Gillian
Faith Gillian
Munro Ferencz
Salvatore Stockham
Tony Foller
Leja Caldarera
Emily Whobrey
Arvin Albares
Rodrigues Campain
Aika Inouye
Clifford Rim
Johnson Sergi
Izzy Garufi
Nicolas Iturbide
Darci Poquette
Jeanfrancois Venere
Smith Glick
Ricardo Gaucho
Aruna Figeroa
Kadeem Flosi
Salvatore Stockham
Chavez Briddick
Maria Marrier
IdCountryDate
1000Russia2026-04-28
1001Canada2026-04-29
1002Germany2026-05-12
1003Spain2026-05-09
1004Brazil2026-05-23
1005Japan2026-04-27
1006France2026-04-29
1007Australia2026-05-12
1008Canada2026-05-06
1009France2026-05-18
1010Italy2026-04-30
1011United Kingdom2026-05-01
1012Russia2026-05-07
1013Canada2026-05-10
1014France2026-05-11
1015Russia2026-05-14
1016Russia2026-05-11
1017Russia2026-05-11
1018France2026-05-21
1019Spain2026-04-29
1020Japan2026-05-17
1021Italy2026-05-12
1022India2026-05-23
1023Germany2026-05-14
1024Canada2026-05-20
1025Australia2026-05-09
1026Russia2026-05-24
1027Canada2026-04-29
1028India2026-05-16
1029India2026-05-19
1030Italy2026-05-10
1031Argentina2026-05-10
1032Argentina2026-05-19
1033Japan2026-05-17
1034United Kingdom2026-05-20
1035France2026-05-05
1036Germany2026-05-06
1037Argentina2026-04-30
1038Canada2026-05-12
1039Japan2026-05-18
1040India2026-04-27
1041India2026-05-04
1042Argentina2026-04-28
1043Japan2026-05-16
1044United Kingdom2026-05-20
1045Canada2026-04-29
1046Canada2026-04-27
1047Australia2026-05-14
1048Australia2026-05-13
1049Italy2026-05-01

On-Demand Data

NameIdCountryDate
Julie Stenseth1000India2026-05-05
Cody Saylors1001Russia2026-05-01
Morrow Ruta1002Spain2026-04-30
Stacey Maclead1003Brazil2026-05-12
Nicolas Iturbide1004Spain2026-05-21
Faith Gillian1005Australia2026-05-07
Antonio Caudy1006France2026-05-16
Murillo Malet1007France2026-05-23
Aika Inouye1008Italy2026-04-26
Misaki Royster1009Russia2026-05-20
Ivar Paprocki1010Spain2026-05-21
Leon Oldroyd1011Brazil2026-05-23
Jefferson Schemmer1012France2026-05-14
Nicolas Iturbide1013Argentina2026-05-05
David Darakjy1014Spain2026-05-03
Nicolas Iturbide1015Italy2026-05-09
Greenwood Bolognia1016Argentina2026-04-25
Maria Marrier1017United Kingdom2026-05-10
Maisha Rulapaugh1018Australia2026-05-20
Jennifer Amigon1019Canada2026-04-28
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Kadeem FlosiItalyIvan Magalhaes PROPOSAL
Alejandro PerinJapanOnyama Limba QUALIFIED
David DarakjyArgentinaOnyama Limba QUALIFIED
Ricardo GauchoJapanAmy Elsner QUALIFIED
Cody SaylorsIndiaOnyama Limba RENEWAL
Deepesh ChuiGermanyAmy Elsner PROPOSAL
Chavez BriddickFranceElwin Sharvill UNQUALIFIED
Darci PoquetteJapanStephen Shaw NEW
Maisha RulapaughGermanyElwin Sharvill QUALIFIED
Stacey MacleadJapanStephen Shaw UNQUALIFIED
Leja CaldareraIndiaXuxue Feng NEGOTIATION
Alejandro PerinFranceOnyama Limba QUALIFIED
Silvio SlusarskiIndiaIvan Magalhaes QUALIFIED
Cody SaylorsJapanAsiya Javayant UNQUALIFIED
Aditya KuskoFranceAnna Fali UNQUALIFIED
Juan WieserCanadaAsiya Javayant NEW
Francesco ShinkoFranceAmy Elsner NEW
Jones VocelkaItalyIvan Magalhaes NEW
Aika InouyeIndiaAmy Elsner QUALIFIED
Maria MarrierCanadaElwin Sharvill QUALIFIED
Adams MorascaSpainOnyama Limba PROPOSAL
Chavez BriddickFranceStephen Shaw PROPOSAL
Ivar PaprockiCanadaOnyama Limba PROPOSAL
Juan WieserRussiaElwin Sharvill RENEWAL
Sinclair WaycottCanadaIoni Bowcher PROPOSAL
Misaki RoysterJapanBernardo Dominic NEW
Izzy GarufiSpainAmy Elsner QUALIFIED
Nicolas IturbideGermanyAnna Fali QUALIFIED
Stacey MacleadIndiaOnyama Limba QUALIFIED
Darci PoquetteJapanBernardo Dominic NEW
Nicolas IturbideGermanyOnyama Limba PROPOSAL
Alejandro PerinIndiaAmy Elsner PROPOSAL
Silvio SlusarskiArgentinaAsiya Javayant PROPOSAL
Sinclair WaycottIndiaIvan Magalhaes PROPOSAL
Jones VocelkaJapanAsiya Javayant NEGOTIATION
Wickens NestleAustraliaAmy Elsner PROPOSAL
Clifford RimIndiaBernardo Dominic RENEWAL
Claire TollnerBrazilBernardo Dominic UNQUALIFIED
Arvin AlbaresUnited KingdomAnna Fali RENEWAL
Aditya KuskoUnited KingdomAsiya Javayant 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>