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
Antonio CaudyCanadaStephen Shaw PROPOSAL
Kadeem FlosiBrazilStephen Shaw RENEWAL
Aika InouyeGermanyIoni Bowcher NEGOTIATION
Juan WieserAustraliaIvan Magalhaes RENEWAL
Tony FollerBrazilElwin Sharvill NEW
Murillo MaletSpainOnyama Limba UNQUALIFIED
Ricardo GauchoIndiaIvan Magalhaes RENEWAL
Octavia MaletSpainAmy Elsner QUALIFIED
Francesco ShinkoJapanAsiya Javayant RENEWAL
Jefferson SchemmerBrazilAmy Elsner QUALIFIED
Francesco ShinkoRussiaAmy Elsner QUALIFIED
Costa DilliardSpainStephen Shaw RENEWAL
Deepesh ChuiItalyXuxue Feng QUALIFIED
Francesco ShinkoJapanOnyama Limba NEW
Juan WieserJapanOnyama Limba RENEWAL
Jefferson SchemmerRussiaAnna Fali PROPOSAL
Leon OldroydItalyAmy Elsner PROPOSAL
Aruna FigeroaUnited KingdomAsiya Javayant QUALIFIED
Mujtaba NickaArgentinaXuxue Feng RENEWAL
Arvin AlbaresJapanStephen Shaw NEGOTIATION
Jefferson SchemmerItalyOnyama Limba NEW
Alejandro PerinBrazilXuxue Feng NEW
Misaki RoysterGermanyStephen Shaw NEGOTIATION
Jones VocelkaRussiaXuxue Feng NEW
Emily WhobreyFranceAnna Fali RENEWAL
Jones VocelkaAustraliaIoni Bowcher RENEWAL
Darci PoquetteFranceIvan Magalhaes PROPOSAL
Misaki RoysterSpainBernardo Dominic NEW
Francesco ShinkoCanadaAmy Elsner NEGOTIATION
Misaki RoysterJapanIvan Magalhaes NEW
Deepesh ChuiAustraliaElwin Sharvill NEGOTIATION
Clifford RimBrazilXuxue Feng NEGOTIATION
Arvin AlbaresItalyBernardo Dominic PROPOSAL
Munro FerenczArgentinaBernardo Dominic RENEWAL
Ashley DoeIndiaAnna Fali RENEWAL
Kadeem FlosiRussiaOnyama Limba RENEWAL
Ivar PaprockiBrazilBernardo Dominic UNQUALIFIED
Ashley DoeIndiaIoni Bowcher UNQUALIFIED
Cody SaylorsSpainOnyama Limba PROPOSAL
Kadeem FlosiUnited KingdomStephen Shaw PROPOSAL
Murillo MaletUnited KingdomAnna Fali RENEWAL
Misaki RoysterItalyAnna Fali PROPOSAL
Mujtaba NickaRussiaAnna Fali QUALIFIED
Mujtaba NickaCanadaAsiya Javayant NEW
Antonio CaudyUnited KingdomIoni Bowcher UNQUALIFIED
Ashley DoeCanadaAnna Fali UNQUALIFIED
James ButtAustraliaAmy Elsner PROPOSAL
Stacey MacleadBrazilAsiya Javayant QUALIFIED
Murillo MaletIndiaAnna Fali RENEWAL
Tony FollerRussiaElwin Sharvill NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Izzy GarufiIndiaAmy Elsner PROPOSAL
Morrow RutaIndiaAmy Elsner RENEWAL
Cody SaylorsCanadaXuxue Feng PROPOSAL
Morrow RutaFranceAmy Elsner NEW
Juan WieserRussiaAsiya Javayant QUALIFIED
Rodrigues CampainRussiaAnna Fali UNQUALIFIED
Francesco ShinkoFranceOnyama Limba UNQUALIFIED
Francesco ShinkoJapanIoni Bowcher NEW
Francesco ShinkoJapanIvan Magalhaes RENEWAL
Jefferson SchemmerBrazilIvan Magalhaes QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Darci PoquetteBrazil2025-10-21Feiner Bros NEW13Amy Elsner
1001Wickens NestleSpain2025-10-07Rangoni Of Florence QUALIFIED68Amy Elsner
1002Jeanfrancois VenereIndia2025-09-24Chanay, Jeffrey A Esq QUALIFIED0Ivan Magalhaes
1003Stacey MacleadUnited Kingdom2025-10-05King, Christopher A Esq NEW66Ivan Magalhaes
1004Mujtaba NickaSpain2025-09-30King, Christopher A Esq NEGOTIATION39Ioni Bowcher
1005James ButtGermany2025-10-04Feiner Bros PROPOSAL63Xuxue Feng
1006Leja CaldareraArgentina2025-10-12Morlong Associates UNQUALIFIED79Ioni Bowcher
1007Mujtaba NickaGermany2025-10-19Commercial Press QUALIFIED56Ivan Magalhaes
1008Sinclair WaycottRussia2025-10-18Commercial Press UNQUALIFIED61Amy Elsner
1009Sinclair WaycottAustralia2025-09-28Morlong Associates PROPOSAL79Xuxue Feng
1010Isabel BowleyAustralia2025-10-02Benton, John B Jr NEGOTIATION68Amy Elsner
1011Deepesh ChuiRussia2025-10-11Morlong Associates NEW52Asiya Javayant
1012Jones VocelkaItaly2025-09-24Chemel, James L Cpa UNQUALIFIED59Xuxue Feng
1013Claire TollnerGermany2025-10-01Rangoni Of Florence NEW98Asiya Javayant
1014Misaki RoysterBrazil2025-10-16Commercial Press RENEWAL41Anna Fali
1015Silvio SlusarskiArgentina2025-10-16King, Christopher A Esq QUALIFIED63Elwin Sharvill
1016Izzy GarufiGermany2025-10-14Printing Dimensions NEGOTIATION69Stephen Shaw
1017Deepesh ChuiFrance2025-09-24Truhlar And Truhlar Attys QUALIFIED89Amy Elsner
1018Maisha RulapaughSpain2025-09-30Dorl, James J Esq NEGOTIATION86Anna Fali
1019Silvio SlusarskiUnited Kingdom2025-09-27King, Christopher A Esq QUALIFIED79Anna Fali
1020Cody SaylorsCanada2025-10-04Truhlar And Truhlar Attys UNQUALIFIED6Bernardo Dominic
1021Antonio CaudyUnited Kingdom2025-10-07Rousseaux, Michael Esq RENEWAL99Ivan Magalhaes
1022Silvio SlusarskiSpain2025-10-19Rousseaux, Michael Esq QUALIFIED65Onyama Limba
1023Leja CaldareraIndia2025-10-18Dorl, James J Esq UNQUALIFIED15Elwin Sharvill
1024Wickens NestleGermany2025-10-14Chapman, Ross E Esq NEGOTIATION83Stephen Shaw
1025Mayumi KolmetzItaly2025-10-15Rangoni Of Florence PROPOSAL22Anna Fali
1026Jefferson SchemmerCanada2025-09-24Feltz Printing Service NEGOTIATION23Ioni Bowcher
1027Alejandro PerinBrazil2025-09-23Buckley Miller Wright RENEWAL37Asiya Javayant
1028Greenwood BologniaItaly2025-09-24Chapman, Ross E Esq PROPOSAL61Xuxue Feng
1029Claire TollnerJapan2025-10-13Chemel, James L Cpa NEGOTIATION73Anna Fali
1030Tony FollerRussia2025-10-04Dorl, James J Esq RENEWAL69Stephen Shaw
1031Ivar PaprockiSpain2025-10-04Printing Dimensions RENEWAL99Elwin Sharvill
1032Misaki RoysterAustralia2025-10-09Chemel, James L Cpa PROPOSAL6Asiya Javayant
1033Jones VocelkaJapan2025-10-09Commercial Press NEW98Amy Elsner
1034Maisha RulapaughAustralia2025-10-14Printing Dimensions PROPOSAL74Bernardo Dominic
1035Kadeem FlosiArgentina2025-10-14Benton, John B Jr NEW82Xuxue Feng
1036Adams MorascaJapan2025-10-05Truhlar And Truhlar Attys PROPOSAL1Amy Elsner
1037Octavia MaletGermany2025-10-17Chapman, Ross E Esq NEW75Stephen Shaw
1038Greenwood BologniaItaly2025-09-30Morlong Associates NEW40Amy Elsner
1039Alejandro PerinItaly2025-10-01Rousseaux, Michael Esq NEGOTIATION36Ivan Magalhaes
1040Wickens NestleSpain2025-10-17Rousseaux, Michael Esq NEW81Ivan Magalhaes
1041Maria MarrierJapan2025-10-21Truhlar And Truhlar Attys RENEWAL46Xuxue Feng
1042Jeanfrancois VenereJapan2025-10-05King, Christopher A Esq NEGOTIATION13Ivan Magalhaes
1043James ButtGermany2025-10-08Printing Dimensions UNQUALIFIED90Amy Elsner
1044James ButtItaly2025-10-14Buckley Miller Wright QUALIFIED72Onyama Limba
1045Alejandro PerinBrazil2025-09-27Chemel, James L Cpa QUALIFIED63Xuxue Feng
1046Greenwood BologniaItaly2025-10-18Morlong Associates PROPOSAL50Ioni Bowcher
1047Francesco ShinkoGermany2025-10-14Printing Dimensions PROPOSAL5Onyama Limba
1048Leja CaldareraFrance2025-10-10Chapman, Ross E Esq UNQUALIFIED10Stephen Shaw
1049Izzy GarufiCanada2025-10-05Dorl, James J Esq PROPOSAL95Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Morrow RutaFranceBernardo Dominic NEW
Juan WieserItalyXuxue Feng NEW
Misaki RoysterBrazilIoni Bowcher UNQUALIFIED
Cody SaylorsCanadaIoni Bowcher RENEWAL
Octavia MaletBrazilIoni Bowcher PROPOSAL
Ricardo GauchoGermanyOnyama Limba NEW
Octavia MaletCanadaBernardo Dominic NEW
Clifford RimIndiaElwin Sharvill RENEWAL
Aruna FigeroaIndiaIvan Magalhaes RENEWAL
Misaki RoysterUnited KingdomStephen Shaw NEGOTIATION
Munro FerenczSpainIvan Magalhaes NEGOTIATION
Smith GlickRussiaElwin Sharvill QUALIFIED
Stacey MacleadArgentinaElwin Sharvill QUALIFIED
Leja CaldareraBrazilIvan Magalhaes QUALIFIED
Chavez BriddickFranceStephen Shaw UNQUALIFIED
Antonio CaudySpainElwin Sharvill NEW
Leon OldroydCanadaOnyama Limba NEGOTIATION
Greenwood BologniaAustraliaXuxue Feng NEW
Silvio SlusarskiGermanyIoni Bowcher RENEWAL
Misaki RoysterGermanyIvan Magalhaes NEGOTIATION
Misaki RoysterRussiaIoni Bowcher NEGOTIATION
Maria MarrierAustraliaIvan Magalhaes UNQUALIFIED
Darci PoquetteUnited KingdomOnyama Limba NEGOTIATION
Greenwood BologniaArgentinaIoni Bowcher NEGOTIATION
Juan WieserItalyXuxue Feng NEGOTIATION
Kaitlin OstroskyJapanBernardo Dominic PROPOSAL
Julie StensethArgentinaAsiya Javayant NEW
Aruna FigeroaBrazilAsiya Javayant NEGOTIATION
Smith GlickCanadaAmy Elsner QUALIFIED
Aditya KuskoArgentinaIvan Magalhaes PROPOSAL
James ButtBrazilIvan Magalhaes NEW
Wickens NestleUnited KingdomXuxue Feng QUALIFIED
Leon OldroydAustraliaAmy Elsner NEW
Aditya KuskoBrazilAmy Elsner QUALIFIED
Munro FerenczGermanyIoni Bowcher PROPOSAL
Smith GlickCanadaElwin Sharvill PROPOSAL
Misaki RoysterArgentinaBernardo Dominic NEW
Greenwood BologniaCanadaIoni Bowcher NEGOTIATION
Arvin AlbaresGermanyAnna Fali NEGOTIATION
Salvatore StockhamJapanAnna Fali RENEWAL
Chavez BriddickArgentinaXuxue Feng PROPOSAL
Murillo MaletCanadaXuxue Feng PROPOSAL
Munro FerenczGermanyAmy Elsner UNQUALIFIED
Izzy GarufiCanadaAnna Fali RENEWAL
Johnson SergiJapanStephen Shaw RENEWAL
Stacey MacleadFranceAmy Elsner NEGOTIATION
Smith GlickFranceElwin Sharvill UNQUALIFIED
Chavez BriddickAustraliaAmy Elsner QUALIFIED
Clifford RimIndiaStephen Shaw UNQUALIFIED
Nicolas IturbideRussiaIoni Bowcher PROPOSAL
Frozen Columns
Name
Adams Morasca
Mayumi Kolmetz
Ricardo Gaucho
Salvatore Stockham
Stacey Maclead
Tony Foller
Chavez Briddick
Wickens Nestle
Murillo Malet
Stacey Maclead
Cody Saylors
Silvio Slusarski
Maria Marrier
Jeanfrancois Venere
Julie Stenseth
Wickens Nestle
Misaki Royster
Aditya Kusko
Murillo Malet
Jennifer Amigon
James Butt
Greenwood Bolognia
Cody Saylors
Adams Morasca
Ivar Paprocki
Morrow Ruta
Smith Glick
Adams Morasca
Arvin Albares
Misaki Royster
Adams Morasca
Greenwood Bolognia
Clifford Rim
Isabel Bowley
Aika Inouye
Cody Saylors
Alejandro Perin
Jeanfrancois Venere
Arvin Albares
Salvatore Stockham
Jeanfrancois Venere
Deepesh Chui
James Butt
Claire Tollner
Aditya Kusko
Mujtaba Nicka
Claire Tollner
Arvin Albares
Ivar Paprocki
Clifford Rim
IdCountryDate
1000Japan2025-10-21
1001Spain2025-10-20
1002India2025-10-19
1003Australia2025-10-05
1004Germany2025-10-20
1005Russia2025-10-11
1006Italy2025-09-25
1007Spain2025-10-18
1008Germany2025-10-04
1009Spain2025-09-25
1010Russia2025-10-09
1011United Kingdom2025-10-20
1012France2025-10-10
1013Russia2025-09-30
1014Canada2025-09-26
1015Brazil2025-10-02
1016Australia2025-09-26
1017Brazil2025-10-02
1018Spain2025-10-19
1019Brazil2025-10-02
1020France2025-10-13
1021India2025-10-09
1022United Kingdom2025-10-06
1023Argentina2025-10-17
1024Russia2025-10-12
1025Germany2025-10-04
1026Spain2025-10-05
1027France2025-10-05
1028Italy2025-10-16
1029Brazil2025-10-17
1030Brazil2025-09-22
1031Italy2025-09-27
1032Japan2025-09-26
1033Argentina2025-10-04
1034India2025-09-28
1035Russia2025-10-02
1036India2025-10-01
1037India2025-10-02
1038India2025-09-27
1039Canada2025-09-23
1040Germany2025-10-03
1041Russia2025-10-03
1042Russia2025-10-11
1043France2025-10-06
1044France2025-09-22
1045Canada2025-10-19
1046Italy2025-09-28
1047Argentina2025-10-04
1048Italy2025-10-02
1049Brazil2025-10-15

