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
Arvin AlbaresSpainIvan Magalhaes PROPOSAL
Ivar PaprockiFranceOnyama Limba UNQUALIFIED
Octavia MaletGermanyAmy Elsner RENEWAL
Jones VocelkaRussiaStephen Shaw NEW
Juan WieserAustraliaElwin Sharvill QUALIFIED
Maisha RulapaughBrazilIoni Bowcher RENEWAL
Rodrigues CampainAustraliaStephen Shaw NEGOTIATION
Emily WhobreyJapanOnyama Limba NEW
Jefferson SchemmerIndiaAmy Elsner RENEWAL
Leon OldroydSpainAnna Fali NEW
Aditya KuskoRussiaStephen Shaw UNQUALIFIED
Francesco ShinkoItalyIvan Magalhaes NEGOTIATION
Munro FerenczRussiaAsiya Javayant NEW
Rodrigues CampainFranceIvan Magalhaes RENEWAL
Darci PoquetteCanadaAmy Elsner QUALIFIED
Greenwood BologniaSpainIoni Bowcher NEW
Claire TollnerItalyXuxue Feng QUALIFIED
Maria MarrierItalyOnyama Limba UNQUALIFIED
Jefferson SchemmerAustraliaStephen Shaw RENEWAL
Arvin AlbaresItalyIoni Bowcher PROPOSAL
Wickens NestleUnited KingdomBernardo Dominic QUALIFIED
David DarakjyAustraliaAmy Elsner QUALIFIED
Silvio SlusarskiFranceStephen Shaw NEGOTIATION
Tony FollerBrazilAmy Elsner PROPOSAL
Leon OldroydBrazilAmy Elsner RENEWAL
Aika InouyeIndiaIvan Magalhaes PROPOSAL
Johnson SergiUnited KingdomIoni Bowcher PROPOSAL
Octavia MaletItalyStephen Shaw NEGOTIATION
Johnson SergiAustraliaElwin Sharvill NEW
Jefferson SchemmerSpainAmy Elsner NEW
Adams MorascaUnited KingdomAsiya Javayant PROPOSAL
Cody SaylorsUnited KingdomElwin Sharvill UNQUALIFIED
Antonio CaudyUnited KingdomAnna Fali NEGOTIATION
Silvio SlusarskiFranceElwin Sharvill QUALIFIED
Mujtaba NickaAustraliaAnna Fali QUALIFIED
Jeanfrancois VenereItalyElwin Sharvill NEGOTIATION
Isabel BowleyGermanyAsiya Javayant RENEWAL
Tony FollerGermanyElwin Sharvill RENEWAL
Claire TollnerIndiaXuxue Feng NEW
Jeanfrancois VenereItalyAnna Fali NEW
Emily WhobreyGermanyElwin Sharvill RENEWAL
Leja CaldareraUnited KingdomIvan Magalhaes QUALIFIED
Nicolas IturbideBrazilStephen Shaw UNQUALIFIED
Izzy GarufiSpainOnyama Limba NEW
Arvin AlbaresAustraliaElwin Sharvill NEW
Maria MarrierFranceBernardo Dominic PROPOSAL
Cody SaylorsSpainAsiya Javayant QUALIFIED
Darci PoquetteArgentinaAsiya Javayant NEGOTIATION
Adams MorascaJapanXuxue Feng NEW
Misaki RoysterUnited KingdomAsiya Javayant NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Emily WhobreyIndiaIoni Bowcher RENEWAL
Morrow RutaBrazilIoni Bowcher NEGOTIATION
Ashley DoeArgentinaOnyama Limba RENEWAL
Juan WieserRussiaElwin Sharvill NEW
Salvatore StockhamCanadaAnna Fali RENEWAL
Murillo MaletSpainAnna Fali NEGOTIATION
Alejandro PerinGermanyOnyama Limba RENEWAL
Johnson SergiCanadaAsiya Javayant PROPOSAL
Aditya KuskoFranceOnyama Limba PROPOSAL
Aika InouyeBrazilAsiya Javayant UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Smith GlickRussia2026-06-04Morlong Associates NEGOTIATION30Anna Fali
1001Jefferson SchemmerIndia2026-05-27Feiner Bros NEGOTIATION77Ioni Bowcher
1002Arvin AlbaresJapan2026-05-20Feiner Bros RENEWAL98Anna Fali
1003Murillo MaletAustralia2026-05-29Commercial Press NEW14Ivan Magalhaes
1004Mayumi KolmetzIndia2026-06-07Truhlar And Truhlar Attys NEGOTIATION69Bernardo Dominic
1005Silvio SlusarskiRussia2026-06-06Chapman, Ross E Esq NEGOTIATION28Elwin Sharvill
1006Claire TollnerUnited Kingdom2026-05-30Feiner Bros RENEWAL42Elwin Sharvill
1007Leja CaldareraBrazil2026-06-03Chemel, James L Cpa NEW61Amy Elsner
1008Leon OldroydArgentina2026-06-11Rangoni Of Florence NEW98Asiya Javayant
1009Smith GlickFrance2026-06-10Feiner Bros QUALIFIED38Elwin Sharvill
1010Aika InouyeSpain2026-05-30King, Christopher A Esq NEGOTIATION90Amy Elsner
1011Emily WhobreyAustralia2026-06-08Rousseaux, Michael Esq RENEWAL36Ioni Bowcher
1012Adams MorascaCanada2026-06-06Chanay, Jeffrey A Esq NEGOTIATION69Elwin Sharvill
1013Francesco ShinkoFrance2026-05-24Feltz Printing Service NEGOTIATION11Amy Elsner
1014Octavia MaletBrazil2026-06-14Feltz Printing Service PROPOSAL3Elwin Sharvill
1015Deepesh ChuiJapan2026-06-14Rousseaux, Michael Esq PROPOSAL19Anna Fali
1016Mujtaba NickaAustralia2026-06-15Commercial Press NEGOTIATION73Bernardo Dominic
1017Costa DilliardUnited Kingdom2026-05-22King, Christopher A Esq RENEWAL59Amy Elsner
1018James ButtUnited Kingdom2026-06-11Printing Dimensions RENEWAL55Amy Elsner
1019Greenwood BologniaUnited Kingdom2026-05-28Chapman, Ross E Esq NEW59Ivan Magalhaes
1020Wickens NestleCanada2026-06-16Buckley Miller Wright PROPOSAL11Ioni Bowcher
1021Izzy GarufiArgentina2026-05-24Morlong Associates PROPOSAL53Anna Fali
1022Maria MarrierIndia2026-06-06King, Christopher A Esq RENEWAL23Xuxue Feng
1023Darci PoquetteCanada2026-06-14Morlong Associates NEW86Amy Elsner
1024Murillo MaletJapan2026-06-05Printing Dimensions UNQUALIFIED70Xuxue Feng
1025Ashley DoeAustralia2026-06-01Dorl, James J Esq RENEWAL97Onyama Limba
1026Jeanfrancois VenereJapan2026-06-18Benton, John B Jr RENEWAL1Asiya Javayant
1027Adams MorascaArgentina2026-06-10Rousseaux, Michael Esq NEW52Elwin Sharvill
1028Nicolas IturbideBrazil2026-06-13King, Christopher A Esq RENEWAL72Asiya Javayant
1029Sinclair WaycottCanada2026-06-01Feiner Bros PROPOSAL38Anna Fali
1030Ricardo GauchoSpain2026-06-08Feiner Bros QUALIFIED51Elwin Sharvill
1031Chavez BriddickBrazil2026-05-23Feltz Printing Service RENEWAL38Xuxue Feng
1032Jefferson SchemmerCanada2026-06-04Dorl, James J Esq PROPOSAL31Stephen Shaw
1033Julie StensethJapan2026-05-23Chanay, Jeffrey A Esq NEGOTIATION53Bernardo Dominic
1034Stacey MacleadFrance2026-06-14Feiner Bros NEGOTIATION95Ioni Bowcher
1035Clifford RimAustralia2026-05-29Chemel, James L Cpa NEGOTIATION89Amy Elsner
1036Mayumi KolmetzRussia2026-06-07Printing Dimensions RENEWAL91Ioni Bowcher
1037Jefferson SchemmerJapan2026-05-30Feiner Bros NEGOTIATION33Amy Elsner
1038Claire TollnerItaly2026-05-24Truhlar And Truhlar Attys NEW80Asiya Javayant
1039Morrow RutaArgentina2026-06-15Rangoni Of Florence NEW50Anna Fali
1040Darci PoquetteBrazil2026-06-06Chanay, Jeffrey A Esq NEGOTIATION73Ivan Magalhaes
1041Greenwood BologniaJapan2026-06-09Commercial Press PROPOSAL84Asiya Javayant
1042Greenwood BologniaFrance2026-06-11Printing Dimensions QUALIFIED98Bernardo Dominic
1043Leon OldroydFrance2026-05-29Dorl, James J Esq NEGOTIATION67Amy Elsner
1044Mayumi KolmetzUnited Kingdom2026-06-17Dorl, James J Esq RENEWAL17Ivan Magalhaes
1045Johnson SergiAustralia2026-05-24Printing Dimensions RENEWAL71Stephen Shaw
1046Misaki RoysterUnited Kingdom2026-06-08Feiner Bros UNQUALIFIED16Asiya Javayant
1047Jones VocelkaCanada2026-05-30Buckley Miller Wright PROPOSAL61Asiya Javayant
1048Nicolas IturbideGermany2026-06-14Morlong Associates PROPOSAL50Amy Elsner
1049Johnson SergiItaly2026-06-17Morlong Associates NEGOTIATION35Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Smith GlickGermanyAnna Fali UNQUALIFIED
Darci PoquetteAustraliaStephen Shaw RENEWAL
Mujtaba NickaGermanyAmy Elsner QUALIFIED
Aditya KuskoFranceXuxue Feng UNQUALIFIED
Clifford RimAustraliaElwin Sharvill QUALIFIED
Juan WieserGermanyAnna Fali RENEWAL
Emily WhobreyFranceBernardo Dominic PROPOSAL
Stacey MacleadSpainAnna Fali NEW
Izzy GarufiSpainAnna Fali RENEWAL
Maisha RulapaughArgentinaAmy Elsner QUALIFIED
Darci PoquetteItalyBernardo Dominic NEW
Greenwood BologniaRussiaXuxue Feng RENEWAL
Adams MorascaItalyXuxue Feng QUALIFIED
James ButtAustraliaOnyama Limba QUALIFIED
Juan WieserArgentinaIoni Bowcher PROPOSAL
Alejandro PerinSpainBernardo Dominic RENEWAL
Johnson SergiBrazilAsiya Javayant RENEWAL
Leon OldroydGermanyOnyama Limba NEW
Maria MarrierFranceElwin Sharvill NEW
Kadeem FlosiArgentinaAmy Elsner NEGOTIATION
Maisha RulapaughIndiaIvan Magalhaes NEW
Stacey MacleadSpainIvan Magalhaes RENEWAL
Ivar PaprockiFranceXuxue Feng NEGOTIATION
Jeanfrancois VenereCanadaXuxue Feng UNQUALIFIED
Morrow RutaRussiaOnyama Limba PROPOSAL
Faith GillianGermanyElwin Sharvill RENEWAL
Ricardo GauchoJapanElwin Sharvill NEGOTIATION
Smith GlickRussiaAnna Fali NEGOTIATION
Maisha RulapaughSpainXuxue Feng RENEWAL
Rodrigues CampainFranceIoni Bowcher UNQUALIFIED
Jones VocelkaRussiaAsiya Javayant QUALIFIED
Salvatore StockhamGermanyBernardo Dominic UNQUALIFIED
Ashley DoeUnited KingdomIoni Bowcher UNQUALIFIED
Maria MarrierJapanIvan Magalhaes UNQUALIFIED
Ivar PaprockiJapanIvan Magalhaes UNQUALIFIED
Leja CaldareraGermanyOnyama Limba NEGOTIATION
Jennifer AmigonRussiaAnna Fali NEW
James ButtFranceStephen Shaw NEGOTIATION
Juan WieserAustraliaAsiya Javayant PROPOSAL
Munro FerenczRussiaBernardo Dominic NEGOTIATION
David DarakjyUnited KingdomOnyama Limba NEGOTIATION
Nicolas IturbideUnited KingdomElwin Sharvill NEGOTIATION
Misaki RoysterCanadaAsiya Javayant NEW
David DarakjyGermanyBernardo Dominic PROPOSAL
Cody SaylorsBrazilIoni Bowcher NEGOTIATION
Costa DilliardAustraliaAnna Fali PROPOSAL
Emily WhobreyGermanyOnyama Limba RENEWAL
Julie StensethGermanyAmy Elsner QUALIFIED
Arvin AlbaresJapanBernardo Dominic PROPOSAL
Morrow RutaFranceAsiya Javayant RENEWAL
Frozen Columns
Name
Chavez Briddick
Rodrigues Campain
Costa Dilliard
Costa Dilliard
Murillo Malet
Clifford Rim
Claire Tollner
Morrow Ruta
Aika Inouye
Leja Caldarera
Munro Ferencz
Octavia Malet
Johnson Sergi
Octavia Malet
Wickens Nestle
Greenwood Bolognia
Francesco Shinko
Stacey Maclead
Aruna Figeroa
Sinclair Waycott
Emily Whobrey
Cody Saylors
Emily Whobrey
Jeanfrancois Venere
Salvatore Stockham
Julie Stenseth
Misaki Royster
Ivar Paprocki
Jeanfrancois Venere
Greenwood Bolognia
Jones Vocelka
Maisha Rulapaugh
Wickens Nestle
James Butt
Aika Inouye
Darci Poquette
Johnson Sergi
Maria Marrier
Ivar Paprocki
Murillo Malet
Aruna Figeroa
Chavez Briddick
David Darakjy
Johnson Sergi
Munro Ferencz
Clifford Rim
Jeanfrancois Venere
Jones Vocelka
Costa Dilliard
Costa Dilliard
IdCountryDate
1000France2026-06-10
1001United Kingdom2026-05-24
1002Italy2026-05-29
1003Russia2026-05-29
1004Australia2026-06-13
1005Canada2026-06-05
1006India2026-06-08
1007Italy2026-05-25
1008Canada2026-05-21
1009Russia2026-06-08
1010Canada2026-06-09
1011Germany2026-05-26
1012United Kingdom2026-06-11
1013Brazil2026-06-15
1014Germany2026-06-11
1015Brazil2026-06-02
1016Japan2026-06-08
1017Italy2026-05-31
1018France2026-06-11
1019Spain2026-06-01
1020Russia2026-05-26
1021Germany2026-06-08
1022Russia2026-06-09
1023Brazil2026-06-01
1024Russia2026-05-29
1025Russia2026-05-20
1026Italy2026-06-03
1027Canada2026-05-30
1028Japan2026-06-12
1029United Kingdom2026-06-17
1030Japan2026-05-27
1031Russia2026-06-04
1032France2026-05-24
1033Germany2026-05-25
1034Germany2026-05-29
1035Australia2026-06-04
1036Brazil2026-05-20
1037Canada2026-06-06
1038Russia2026-05-24
1039Germany2026-06-16
1040Canada2026-06-12
1041Argentina2026-06-18
1042France2026-05-23
1043Japan2026-06-05
1044Russia2026-06-13
1045Brazil2026-06-08
1046Australia2026-06-14
1047Brazil2026-05-30
1048France2026-05-21
1049Australia2026-06-10

