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
Costa DilliardCanadaStephen Shaw QUALIFIED
Emily WhobreyJapanXuxue Feng UNQUALIFIED
Ivar PaprockiGermanyIvan Magalhaes RENEWAL
Alejandro PerinSpainIoni Bowcher NEGOTIATION
Maisha RulapaughRussiaAsiya Javayant QUALIFIED
Mayumi KolmetzRussiaIoni Bowcher RENEWAL
Juan WieserJapanIvan Magalhaes NEW
David DarakjyGermanyElwin Sharvill QUALIFIED
Alejandro PerinArgentinaIvan Magalhaes RENEWAL
Leja CaldareraGermanyAnna Fali UNQUALIFIED
James ButtSpainAsiya Javayant UNQUALIFIED
Leja CaldareraGermanyIoni Bowcher PROPOSAL
Leon OldroydUnited KingdomAnna Fali PROPOSAL
Antonio CaudyBrazilIvan Magalhaes UNQUALIFIED
Greenwood BologniaGermanyAnna Fali UNQUALIFIED
Johnson SergiFranceBernardo Dominic QUALIFIED
Isabel BowleyBrazilAmy Elsner NEW
Aruna FigeroaRussiaAnna Fali PROPOSAL
Ivar PaprockiItalyElwin Sharvill RENEWAL
Tony FollerAustraliaElwin Sharvill PROPOSAL
Munro FerenczJapanStephen Shaw QUALIFIED
Faith GillianBrazilBernardo Dominic NEGOTIATION
Morrow RutaGermanyOnyama Limba NEGOTIATION
Octavia MaletSpainIoni Bowcher QUALIFIED
Jeanfrancois VenereBrazilStephen Shaw PROPOSAL
Aditya KuskoBrazilAmy Elsner NEGOTIATION
Misaki RoysterBrazilAsiya Javayant NEGOTIATION
Emily WhobreyArgentinaIoni Bowcher NEGOTIATION
Sinclair WaycottAustraliaStephen Shaw QUALIFIED
Adams MorascaArgentinaBernardo Dominic QUALIFIED
Mayumi KolmetzGermanyIoni Bowcher PROPOSAL
Julie StensethGermanyIvan Magalhaes UNQUALIFIED
Octavia MaletBrazilIoni Bowcher UNQUALIFIED
Jennifer AmigonAustraliaXuxue Feng QUALIFIED
Alejandro PerinBrazilOnyama Limba NEW
Murillo MaletArgentinaBernardo Dominic NEW
Octavia MaletUnited KingdomXuxue Feng NEGOTIATION
Smith GlickCanadaOnyama Limba PROPOSAL
Ashley DoeSpainIvan Magalhaes RENEWAL
Kadeem FlosiGermanyIoni Bowcher RENEWAL
Antonio CaudyCanadaAmy Elsner NEGOTIATION
Maria MarrierRussiaAsiya Javayant RENEWAL
Stacey MacleadGermanyIoni Bowcher QUALIFIED
Sinclair WaycottSpainAsiya Javayant RENEWAL
Cody SaylorsBrazilAnna Fali UNQUALIFIED
Claire TollnerUnited KingdomElwin Sharvill NEW
Deepesh ChuiBrazilElwin Sharvill RENEWAL
Francesco ShinkoRussiaOnyama Limba RENEWAL
Sinclair WaycottIndiaAsiya Javayant NEGOTIATION
Jennifer AmigonAustraliaOnyama Limba NEW
Horizontal
NameCountryRepresentativeStatus
Aditya KuskoBrazilXuxue Feng NEGOTIATION
Rodrigues CampainUnited KingdomElwin Sharvill RENEWAL
Juan WieserRussiaAmy Elsner QUALIFIED
Greenwood BologniaGermanyXuxue Feng PROPOSAL
Smith GlickFranceIoni Bowcher RENEWAL
Maisha RulapaughFranceIoni Bowcher NEGOTIATION
Ivar PaprockiFranceAnna Fali QUALIFIED
Aditya KuskoBrazilXuxue Feng NEW
Deepesh ChuiIndiaAsiya Javayant RENEWAL
Juan WieserItalyStephen Shaw NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Isabel BowleyFrance2026-05-13Dorl, James J Esq RENEWAL50Anna Fali
1001Maria MarrierUnited Kingdom2026-05-12King, Christopher A Esq NEGOTIATION72Onyama Limba
1002Juan WieserArgentina2026-05-21Rousseaux, Michael Esq QUALIFIED14Anna Fali
1003Leja CaldareraAustralia2026-05-05Feiner Bros NEW63Ioni Bowcher
1004David DarakjyIndia2026-05-10Dorl, James J Esq RENEWAL24Stephen Shaw
1005Silvio SlusarskiJapan2026-05-23Printing Dimensions PROPOSAL40Onyama Limba
1006Stacey MacleadFrance2026-05-13Benton, John B Jr PROPOSAL87Anna Fali
1007Jones VocelkaBrazil2026-05-12Rangoni Of Florence UNQUALIFIED58Bernardo Dominic
1008Morrow RutaAustralia2026-05-09Rousseaux, Michael Esq RENEWAL65Bernardo Dominic
1009Julie StensethUnited Kingdom2026-05-09King, Christopher A Esq NEGOTIATION6Ivan Magalhaes
1010James ButtUnited Kingdom2026-05-22Dorl, James J Esq NEGOTIATION1Onyama Limba
1011James ButtGermany2026-04-27Commercial Press UNQUALIFIED73Anna Fali
1012Isabel BowleyBrazil2026-05-22Truhlar And Truhlar Attys PROPOSAL39Onyama Limba
1013Mayumi KolmetzRussia2026-05-07Chanay, Jeffrey A Esq PROPOSAL44Asiya Javayant
1014Izzy GarufiItaly2026-05-15Chemel, James L Cpa RENEWAL19Stephen Shaw
1015Darci PoquetteRussia2026-05-20Chemel, James L Cpa RENEWAL81Amy Elsner
1016David DarakjyBrazil2026-05-21King, Christopher A Esq RENEWAL87Onyama Limba
1017Julie StensethArgentina2026-05-08Truhlar And Truhlar Attys PROPOSAL66Bernardo Dominic
1018Ricardo GauchoGermany2026-05-03Commercial Press PROPOSAL43Bernardo Dominic
1019Isabel BowleySpain2026-05-17Chemel, James L Cpa PROPOSAL30Asiya Javayant
1020Costa DilliardIndia2026-05-11Morlong Associates UNQUALIFIED87Xuxue Feng
1021Smith GlickFrance2026-05-07Commercial Press PROPOSAL20Ivan Magalhaes
1022Sinclair WaycottGermany2026-05-18Printing Dimensions UNQUALIFIED18Onyama Limba
1023Emily WhobreySpain2026-05-24Feiner Bros NEW32Ioni Bowcher
1024Julie StensethJapan2026-05-05King, Christopher A Esq NEGOTIATION75Asiya Javayant
1025Ricardo GauchoCanada2026-05-02Truhlar And Truhlar Attys NEW16Onyama Limba
1026Kaitlin OstroskyIndia2026-05-10Chemel, James L Cpa UNQUALIFIED1Bernardo Dominic
1027Greenwood BologniaCanada2026-05-05Morlong Associates PROPOSAL43Stephen Shaw
1028Greenwood BologniaGermany2026-05-19Feiner Bros RENEWAL97Asiya Javayant
1029Sinclair WaycottUnited Kingdom2026-05-13Dorl, James J Esq UNQUALIFIED21Bernardo Dominic
1030Jeanfrancois VenereArgentina2026-05-05Chanay, Jeffrey A Esq QUALIFIED99Amy Elsner
1031Chavez BriddickGermany2026-05-13Feiner Bros NEW47Xuxue Feng
1032Stacey MacleadUnited Kingdom2026-05-19Buckley Miller Wright UNQUALIFIED26Onyama Limba
1033Deepesh ChuiItaly2026-05-16Morlong Associates NEW42Ioni Bowcher
1034Adams MorascaArgentina2026-05-15King, Christopher A Esq UNQUALIFIED29Xuxue Feng
1035Jones VocelkaArgentina2026-05-20Benton, John B Jr QUALIFIED50Amy Elsner
1036Nicolas IturbideRussia2026-05-15Chemel, James L Cpa PROPOSAL92Asiya Javayant
1037Morrow RutaFrance2026-05-06Feiner Bros UNQUALIFIED47Ioni Bowcher
1038Leja CaldareraItaly2026-04-27Morlong Associates UNQUALIFIED30Onyama Limba
1039Aika InouyeIndia2026-05-04Rangoni Of Florence PROPOSAL87Asiya Javayant
1040Faith GillianIndia2026-05-18Commercial Press NEW70Ivan Magalhaes
1041Ricardo GauchoJapan2026-04-29Buckley Miller Wright UNQUALIFIED63Elwin Sharvill
1042Claire TollnerBrazil2026-04-26Truhlar And Truhlar Attys UNQUALIFIED51Ivan Magalhaes
1043Munro FerenczUnited Kingdom2026-05-13Feiner Bros NEW46Asiya Javayant
1044Silvio SlusarskiSpain2026-05-04King, Christopher A Esq NEW61Elwin Sharvill
1045Jefferson SchemmerSpain2026-05-05King, Christopher A Esq RENEWAL5Asiya Javayant
1046Tony FollerBrazil2026-05-04Truhlar And Truhlar Attys PROPOSAL69Xuxue Feng
1047James ButtGermany2026-05-17Printing Dimensions QUALIFIED27Ivan Magalhaes
1048Tony FollerJapan2026-05-18Rangoni Of Florence QUALIFIED33Bernardo Dominic
1049Faith GillianGermany2026-05-05King, Christopher A Esq QUALIFIED35Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Costa DilliardUnited KingdomBernardo Dominic NEW
Clifford RimGermanyElwin Sharvill UNQUALIFIED
Stacey MacleadAustraliaAmy Elsner NEW
Murillo MaletBrazilXuxue Feng PROPOSAL
Smith GlickBrazilXuxue Feng NEW
Morrow RutaItalyOnyama Limba NEW
Izzy GarufiSpainXuxue Feng UNQUALIFIED
Mayumi KolmetzItalyIvan Magalhaes QUALIFIED
Mayumi KolmetzRussiaXuxue Feng NEGOTIATION
Chavez BriddickUnited KingdomAmy Elsner NEW
Kadeem FlosiBrazilIoni Bowcher RENEWAL
Silvio SlusarskiRussiaStephen Shaw RENEWAL
Deepesh ChuiIndiaBernardo Dominic NEW
Claire TollnerArgentinaStephen Shaw PROPOSAL
Misaki RoysterSpainAnna Fali NEGOTIATION
Julie StensethJapanIoni Bowcher QUALIFIED
Adams MorascaBrazilStephen Shaw NEW
Faith GillianAustraliaElwin Sharvill PROPOSAL
Jefferson SchemmerBrazilXuxue Feng NEGOTIATION
Rodrigues CampainRussiaAmy Elsner RENEWAL
Maria MarrierGermanyAnna Fali NEW
Stacey MacleadCanadaIvan Magalhaes QUALIFIED
Morrow RutaBrazilElwin Sharvill NEW
Maria MarrierSpainAmy Elsner QUALIFIED
Salvatore StockhamItalyOnyama Limba NEGOTIATION
James ButtGermanyElwin Sharvill PROPOSAL
Octavia MaletFranceStephen Shaw NEW
Misaki RoysterUnited KingdomOnyama Limba PROPOSAL
Julie StensethIndiaIoni Bowcher NEW
Maisha RulapaughUnited KingdomAmy Elsner UNQUALIFIED
Tony FollerGermanyElwin Sharvill UNQUALIFIED
Leja CaldareraSpainStephen Shaw RENEWAL
Nicolas IturbideFranceAmy Elsner NEW
Smith GlickSpainStephen Shaw QUALIFIED
Jefferson SchemmerFranceIvan Magalhaes NEW
Cody SaylorsGermanyIvan Magalhaes NEGOTIATION
Silvio SlusarskiBrazilAsiya Javayant NEGOTIATION
Munro FerenczAustraliaIoni Bowcher PROPOSAL
Misaki RoysterArgentinaBernardo Dominic NEGOTIATION
Smith GlickArgentinaAmy Elsner NEGOTIATION
Mayumi KolmetzCanadaStephen Shaw NEGOTIATION
Murillo MaletGermanyAmy Elsner PROPOSAL
Isabel BowleyUnited KingdomIoni Bowcher RENEWAL
Antonio CaudyIndiaElwin Sharvill UNQUALIFIED
Munro FerenczArgentinaIoni Bowcher NEGOTIATION
Jennifer AmigonSpainAmy Elsner NEW
Misaki RoysterItalyXuxue Feng NEGOTIATION
Ricardo GauchoItalyStephen Shaw UNQUALIFIED
Aika InouyeBrazilStephen Shaw QUALIFIED
Murillo MaletUnited KingdomAnna Fali UNQUALIFIED
Frozen Columns
Name
Octavia Malet
Rodrigues Campain
Maria Marrier
Sinclair Waycott
Aruna Figeroa
Cody Saylors
Alejandro Perin
Ricardo Gaucho
Emily Whobrey
Adams Morasca
Darci Poquette
Aditya Kusko
Cody Saylors
Jennifer Amigon
Jefferson Schemmer
Nicolas Iturbide
Mayumi Kolmetz
Salvatore Stockham
Emily Whobrey
Tony Foller
Antonio Caudy
Misaki Royster
Greenwood Bolognia
Faith Gillian
Leon Oldroyd
Johnson Sergi
James Butt
Greenwood Bolognia
Arvin Albares
Wickens Nestle
Emily Whobrey
Cody Saylors
Izzy Garufi
Wickens Nestle
Rodrigues Campain
Salvatore Stockham
James Butt
Aruna Figeroa
Octavia Malet
Emily Whobrey
Salvatore Stockham
Kadeem Flosi
Kadeem Flosi
Jones Vocelka
Leon Oldroyd
Misaki Royster
Silvio Slusarski
Nicolas Iturbide
Stacey Maclead
Antonio Caudy
IdCountryDate
1000United Kingdom2026-05-12
1001Argentina2026-05-21
1002Canada2026-05-15
1003India2026-05-18
1004Italy2026-04-29
1005Japan2026-05-19
1006Spain2026-05-04
1007France2026-05-01
1008India2026-05-07
1009Italy2026-05-05
1010Japan2026-05-09
1011Brazil2026-05-24
1012Australia2026-05-20
1013Germany2026-04-26
1014Canada2026-04-28
1015France2026-05-14
1016Japan2026-04-30
1017Argentina2026-05-11
1018India2026-05-23
1019Germany2026-04-27
1020Canada2026-05-01
1021Argentina2026-04-27
1022Spain2026-05-20
1023Canada2026-05-02
1024Spain2026-05-11
1025Argentina2026-05-07
1026Russia2026-05-19
1027France2026-05-22
1028Russia2026-05-22
1029Germany2026-05-10
1030Argentina2026-05-02
1031Brazil2026-05-23
1032Japan2026-05-14
1033Spain2026-05-24
1034Italy2026-05-12
1035France2026-04-29
1036Italy2026-05-20
1037Canada2026-04-28
1038Argentina2026-05-03
1039Spain2026-05-03
1040Canada2026-04-26
1041France2026-05-09
1042Argentina2026-04-26
1043France2026-04-26
1044Argentina2026-05-09
1045France2026-05-12
1046Australia2026-05-19
1047Canada2026-05-02
1048Canada2026-05-17
1049Brazil2026-05-03

