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
Juan WieserCanadaXuxue Feng NEW
Francesco ShinkoJapanAmy Elsner RENEWAL
Greenwood BologniaBrazilStephen Shaw UNQUALIFIED
Greenwood BologniaIndiaElwin Sharvill UNQUALIFIED
Maria MarrierGermanyIvan Magalhaes PROPOSAL
Munro FerenczFranceBernardo Dominic QUALIFIED
Aruna FigeroaSpainElwin Sharvill NEGOTIATION
Ricardo GauchoCanadaBernardo Dominic NEW
Aditya KuskoAustraliaElwin Sharvill UNQUALIFIED
Adams MorascaBrazilAnna Fali UNQUALIFIED
Kadeem FlosiArgentinaIoni Bowcher NEGOTIATION
Faith GillianRussiaAmy Elsner RENEWAL
Chavez BriddickBrazilAmy Elsner NEW
Octavia MaletBrazilXuxue Feng QUALIFIED
Antonio CaudyFranceIoni Bowcher QUALIFIED
Munro FerenczArgentinaStephen Shaw NEW
Stacey MacleadItalyAmy Elsner QUALIFIED
Mayumi KolmetzFranceAsiya Javayant NEW
Juan WieserJapanOnyama Limba QUALIFIED
Salvatore StockhamSpainElwin Sharvill NEW
James ButtJapanIvan Magalhaes NEW
Rodrigues CampainSpainXuxue Feng QUALIFIED
Aika InouyeCanadaAnna Fali UNQUALIFIED
Mayumi KolmetzSpainBernardo Dominic NEW
Izzy GarufiAustraliaIvan Magalhaes UNQUALIFIED
Emily WhobreyGermanyOnyama Limba NEGOTIATION
Aruna FigeroaJapanXuxue Feng RENEWAL
Francesco ShinkoSpainAnna Fali NEW
Greenwood BologniaBrazilElwin Sharvill QUALIFIED
Jennifer AmigonArgentinaBernardo Dominic PROPOSAL
Aruna FigeroaItalyBernardo Dominic UNQUALIFIED
Chavez BriddickAustraliaIvan Magalhaes NEW
Salvatore StockhamAustraliaAmy Elsner NEW
Darci PoquetteItalyIvan Magalhaes RENEWAL
Maria MarrierRussiaStephen Shaw UNQUALIFIED
Johnson SergiGermanyStephen Shaw QUALIFIED
Leja CaldareraAustraliaOnyama Limba QUALIFIED
Mayumi KolmetzUnited KingdomIoni Bowcher QUALIFIED
Isabel BowleyCanadaXuxue Feng UNQUALIFIED
Clifford RimGermanyIvan Magalhaes NEW
James ButtFranceStephen Shaw RENEWAL
Juan WieserFranceAmy Elsner NEW
Stacey MacleadGermanyAnna Fali NEGOTIATION
James ButtSpainIoni Bowcher NEGOTIATION
Maria MarrierGermanyStephen Shaw RENEWAL
Jones VocelkaBrazilStephen Shaw RENEWAL
Juan WieserSpainOnyama Limba QUALIFIED
Ivar PaprockiFranceAmy Elsner QUALIFIED
Ivar PaprockiAustraliaElwin Sharvill NEW
Julie StensethCanadaXuxue Feng RENEWAL
Horizontal
NameCountryRepresentativeStatus
Silvio SlusarskiUnited KingdomXuxue Feng NEW
Adams MorascaRussiaAsiya Javayant RENEWAL
Greenwood BologniaIndiaStephen Shaw PROPOSAL
Kadeem FlosiGermanyIvan Magalhaes NEGOTIATION
Francesco ShinkoArgentinaIvan Magalhaes RENEWAL
Deepesh ChuiSpainAnna Fali UNQUALIFIED
Stacey MacleadItalyIvan Magalhaes QUALIFIED
Aika InouyeItalyStephen Shaw NEW
Adams MorascaGermanyIoni Bowcher UNQUALIFIED
Misaki RoysterSpainStephen Shaw NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jones VocelkaBrazil2026-05-23Chanay, Jeffrey A Esq UNQUALIFIED49Stephen Shaw
1001Maisha RulapaughCanada2026-06-11Morlong Associates RENEWAL36Stephen Shaw
1002Francesco ShinkoSpain2026-06-16Printing Dimensions QUALIFIED56Xuxue Feng
1003Octavia MaletItaly2026-05-27Commercial Press QUALIFIED37Ivan Magalhaes
1004Francesco ShinkoJapan2026-05-23Dorl, James J Esq NEGOTIATION16Bernardo Dominic
1005Kadeem FlosiAustralia2026-06-08King, Christopher A Esq PROPOSAL55Anna Fali
1006Jennifer AmigonGermany2026-06-01Dorl, James J Esq QUALIFIED80Onyama Limba
1007Jeanfrancois VenereSpain2026-06-12Truhlar And Truhlar Attys NEW36Ivan Magalhaes
1008Jeanfrancois VenereBrazil2026-06-08Chapman, Ross E Esq NEW46Stephen Shaw
1009Darci PoquetteArgentina2026-06-17Benton, John B Jr RENEWAL49Asiya Javayant
1010Maisha RulapaughCanada2026-06-02Morlong Associates NEW57Ivan Magalhaes
1011Antonio CaudyIndia2026-06-10Chapman, Ross E Esq NEW77Onyama Limba
1012Faith GillianSpain2026-05-20Printing Dimensions NEW80Ioni Bowcher
1013Isabel BowleyIndia2026-06-12Chanay, Jeffrey A Esq UNQUALIFIED79Ivan Magalhaes
1014Sinclair WaycottArgentina2026-06-08Rousseaux, Michael Esq PROPOSAL57Ioni Bowcher
1015Emily WhobreyAustralia2026-06-15Dorl, James J Esq UNQUALIFIED31Anna Fali
1016Antonio CaudyGermany2026-06-03Benton, John B Jr NEGOTIATION19Stephen Shaw
1017Leja CaldareraFrance2026-06-10Feiner Bros RENEWAL10Stephen Shaw
1018Kaitlin OstroskyRussia2026-06-15Chapman, Ross E Esq QUALIFIED74Xuxue Feng
1019Stacey MacleadAustralia2026-06-08Feltz Printing Service PROPOSAL15Ioni Bowcher
1020Emily WhobreyCanada2026-06-14Rangoni Of Florence PROPOSAL59Ivan Magalhaes
1021Ashley DoeFrance2026-06-06Rousseaux, Michael Esq PROPOSAL68Ioni Bowcher
1022Adams MorascaSpain2026-06-11Commercial Press QUALIFIED64Anna Fali
1023David DarakjyUnited Kingdom2026-06-01Chemel, James L Cpa NEGOTIATION98Amy Elsner
1024Mayumi KolmetzItaly2026-05-31Dorl, James J Esq NEW55Anna Fali
1025Mayumi KolmetzJapan2026-06-09Rousseaux, Michael Esq NEW45Xuxue Feng
1026Julie StensethSpain2026-06-06King, Christopher A Esq QUALIFIED96Ivan Magalhaes
1027Izzy GarufiSpain2026-06-10Rangoni Of Florence NEGOTIATION35Elwin Sharvill
1028Alejandro PerinAustralia2026-05-21Chapman, Ross E Esq RENEWAL26Stephen Shaw
1029Julie StensethAustralia2026-05-29Morlong Associates PROPOSAL57Amy Elsner
1030Julie StensethBrazil2026-06-11Chapman, Ross E Esq NEW6Bernardo Dominic
1031Antonio CaudyAustralia2026-06-08Chanay, Jeffrey A Esq NEGOTIATION54Elwin Sharvill
1032Chavez BriddickCanada2026-06-17Dorl, James J Esq RENEWAL4Xuxue Feng
1033Maisha RulapaughRussia2026-05-23Morlong Associates PROPOSAL5Elwin Sharvill
1034Darci PoquetteArgentina2026-06-15Feiner Bros NEW38Ioni Bowcher
1035Nicolas IturbideGermany2026-06-17Buckley Miller Wright RENEWAL84Xuxue Feng
1036Smith GlickRussia2026-05-27Truhlar And Truhlar Attys RENEWAL10Onyama Limba
1037Morrow RutaAustralia2026-05-24Printing Dimensions UNQUALIFIED83Onyama Limba
1038Johnson SergiUnited Kingdom2026-06-14Feltz Printing Service NEGOTIATION87Stephen Shaw
1039Isabel BowleyAustralia2026-05-26Chemel, James L Cpa UNQUALIFIED85Ioni Bowcher
1040Kadeem FlosiIndia2026-06-10Feiner Bros PROPOSAL51Anna Fali
1041Johnson SergiGermany2026-06-09Commercial Press RENEWAL68Asiya Javayant
1042Clifford RimIndia2026-05-20Benton, John B Jr UNQUALIFIED3Onyama Limba
1043Wickens NestleIndia2026-06-06Rousseaux, Michael Esq QUALIFIED8Bernardo Dominic
1044Sinclair WaycottUnited Kingdom2026-05-30Chapman, Ross E Esq QUALIFIED92Amy Elsner
1045Aruna FigeroaCanada2026-06-01Morlong Associates PROPOSAL87Ivan Magalhaes
1046Kadeem FlosiIndia2026-06-07Chemel, James L Cpa NEGOTIATION79Asiya Javayant
1047Octavia MaletJapan2026-06-08Benton, John B Jr NEW88Ivan Magalhaes
1048Mayumi KolmetzSpain2026-05-26Commercial Press QUALIFIED54Stephen Shaw
1049Isabel BowleyFrance2026-06-12Printing Dimensions UNQUALIFIED63Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Morrow RutaUnited KingdomAsiya Javayant NEW
Julie StensethUnited KingdomIvan Magalhaes NEW
Nicolas IturbideCanadaStephen Shaw RENEWAL
Maria MarrierGermanyBernardo Dominic QUALIFIED
Arvin AlbaresSpainOnyama Limba NEGOTIATION
Leon OldroydRussiaOnyama Limba NEW
Tony FollerBrazilAsiya Javayant QUALIFIED
Jeanfrancois VenereRussiaOnyama Limba NEGOTIATION
Misaki RoysterUnited KingdomIvan Magalhaes RENEWAL
Silvio SlusarskiAustraliaIoni Bowcher UNQUALIFIED
Darci PoquetteBrazilXuxue Feng UNQUALIFIED
Cody SaylorsAustraliaAnna Fali PROPOSAL
Julie StensethIndiaAsiya Javayant NEGOTIATION
Costa DilliardArgentinaAsiya Javayant RENEWAL
Juan WieserArgentinaIvan Magalhaes QUALIFIED
Leja CaldareraRussiaXuxue Feng UNQUALIFIED
Emily WhobreyGermanyOnyama Limba NEW
Jennifer AmigonBrazilStephen Shaw RENEWAL
Leon OldroydItalyElwin Sharvill UNQUALIFIED
Juan WieserIndiaAmy Elsner UNQUALIFIED
Greenwood BologniaFranceAnna Fali RENEWAL
Cody SaylorsArgentinaBernardo Dominic RENEWAL
Aruna FigeroaBrazilAnna Fali NEW
Misaki RoysterGermanyXuxue Feng RENEWAL
Aruna FigeroaBrazilElwin Sharvill RENEWAL
Deepesh ChuiIndiaAnna Fali UNQUALIFIED
Francesco ShinkoFranceStephen Shaw QUALIFIED
Cody SaylorsArgentinaAnna Fali NEW
Aruna FigeroaBrazilIvan Magalhaes RENEWAL
Kaitlin OstroskyFranceAsiya Javayant PROPOSAL
Aika InouyeIndiaStephen Shaw PROPOSAL
Munro FerenczArgentinaOnyama Limba UNQUALIFIED
Cody SaylorsFranceElwin Sharvill QUALIFIED
Ivar PaprockiJapanIvan Magalhaes NEGOTIATION
Aika InouyeUnited KingdomElwin Sharvill PROPOSAL
Faith GillianGermanyIoni Bowcher NEW
Jefferson SchemmerCanadaIoni Bowcher NEGOTIATION
Smith GlickJapanStephen Shaw NEGOTIATION
Maisha RulapaughBrazilBernardo Dominic RENEWAL
Kadeem FlosiAustraliaAmy Elsner NEGOTIATION
Jefferson SchemmerCanadaAsiya Javayant NEGOTIATION
David DarakjyFranceOnyama Limba QUALIFIED
Julie StensethJapanIoni Bowcher UNQUALIFIED
Jefferson SchemmerRussiaAsiya Javayant NEW
Aruna FigeroaArgentinaAmy Elsner NEGOTIATION
Juan WieserBrazilIvan Magalhaes RENEWAL
Morrow RutaRussiaStephen Shaw UNQUALIFIED
Wickens NestleCanadaOnyama Limba PROPOSAL
Kaitlin OstroskyFranceBernardo Dominic RENEWAL
Jones VocelkaUnited KingdomAnna Fali NEGOTIATION
Frozen Columns
Name
Faith Gillian
Faith Gillian
Kaitlin Ostrosky
Isabel Bowley
Julie Stenseth
Jones Vocelka
Wickens Nestle
Morrow Ruta
Smith Glick
Aditya Kusko
Morrow Ruta
Arvin Albares
Salvatore Stockham
Faith Gillian
Stacey Maclead
David Darakjy
David Darakjy
Stacey Maclead
Jefferson Schemmer
Tony Foller
Jeanfrancois Venere
Silvio Slusarski
Wickens Nestle
Johnson Sergi
Aruna Figeroa
Sinclair Waycott
Johnson Sergi
Aditya Kusko
Cody Saylors
Izzy Garufi
Antonio Caudy
Alejandro Perin
Leja Caldarera
Jones Vocelka
Ashley Doe
Aika Inouye
Kadeem Flosi
Murillo Malet
Leja Caldarera
Deepesh Chui
Kadeem Flosi
Smith Glick
Emily Whobrey
Adams Morasca
Emily Whobrey
Mayumi Kolmetz
Jeanfrancois Venere
Alejandro Perin
Smith Glick
Deepesh Chui
IdCountryDate
1000Russia2026-05-29
1001Brazil2026-06-10
1002Canada2026-06-08
1003Brazil2026-05-25
1004Germany2026-06-06
1005Germany2026-05-25
1006Brazil2026-05-22
1007Russia2026-06-08
1008Brazil2026-05-19
1009Argentina2026-05-21
1010Italy2026-06-16
1011Argentina2026-05-19
1012Germany2026-05-24
1013United Kingdom2026-06-04
1014Russia2026-06-17
1015Spain2026-05-21
1016Italy2026-06-03
1017India2026-05-26
1018Brazil2026-05-23
1019Australia2026-06-07
1020India2026-05-26
1021Brazil2026-06-07
1022United Kingdom2026-05-28
1023Germany2026-06-14
1024Japan2026-06-10
1025Brazil2026-06-08
1026Australia2026-06-01
1027Brazil2026-05-29
1028India2026-06-15
1029Brazil2026-06-12
1030Spain2026-05-20
1031Germany2026-06-06
1032Spain2026-06-02
1033France2026-05-23
1034Argentina2026-05-29
1035Canada2026-05-25
1036Russia2026-06-09
1037Japan2026-06-12
1038Canada2026-05-22
1039Canada2026-05-28
1040India2026-06-12
1041Canada2026-06-05
1042United Kingdom2026-05-29
1043Spain2026-06-05
1044Brazil2026-06-05
1045Japan2026-06-16
1046France2026-06-02
1047Brazil2026-06-14
1048Germany2026-05-22
1049Japan2026-06-01