On-Demand Data

NameIdCountryDate
Ricardo Gaucho1000Germany2026-06-04
Deepesh Chui1001Argentina2026-06-12
Darci Poquette1002Italy2026-05-27
Emily Whobrey1003Spain2026-06-11
Jeanfrancois Venere1004Russia2026-06-08
Clifford Rim1005Brazil2026-05-21
Darci Poquette1006Canada2026-06-18
Salvatore Stockham1007France2026-05-22
Juan Wieser1008India2026-05-25
Arvin Albares1009France2026-05-24
David Darakjy1010Spain2026-05-21
Tony Foller1011Spain2026-05-21
Aika Inouye1012India2026-05-25
Leon Oldroyd1013Germany2026-06-13
Jeanfrancois Venere1014Germany2026-06-03
Morrow Ruta1015Canada2026-05-23
Kaitlin Ostrosky1016Japan2026-06-15
Nicolas Iturbide1017Russia2026-06-06
Antonio Caudy1018Italy2026-06-09
Misaki Royster1019India2026-06-08
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jennifer AmigonCanadaOnyama Limba NEGOTIATION
Morrow RutaSpainAnna Fali PROPOSAL
Kaitlin OstroskyBrazilAmy Elsner NEGOTIATION
Francesco ShinkoGermanyIvan Magalhaes RENEWAL
Costa DilliardItalyXuxue Feng NEW
Claire TollnerAustraliaBernardo Dominic QUALIFIED
Izzy GarufiAustraliaBernardo Dominic UNQUALIFIED
Maria MarrierCanadaAsiya Javayant NEGOTIATION
Smith GlickAustraliaBernardo Dominic RENEWAL
Octavia MaletSpainBernardo Dominic UNQUALIFIED
Jones VocelkaGermanyAsiya Javayant RENEWAL
Antonio CaudyAustraliaAsiya Javayant PROPOSAL
Ivar PaprockiIndiaIvan Magalhaes PROPOSAL
Francesco ShinkoItalyXuxue Feng UNQUALIFIED
Maisha RulapaughAustraliaBernardo Dominic QUALIFIED
David DarakjyItalyElwin Sharvill RENEWAL
Adams MorascaUnited KingdomAnna Fali QUALIFIED
Leja CaldareraItalyOnyama Limba UNQUALIFIED
Stacey MacleadItalyAsiya Javayant QUALIFIED
Stacey MacleadFranceIvan Magalhaes RENEWAL
Jones VocelkaArgentinaBernardo Dominic PROPOSAL
Nicolas IturbideUnited KingdomAmy Elsner QUALIFIED
Ricardo GauchoGermanyOnyama Limba NEGOTIATION
Maria MarrierCanadaAnna Fali RENEWAL
Rodrigues CampainIndiaIvan Magalhaes UNQUALIFIED
James ButtUnited KingdomBernardo Dominic PROPOSAL
Leon OldroydCanadaIvan Magalhaes RENEWAL
Salvatore StockhamCanadaElwin Sharvill QUALIFIED
Jennifer AmigonItalyAmy Elsner UNQUALIFIED
Cody SaylorsIndiaElwin Sharvill PROPOSAL
Antonio CaudyAustraliaIoni Bowcher QUALIFIED
Deepesh ChuiJapanXuxue Feng PROPOSAL
Stacey MacleadRussiaIvan Magalhaes NEW
Ricardo GauchoFranceStephen Shaw UNQUALIFIED
Emily WhobreyCanadaAsiya Javayant PROPOSAL
Jefferson SchemmerRussiaXuxue Feng RENEWAL
Izzy GarufiItalyAnna Fali PROPOSAL
Tony FollerBrazilIoni Bowcher RENEWAL
Alejandro PerinFranceIvan Magalhaes UNQUALIFIED
Aika InouyeGermanyAnna Fali 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>