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
Leon OldroydFranceBernardo Dominic RENEWAL
Arvin AlbaresCanadaOnyama Limba NEW
James ButtAustraliaOnyama Limba QUALIFIED
Octavia MaletSpainAmy Elsner NEW
Cody SaylorsRussiaIoni Bowcher NEGOTIATION
Leon OldroydRussiaAnna Fali NEW
Aditya KuskoIndiaAnna Fali QUALIFIED
Kaitlin OstroskyGermanyXuxue Feng NEW
Salvatore StockhamUnited KingdomAsiya Javayant UNQUALIFIED
Johnson SergiGermanyIvan Magalhaes UNQUALIFIED
Isabel BowleyBrazilAmy Elsner NEW
Smith GlickRussiaOnyama Limba PROPOSAL
Misaki RoysterIndiaAsiya Javayant NEW
Silvio SlusarskiGermanyOnyama Limba UNQUALIFIED
Murillo MaletBrazilElwin Sharvill UNQUALIFIED
Jones VocelkaItalyBernardo Dominic NEW
Isabel BowleySpainIoni Bowcher NEW
Clifford RimGermanyXuxue Feng NEW
Deepesh ChuiSpainOnyama Limba PROPOSAL
David DarakjyJapanAnna Fali NEGOTIATION
Mayumi KolmetzItalyIoni Bowcher NEGOTIATION
Tony FollerIndiaXuxue Feng RENEWAL
Nicolas IturbideArgentinaBernardo Dominic RENEWAL
Clifford RimAustraliaOnyama Limba NEGOTIATION
Murillo MaletIndiaElwin Sharvill NEW
Claire TollnerArgentinaAsiya Javayant NEW
Deepesh ChuiCanadaElwin Sharvill QUALIFIED
Morrow RutaCanadaIvan Magalhaes NEW
Aruna FigeroaItalyAsiya Javayant NEW
Leja CaldareraIndiaAmy Elsner QUALIFIED
Greenwood BologniaGermanyBernardo Dominic NEGOTIATION
Nicolas IturbideSpainOnyama Limba UNQUALIFIED
Octavia MaletUnited KingdomOnyama Limba QUALIFIED
Tony FollerAustraliaAnna Fali UNQUALIFIED
Tony FollerRussiaIoni Bowcher NEW
Emily WhobreySpainAmy Elsner RENEWAL
Sinclair WaycottItalyBernardo Dominic RENEWAL
Rodrigues CampainItalyAmy Elsner PROPOSAL
James ButtArgentinaAmy Elsner RENEWAL
Johnson SergiCanadaStephen Shaw QUALIFIED
Clifford RimItalyOnyama Limba NEW
Morrow RutaGermanyOnyama Limba PROPOSAL
Julie StensethBrazilAmy Elsner RENEWAL
Costa DilliardSpainElwin Sharvill NEGOTIATION
Chavez BriddickFranceAsiya Javayant RENEWAL
Murillo MaletFranceXuxue Feng UNQUALIFIED
Nicolas IturbideItalyIvan Magalhaes PROPOSAL
Francesco ShinkoCanadaBernardo Dominic NEW
Jeanfrancois VenereRussiaElwin Sharvill QUALIFIED
Juan WieserGermanyAsiya Javayant NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Jones VocelkaJapanIoni Bowcher NEW
Jeanfrancois VenereCanadaXuxue Feng UNQUALIFIED
Ashley DoeAustraliaOnyama Limba PROPOSAL
Stacey MacleadAustraliaIoni Bowcher NEGOTIATION
Aruna FigeroaCanadaIoni Bowcher PROPOSAL
James ButtUnited KingdomIvan Magalhaes NEW
Jones VocelkaItalyIoni Bowcher PROPOSAL
Jefferson SchemmerArgentinaOnyama Limba QUALIFIED
Salvatore StockhamIndiaStephen Shaw QUALIFIED
Julie StensethSpainXuxue Feng QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aruna FigeroaUnited Kingdom2026-04-27Rousseaux, Michael Esq NEGOTIATION47Asiya Javayant
1001Stacey MacleadCanada2026-04-20Rousseaux, Michael Esq RENEWAL70Xuxue Feng
1002Kaitlin OstroskyAustralia2026-04-17Chemel, James L Cpa NEGOTIATION65Elwin Sharvill
1003David DarakjyCanada2026-04-15Rangoni Of Florence RENEWAL89Onyama Limba
1004Johnson SergiAustralia2026-04-09Truhlar And Truhlar Attys NEGOTIATION39Asiya Javayant
1005Isabel BowleyFrance2026-04-28Morlong Associates QUALIFIED13Amy Elsner
1006Emily WhobreyBrazil2026-05-03Truhlar And Truhlar Attys NEW36Ioni Bowcher
1007Mujtaba NickaFrance2026-04-12Benton, John B Jr UNQUALIFIED69Xuxue Feng
1008Wickens NestleIndia2026-04-28Commercial Press NEW79Asiya Javayant
1009Mayumi KolmetzFrance2026-05-06Rousseaux, Michael Esq RENEWAL9Bernardo Dominic
1010Maria MarrierArgentina2026-04-23Dorl, James J Esq RENEWAL36Onyama Limba
1011Alejandro PerinBrazil2026-04-18Morlong Associates PROPOSAL24Bernardo Dominic
1012Jefferson SchemmerCanada2026-04-25Morlong Associates NEW42Onyama Limba
1013Silvio SlusarskiFrance2026-04-17Benton, John B Jr NEW77Ioni Bowcher
1014Jones VocelkaRussia2026-05-03Dorl, James J Esq UNQUALIFIED73Ioni Bowcher
1015Ricardo GauchoIndia2026-04-10Truhlar And Truhlar Attys QUALIFIED50Bernardo Dominic
1016Emily WhobreyIndia2026-04-21Feiner Bros NEGOTIATION6Onyama Limba
1017Izzy GarufiSpain2026-05-07Chanay, Jeffrey A Esq QUALIFIED19Anna Fali
1018Aika InouyeCanada2026-04-21Rousseaux, Michael Esq RENEWAL18Onyama Limba
1019Maria MarrierBrazil2026-04-14Rousseaux, Michael Esq UNQUALIFIED64Elwin Sharvill
1020Leon OldroydSpain2026-05-03King, Christopher A Esq RENEWAL40Amy Elsner
1021Faith GillianAustralia2026-04-11Truhlar And Truhlar Attys QUALIFIED82Ioni Bowcher
1022Ashley DoeBrazil2026-05-02Chemel, James L Cpa QUALIFIED18Ioni Bowcher
1023Leon OldroydRussia2026-04-24Commercial Press UNQUALIFIED44Bernardo Dominic
1024Rodrigues CampainFrance2026-04-18King, Christopher A Esq NEW82Stephen Shaw
1025Greenwood BologniaSpain2026-05-06Morlong Associates NEGOTIATION62Xuxue Feng
1026Arvin AlbaresItaly2026-04-13Chemel, James L Cpa RENEWAL36Amy Elsner
1027Chavez BriddickIndia2026-04-09Benton, John B Jr QUALIFIED96Asiya Javayant
1028Wickens NestleItaly2026-05-03Feltz Printing Service PROPOSAL11Asiya Javayant
1029Izzy GarufiAustralia2026-04-09Rangoni Of Florence QUALIFIED79Anna Fali
1030Izzy GarufiUnited Kingdom2026-04-28Chapman, Ross E Esq PROPOSAL55Onyama Limba
1031Jefferson SchemmerJapan2026-04-22Truhlar And Truhlar Attys RENEWAL45Bernardo Dominic
1032Juan WieserBrazil2026-04-22Morlong Associates PROPOSAL42Amy Elsner
1033Octavia MaletIndia2026-04-13King, Christopher A Esq QUALIFIED91Xuxue Feng
1034Stacey MacleadJapan2026-05-02Chapman, Ross E Esq NEW42Ivan Magalhaes
1035Leon OldroydArgentina2026-04-18Chemel, James L Cpa NEW4Ioni Bowcher
1036Darci PoquetteUnited Kingdom2026-04-23Chapman, Ross E Esq QUALIFIED31Elwin Sharvill
1037Deepesh ChuiAustralia2026-05-03Rangoni Of Florence NEGOTIATION49Amy Elsner
1038Izzy GarufiItaly2026-04-24Feltz Printing Service UNQUALIFIED37Onyama Limba
1039Silvio SlusarskiSpain2026-04-24Rangoni Of Florence NEGOTIATION34Stephen Shaw
1040Aika InouyeFrance2026-04-10Chemel, James L Cpa PROPOSAL98Anna Fali
1041Silvio SlusarskiRussia2026-04-30Benton, John B Jr UNQUALIFIED73Ioni Bowcher
1042Wickens NestleAustralia2026-05-03Rangoni Of Florence UNQUALIFIED83Asiya Javayant
1043Tony FollerFrance2026-04-19Rousseaux, Michael Esq NEW16Anna Fali
1044Mujtaba NickaItaly2026-04-30Feiner Bros UNQUALIFIED58Stephen Shaw
1045Stacey MacleadSpain2026-04-23Commercial Press PROPOSAL29Xuxue Feng
1046Jones VocelkaSpain2026-04-17Buckley Miller Wright NEW62Elwin Sharvill
1047Francesco ShinkoSpain2026-04-15King, Christopher A Esq PROPOSAL99Bernardo Dominic
1048Jeanfrancois VenereFrance2026-05-04Chanay, Jeffrey A Esq PROPOSAL66Ivan Magalhaes
1049Leja CaldareraItaly2026-05-06King, Christopher A Esq NEW22Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Ivar PaprockiRussiaAnna Fali NEW
Silvio SlusarskiUnited KingdomAmy Elsner NEGOTIATION
Aruna FigeroaAustraliaElwin Sharvill PROPOSAL
Aditya KuskoBrazilBernardo Dominic NEGOTIATION
Nicolas IturbideArgentinaIoni Bowcher NEW
Emily WhobreyItalyBernardo Dominic NEW
Smith GlickArgentinaAnna Fali NEW
Mujtaba NickaCanadaBernardo Dominic QUALIFIED
Kadeem FlosiFranceAnna Fali QUALIFIED
Alejandro PerinGermanyXuxue Feng UNQUALIFIED
Aditya KuskoRussiaIvan Magalhaes QUALIFIED
Octavia MaletItalyElwin Sharvill RENEWAL
Mayumi KolmetzCanadaXuxue Feng RENEWAL
Kaitlin OstroskyCanadaElwin Sharvill PROPOSAL
James ButtJapanOnyama Limba RENEWAL
Leon OldroydSpainAsiya Javayant QUALIFIED
Silvio SlusarskiRussiaElwin Sharvill PROPOSAL
Sinclair WaycottUnited KingdomXuxue Feng RENEWAL
Alejandro PerinRussiaOnyama Limba QUALIFIED
Juan WieserUnited KingdomXuxue Feng RENEWAL
Deepesh ChuiJapanAmy Elsner PROPOSAL
Morrow RutaAustraliaOnyama Limba UNQUALIFIED
Julie StensethFranceAnna Fali NEGOTIATION
Izzy GarufiItalyAmy Elsner RENEWAL
Deepesh ChuiRussiaOnyama Limba NEGOTIATION
Clifford RimUnited KingdomIoni Bowcher QUALIFIED
Chavez BriddickJapanStephen Shaw NEGOTIATION
Adams MorascaGermanyBernardo Dominic NEW
Jones VocelkaArgentinaAsiya Javayant QUALIFIED
Tony FollerJapanAnna Fali NEGOTIATION
Francesco ShinkoIndiaBernardo Dominic PROPOSAL
Alejandro PerinAustraliaAnna Fali NEW
Maria MarrierArgentinaAsiya Javayant NEGOTIATION
Kaitlin OstroskyFranceOnyama Limba RENEWAL
Rodrigues CampainJapanAmy Elsner UNQUALIFIED
Morrow RutaSpainAmy Elsner RENEWAL
Antonio CaudyRussiaAmy Elsner UNQUALIFIED
Jeanfrancois VenereSpainElwin Sharvill RENEWAL
Leja CaldareraIndiaIvan Magalhaes RENEWAL
Stacey MacleadRussiaAnna Fali NEW
Maria MarrierIndiaOnyama Limba UNQUALIFIED
David DarakjyGermanyBernardo Dominic NEW
Rodrigues CampainUnited KingdomIvan Magalhaes RENEWAL
Ashley DoeItalyBernardo Dominic QUALIFIED
Sinclair WaycottItalyElwin Sharvill NEGOTIATION
Maria MarrierArgentinaAmy Elsner UNQUALIFIED
Octavia MaletUnited KingdomXuxue Feng QUALIFIED
Aika InouyeIndiaIoni Bowcher NEGOTIATION
Arvin AlbaresGermanyAmy Elsner PROPOSAL
Wickens NestleAustraliaAnna Fali NEGOTIATION
Frozen Columns
Name
Deepesh Chui
Deepesh Chui
Arvin Albares
Octavia Malet
David Darakjy
Maisha Rulapaugh
Stacey Maclead
Jefferson Schemmer
Murillo Malet
Deepesh Chui
Kadeem Flosi
Arvin Albares
Leon Oldroyd
Tony Foller
Jeanfrancois Venere
Rodrigues Campain
Tony Foller
Clifford Rim
Juan Wieser
Greenwood Bolognia
Isabel Bowley
Jeanfrancois Venere
Tony Foller
Munro Ferencz
Sinclair Waycott
Ashley Doe
Smith Glick
Clifford Rim
Maisha Rulapaugh
Wickens Nestle
Tony Foller
Faith Gillian
Kadeem Flosi
Nicolas Iturbide
Chavez Briddick
Isabel Bowley
Antonio Caudy
Chavez Briddick
Faith Gillian
Izzy Garufi
Ashley Doe
Ivar Paprocki
Misaki Royster
Greenwood Bolognia
Deepesh Chui
Rodrigues Campain
Costa Dilliard
Octavia Malet
Juan Wieser
Silvio Slusarski
IdCountryDate
1000Russia2026-04-14
1001Argentina2026-04-25
1002Argentina2026-04-18
1003Spain2026-04-16
1004United Kingdom2026-04-11
1005Italy2026-04-16
1006Italy2026-05-02
1007Brazil2026-04-21
1008Italy2026-04-15
1009India2026-04-12
1010France2026-04-22
1011Brazil2026-04-10
1012India2026-04-11
1013Japan2026-04-17
1014India2026-05-06
1015Australia2026-04-13
1016Brazil2026-05-08
1017France2026-05-04
1018Germany2026-04-28
1019Canada2026-05-07
1020United Kingdom2026-04-17
1021Italy2026-04-28
1022Canada2026-04-21
1023Japan2026-05-06
1024India2026-04-30
1025Brazil2026-04-17
1026Brazil2026-05-08
1027Germany2026-04-19
1028Spain2026-04-15
1029France2026-04-25
1030Spain2026-05-04
1031Japan2026-04-29
1032Argentina2026-04-25
1033Brazil2026-04-22
1034Italy2026-05-03
1035Brazil2026-04-14
1036France2026-05-08
1037Japan2026-04-10
1038Brazil2026-04-16
1039Russia2026-04-19
1040Brazil2026-04-12
1041Japan2026-05-05
1042Germany2026-05-04
1043Canada2026-04-21
1044India2026-05-02
1045Canada2026-04-21
1046France2026-05-07
1047Spain2026-04-24
1048India2026-05-07
1049Argentina2026-04-11