On-Demand Data

NameIdCountryDate
Wickens Nestle1000Australia2026-06-01
Kadeem Flosi1001Spain2026-06-12
Aditya Kusko1002France2026-05-20
James Butt1003United Kingdom2026-05-19
Julie Stenseth1004Canada2026-05-28
Arvin Albares1005Japan2026-05-20
Juan Wieser1006Argentina2026-05-27
Ricardo Gaucho1007Germany2026-05-30
Silvio Slusarski1008Argentina2026-05-26
Ivar Paprocki1009Spain2026-05-28
Ricardo Gaucho1010Canada2026-05-23
Aditya Kusko1011France2026-06-09
Izzy Garufi1012Germany2026-05-20
Antonio Caudy1013United Kingdom2026-06-12
Aditya Kusko1014United Kingdom2026-06-13
Morrow Ruta1015Brazil2026-06-13
Stacey Maclead1016Canada2026-06-02
Costa Dilliard1017Germany2026-05-26
Arvin Albares1018Argentina2026-05-29
Ivar Paprocki1019Brazil2026-06-12
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Isabel BowleyFranceIoni Bowcher NEGOTIATION
Clifford RimJapanAnna Fali NEW
James ButtFranceStephen Shaw UNQUALIFIED
Nicolas IturbideIndiaBernardo Dominic NEW
Stacey MacleadItalyAsiya Javayant QUALIFIED
Jefferson SchemmerGermanyOnyama Limba PROPOSAL
Deepesh ChuiRussiaIvan Magalhaes PROPOSAL
Ivar PaprockiIndiaAnna Fali RENEWAL
Tony FollerUnited KingdomXuxue Feng UNQUALIFIED
Aruna FigeroaJapanOnyama Limba PROPOSAL
David DarakjyRussiaElwin Sharvill PROPOSAL
Tony FollerGermanyElwin Sharvill PROPOSAL
Deepesh ChuiBrazilBernardo Dominic QUALIFIED
Johnson SergiBrazilBernardo Dominic QUALIFIED
Emily WhobreyUnited KingdomAnna Fali NEGOTIATION
Munro FerenczFranceStephen Shaw UNQUALIFIED
Salvatore StockhamSpainAsiya Javayant UNQUALIFIED
Rodrigues CampainArgentinaIoni Bowcher NEW
Chavez BriddickFranceStephen Shaw UNQUALIFIED
Kadeem FlosiUnited KingdomBernardo Dominic NEW
Greenwood BologniaIndiaIvan Magalhaes NEW
Deepesh ChuiGermanyIvan Magalhaes NEW
Kaitlin OstroskyBrazilStephen Shaw UNQUALIFIED
Francesco ShinkoItalyXuxue Feng PROPOSAL
Aditya KuskoSpainAmy Elsner NEGOTIATION
Faith GillianFranceStephen Shaw NEW
Kaitlin OstroskyBrazilAsiya Javayant NEW
Leon OldroydBrazilAnna Fali NEGOTIATION
James ButtGermanyIvan Magalhaes NEW
Maisha RulapaughGermanyElwin Sharvill QUALIFIED
Jones VocelkaAustraliaIoni Bowcher RENEWAL
Nicolas IturbideGermanyAmy Elsner NEW
Aruna FigeroaSpainAnna Fali NEW
Octavia MaletAustraliaAnna Fali NEW
Aditya KuskoAustraliaIvan Magalhaes PROPOSAL
James ButtUnited KingdomOnyama Limba RENEWAL
Costa DilliardUnited KingdomOnyama Limba NEGOTIATION
Francesco ShinkoIndiaIvan Magalhaes RENEWAL
Rodrigues CampainCanadaElwin Sharvill QUALIFIED
James ButtFranceOnyama Limba QUALIFIED

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