On-Demand Data

NameIdCountryDate
Faith Gillian1000Japan2026-04-27
Silvio Slusarski1001Canada2026-05-17
Alejandro Perin1002Australia2026-05-09
Maisha Rulapaugh1003Italy2026-05-19
David Darakjy1004Argentina2026-05-05
Alejandro Perin1005Australia2026-04-30
Sinclair Waycott1006Spain2026-05-21
Jones Vocelka1007Russia2026-05-06
Misaki Royster1008India2026-05-24
James Butt1009Spain2026-05-20
Smith Glick1010United Kingdom2026-05-21
Mujtaba Nicka1011Argentina2026-05-12
Clifford Rim1012Argentina2026-05-19
Maisha Rulapaugh1013Brazil2026-05-03
Ricardo Gaucho1014Brazil2026-05-03
Chavez Briddick1015Spain2026-05-10
Chavez Briddick1016Russia2026-05-23
Munro Ferencz1017Canada2026-05-17
Sinclair Waycott1018Italy2026-05-06
Jones Vocelka1019Italy2026-05-15
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Emily WhobreySpainBernardo Dominic QUALIFIED
Leon OldroydArgentinaElwin Sharvill NEW
Antonio CaudyGermanyBernardo Dominic NEW
Ricardo GauchoIndiaIoni Bowcher QUALIFIED
Leon OldroydFranceXuxue Feng RENEWAL
Octavia MaletJapanBernardo Dominic NEGOTIATION
Aika InouyeCanadaStephen Shaw UNQUALIFIED
Maria MarrierAustraliaElwin Sharvill UNQUALIFIED
Munro FerenczSpainAnna Fali UNQUALIFIED
Wickens NestleAustraliaAmy Elsner RENEWAL
Francesco ShinkoUnited KingdomStephen Shaw PROPOSAL
Tony FollerIndiaAsiya Javayant NEW
Stacey MacleadGermanyElwin Sharvill NEGOTIATION
Costa DilliardUnited KingdomIvan Magalhaes QUALIFIED
Costa DilliardJapanElwin Sharvill NEGOTIATION
Jones VocelkaBrazilAnna Fali RENEWAL
Jennifer AmigonArgentinaXuxue Feng UNQUALIFIED
Antonio CaudyIndiaOnyama Limba RENEWAL
Antonio CaudyAustraliaOnyama Limba NEGOTIATION
Juan WieserSpainOnyama Limba RENEWAL
Darci PoquetteBrazilIvan Magalhaes NEW
Aditya KuskoBrazilIvan Magalhaes NEGOTIATION
Arvin AlbaresBrazilElwin Sharvill RENEWAL
Cody SaylorsRussiaOnyama Limba UNQUALIFIED
Salvatore StockhamItalyAsiya Javayant NEGOTIATION
Adams MorascaArgentinaBernardo Dominic NEW
Leja CaldareraRussiaAnna Fali NEW
Morrow RutaAustraliaXuxue Feng NEGOTIATION
Misaki RoysterIndiaBernardo Dominic UNQUALIFIED
Jones VocelkaBrazilBernardo Dominic PROPOSAL
Adams MorascaBrazilAmy Elsner NEW
Jennifer AmigonArgentinaAmy Elsner NEGOTIATION
Izzy GarufiJapanIoni Bowcher NEGOTIATION
Wickens NestleJapanElwin Sharvill PROPOSAL
Chavez BriddickRussiaAsiya Javayant PROPOSAL
Faith GillianItalyBernardo Dominic NEGOTIATION
Aruna FigeroaItalyStephen Shaw NEW
Jefferson SchemmerCanadaAsiya Javayant NEW
Francesco ShinkoUnited KingdomIvan Magalhaes UNQUALIFIED
Morrow RutaBrazilIvan 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>