On-Demand Data

NameIdCountryDate
Aika Inouye1000Germany2026-04-26
Misaki Royster1001Australia2026-04-15
Kadeem Flosi1002United Kingdom2026-04-30
Jeanfrancois Venere1003Spain2026-04-17
Misaki Royster1004Germany2026-05-06
Rodrigues Campain1005India2026-04-14
Munro Ferencz1006Germany2026-04-14
Silvio Slusarski1007Japan2026-04-14
Maria Marrier1008Russia2026-04-30
Wickens Nestle1009Japan2026-04-10
Antonio Caudy1010Germany2026-05-07
Izzy Garufi1011Argentina2026-05-07
Arvin Albares1012Italy2026-04-21
Murillo Malet1013Brazil2026-04-20
Ivar Paprocki1014Argentina2026-04-16
Cody Saylors1015India2026-05-07
Nicolas Iturbide1016Argentina2026-04-13
Francesco Shinko1017Russia2026-05-05
Maisha Rulapaugh1018Italy2026-05-03
Clifford Rim1019Italy2026-04-20
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Maisha RulapaughArgentinaBernardo Dominic PROPOSAL
Wickens NestleBrazilIvan Magalhaes QUALIFIED
Johnson SergiGermanyAmy Elsner NEW
Antonio CaudyFranceAmy Elsner NEGOTIATION
Chavez BriddickGermanyXuxue Feng NEGOTIATION
Smith GlickArgentinaAmy Elsner UNQUALIFIED
Octavia MaletAustraliaStephen Shaw NEW
Ashley DoeFranceElwin Sharvill UNQUALIFIED
Silvio SlusarskiUnited KingdomElwin Sharvill NEGOTIATION
Aika InouyeAustraliaAmy Elsner UNQUALIFIED
Jones VocelkaSpainElwin Sharvill NEGOTIATION
Salvatore StockhamArgentinaAsiya Javayant PROPOSAL
Munro FerenczSpainIoni Bowcher QUALIFIED
Rodrigues CampainAustraliaStephen Shaw PROPOSAL
Aika InouyeAustraliaAmy Elsner NEW
Cody SaylorsBrazilAmy Elsner QUALIFIED
Tony FollerUnited KingdomAsiya Javayant RENEWAL
Deepesh ChuiIndiaIvan Magalhaes RENEWAL
Ashley DoeBrazilIoni Bowcher QUALIFIED
Faith GillianBrazilAmy Elsner RENEWAL
Chavez BriddickRussiaXuxue Feng QUALIFIED
Aika InouyeArgentinaIoni Bowcher PROPOSAL
Smith GlickUnited KingdomIoni Bowcher PROPOSAL
Wickens NestleAustraliaAnna Fali UNQUALIFIED
Leon OldroydGermanyIvan Magalhaes UNQUALIFIED
Costa DilliardItalyAmy Elsner NEGOTIATION
Ivar PaprockiIndiaIvan Magalhaes UNQUALIFIED
Izzy GarufiUnited KingdomIoni Bowcher QUALIFIED
Clifford RimCanadaElwin Sharvill RENEWAL
James ButtIndiaStephen Shaw QUALIFIED
Francesco ShinkoCanadaStephen Shaw NEW
Silvio SlusarskiCanadaIoni Bowcher NEW
Jeanfrancois VenereSpainStephen Shaw UNQUALIFIED
Leon OldroydFranceIoni Bowcher UNQUALIFIED
Aika InouyeAustraliaBernardo Dominic RENEWAL
Leon OldroydUnited KingdomAmy Elsner RENEWAL
Mayumi KolmetzArgentinaAsiya Javayant PROPOSAL
Julie StensethGermanyAnna Fali NEW
Stacey MacleadUnited KingdomAnna Fali UNQUALIFIED
Morrow RutaGermanyAmy Elsner 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>