On-Demand Data

NameIdCountryDate
Tony Foller1000Spain2025-10-20
Claire Tollner1001Japan2025-09-23
Aika Inouye1002India2025-10-03
Cody Saylors1003Canada2025-09-22
Ashley Doe1004Germany2025-09-30
Faith Gillian1005Italy2025-09-22
Mayumi Kolmetz1006Japan2025-10-16
Maria Marrier1007United Kingdom2025-10-03
Jeanfrancois Venere1008Argentina2025-09-22
Mayumi Kolmetz1009Russia2025-10-12
Sinclair Waycott1010United Kingdom2025-09-24
Octavia Malet1011Japan2025-10-21
Faith Gillian1012Spain2025-10-08
Alejandro Perin1013Japan2025-10-18
Nicolas Iturbide1014Brazil2025-09-22
Aruna Figeroa1015Russia2025-09-22
Stacey Maclead1016India2025-10-10
Maisha Rulapaugh1017France2025-10-21
Arvin Albares1018Spain2025-09-30
Rodrigues Campain1019France2025-09-23
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Leon OldroydAustraliaIoni Bowcher UNQUALIFIED
Claire TollnerArgentinaAnna Fali QUALIFIED
Aika InouyeCanadaBernardo Dominic NEGOTIATION
Kaitlin OstroskySpainXuxue Feng QUALIFIED
Francesco ShinkoArgentinaElwin Sharvill UNQUALIFIED
Antonio CaudyCanadaXuxue Feng QUALIFIED
Kadeem FlosiUnited KingdomXuxue Feng QUALIFIED
Darci PoquetteRussiaStephen Shaw NEGOTIATION
Antonio CaudyGermanyAnna Fali QUALIFIED
Leja CaldareraIndiaAmy Elsner RENEWAL
Murillo MaletAustraliaAsiya Javayant QUALIFIED
Nicolas IturbideUnited KingdomIoni Bowcher PROPOSAL
Sinclair WaycottAustraliaAnna Fali NEW
Julie StensethAustraliaIvan Magalhaes PROPOSAL
Munro FerenczItalyAmy Elsner UNQUALIFIED
Rodrigues CampainItalyStephen Shaw PROPOSAL
Clifford RimCanadaIoni Bowcher QUALIFIED
Cody SaylorsFranceBernardo Dominic NEW
Johnson SergiIndiaAsiya Javayant UNQUALIFIED
Aditya KuskoGermanyAsiya Javayant NEW
Stacey MacleadIndiaAsiya Javayant NEW
Jefferson SchemmerUnited KingdomIvan Magalhaes RENEWAL
Silvio SlusarskiSpainXuxue Feng RENEWAL
Munro FerenczItalyStephen Shaw QUALIFIED
Mujtaba NickaJapanElwin Sharvill PROPOSAL
Costa DilliardGermanyAsiya Javayant RENEWAL
Deepesh ChuiItalyXuxue Feng PROPOSAL
Morrow RutaArgentinaAsiya Javayant RENEWAL
Silvio SlusarskiAustraliaIvan Magalhaes NEGOTIATION
Mujtaba NickaGermanyAsiya Javayant PROPOSAL
Maria MarrierBrazilStephen Shaw NEGOTIATION
Aditya KuskoFranceElwin Sharvill QUALIFIED
Aruna FigeroaIndiaIoni Bowcher QUALIFIED
Stacey MacleadAustraliaOnyama Limba NEW
Costa DilliardBrazilIoni Bowcher NEGOTIATION
Izzy GarufiArgentinaBernardo Dominic RENEWAL
Leon OldroydGermanyStephen Shaw QUALIFIED
Jennifer AmigonAustraliaIoni Bowcher RENEWAL
James ButtIndiaStephen Shaw RENEWAL
Francesco ShinkoItalyXuxue Feng NEGOTIATION

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