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
Adams MorascaGermanyElwin Sharvill RENEWAL
Deepesh ChuiUnited KingdomXuxue Feng UNQUALIFIED
Munro FerenczCanadaElwin Sharvill NEGOTIATION
Adams MorascaCanadaAnna Fali QUALIFIED
Aruna FigeroaItalyAnna Fali RENEWAL
Octavia MaletFranceAnna Fali UNQUALIFIED
Juan WieserIndiaXuxue Feng PROPOSAL
Costa DilliardFranceAsiya Javayant UNQUALIFIED
Silvio SlusarskiBrazilBernardo Dominic NEGOTIATION
Smith GlickBrazilOnyama Limba UNQUALIFIED
Cody SaylorsItalyBernardo Dominic UNQUALIFIED
Murillo MaletCanadaIoni Bowcher NEW
Jennifer AmigonAustraliaAnna Fali QUALIFIED
Chavez BriddickArgentinaAnna Fali NEGOTIATION
Salvatore StockhamSpainElwin Sharvill UNQUALIFIED
Murillo MaletArgentinaAmy Elsner RENEWAL
Alejandro PerinArgentinaBernardo Dominic NEW
Aika InouyeJapanOnyama Limba RENEWAL
Rodrigues CampainArgentinaIoni Bowcher QUALIFIED
Smith GlickAustraliaAsiya Javayant RENEWAL
Chavez BriddickRussiaStephen Shaw UNQUALIFIED
Jones VocelkaUnited KingdomIoni Bowcher NEW
Rodrigues CampainUnited KingdomIoni Bowcher RENEWAL
Leja CaldareraItalyAmy Elsner RENEWAL
Julie StensethSpainOnyama Limba PROPOSAL
Salvatore StockhamSpainAsiya Javayant NEGOTIATION
Tony FollerItalyIvan Magalhaes UNQUALIFIED
Aditya KuskoAustraliaAmy Elsner PROPOSAL
Jeanfrancois VenereArgentinaIvan Magalhaes PROPOSAL
Rodrigues CampainGermanyOnyama Limba QUALIFIED
Morrow RutaJapanAsiya Javayant NEGOTIATION
Octavia MaletBrazilElwin Sharvill RENEWAL
Silvio SlusarskiItalyIoni Bowcher QUALIFIED
Cody SaylorsBrazilXuxue Feng NEGOTIATION
Jennifer AmigonItalyAsiya Javayant NEW
Smith GlickUnited KingdomAnna Fali UNQUALIFIED
Ricardo GauchoUnited KingdomAmy Elsner RENEWAL
Sinclair WaycottUnited KingdomAnna Fali NEW
Jefferson SchemmerUnited KingdomAsiya Javayant NEGOTIATION
Tony FollerItalyBernardo Dominic UNQUALIFIED
Murillo MaletGermanyStephen Shaw NEGOTIATION
Munro FerenczAustraliaElwin Sharvill QUALIFIED
Aruna FigeroaItalyElwin Sharvill PROPOSAL
Clifford RimUnited KingdomAnna Fali QUALIFIED
Maria MarrierUnited KingdomAnna Fali PROPOSAL
Johnson SergiFranceIoni Bowcher NEW
Salvatore StockhamUnited KingdomOnyama Limba NEGOTIATION
Juan WieserArgentinaElwin Sharvill NEW
Aruna FigeroaJapanBernardo Dominic UNQUALIFIED
Ivar PaprockiIndiaAnna Fali PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Aditya KuskoGermanyOnyama Limba RENEWAL
Mujtaba NickaRussiaXuxue Feng PROPOSAL
Jones VocelkaSpainAsiya Javayant RENEWAL
Arvin AlbaresRussiaOnyama Limba PROPOSAL
Emily WhobreyIndiaBernardo Dominic PROPOSAL
Wickens NestleItalyXuxue Feng NEGOTIATION
Murillo MaletRussiaStephen Shaw NEGOTIATION
Clifford RimArgentinaStephen Shaw NEW
Arvin AlbaresIndiaIoni Bowcher UNQUALIFIED
Antonio CaudyCanadaBernardo Dominic NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Julie StensethArgentina2026-05-09Buckley Miller Wright NEGOTIATION16Xuxue Feng
1001Misaki RoysterIndia2026-05-03Chanay, Jeffrey A Esq NEW82Stephen Shaw
1002Kadeem FlosiJapan2026-05-16Feltz Printing Service NEW74Ioni Bowcher
1003Adams MorascaSpain2026-05-05Morlong Associates NEW57Elwin Sharvill
1004Mayumi KolmetzSpain2026-05-04Morlong Associates RENEWAL62Anna Fali
1005Maria MarrierIndia2026-05-02Feltz Printing Service UNQUALIFIED16Ivan Magalhaes
1006Wickens NestleBrazil2026-05-07Buckley Miller Wright NEGOTIATION66Ioni Bowcher
1007Kaitlin OstroskyAustralia2026-05-18Rangoni Of Florence NEW97Onyama Limba
1008Emily WhobreyJapan2026-05-08Chapman, Ross E Esq RENEWAL54Stephen Shaw
1009Mayumi KolmetzBrazil2026-04-30Benton, John B Jr QUALIFIED45Elwin Sharvill
1010Johnson SergiUnited Kingdom2026-05-09Benton, John B Jr UNQUALIFIED9Elwin Sharvill
1011Francesco ShinkoCanada2026-05-17Truhlar And Truhlar Attys NEGOTIATION57Stephen Shaw
1012Aika InouyeArgentina2026-05-20Rangoni Of Florence NEW27Ioni Bowcher
1013Cody SaylorsRussia2026-05-02Printing Dimensions NEW93Anna Fali
1014Juan WieserAustralia2026-05-14Feltz Printing Service RENEWAL86Ivan Magalhaes
1015Juan WieserBrazil2026-05-20Printing Dimensions NEW84Bernardo Dominic
1016Alejandro PerinRussia2026-05-09Commercial Press NEW59Bernardo Dominic
1017Alejandro PerinFrance2026-04-30Rousseaux, Michael Esq QUALIFIED13Xuxue Feng
1018Kaitlin OstroskySpain2026-05-19Chapman, Ross E Esq UNQUALIFIED38Anna Fali
1019Maisha RulapaughRussia2026-04-29Morlong Associates NEW99Bernardo Dominic
1020Deepesh ChuiFrance2026-05-08Feiner Bros NEGOTIATION42Amy Elsner
1021David DarakjyUnited Kingdom2026-05-20Dorl, James J Esq PROPOSAL51Xuxue Feng
1022Arvin AlbaresArgentina2026-05-18King, Christopher A Esq NEW58Amy Elsner
1023Aruna FigeroaSpain2026-05-07Chapman, Ross E Esq NEGOTIATION33Xuxue Feng
1024Francesco ShinkoRussia2026-05-21Rousseaux, Michael Esq RENEWAL23Ioni Bowcher
1025Costa DilliardGermany2026-05-09Chapman, Ross E Esq UNQUALIFIED96Stephen Shaw
1026Smith GlickGermany2026-05-11King, Christopher A Esq PROPOSAL89Elwin Sharvill
1027Nicolas IturbideSpain2026-05-16Buckley Miller Wright UNQUALIFIED19Anna Fali
1028Rodrigues CampainIndia2026-04-26Morlong Associates QUALIFIED6Xuxue Feng
1029James ButtSpain2026-05-11Printing Dimensions UNQUALIFIED29Elwin Sharvill
1030Darci PoquetteGermany2026-05-12Feiner Bros PROPOSAL12Ioni Bowcher
1031Juan WieserArgentina2026-04-28Benton, John B Jr PROPOSAL58Amy Elsner
1032Antonio CaudyAustralia2026-05-06Benton, John B Jr PROPOSAL7Ivan Magalhaes
1033Maria MarrierGermany2026-05-22Dorl, James J Esq PROPOSAL63Anna Fali
1034Leon OldroydIndia2026-05-24Commercial Press UNQUALIFIED15Asiya Javayant
1035Salvatore StockhamJapan2026-05-01Feltz Printing Service NEGOTIATION67Ioni Bowcher
1036Deepesh ChuiUnited Kingdom2026-05-11Feltz Printing Service QUALIFIED34Xuxue Feng
1037Francesco ShinkoArgentina2026-05-21Commercial Press NEW25Amy Elsner
1038James ButtCanada2026-05-17Truhlar And Truhlar Attys PROPOSAL19Asiya Javayant
1039Ricardo GauchoBrazil2026-05-21Rousseaux, Michael Esq UNQUALIFIED89Bernardo Dominic
1040Jennifer AmigonSpain2026-05-24Benton, John B Jr QUALIFIED56Elwin Sharvill
1041Mujtaba NickaCanada2026-05-06Chanay, Jeffrey A Esq UNQUALIFIED57Xuxue Feng
1042Jeanfrancois VenereBrazil2026-05-10Feltz Printing Service RENEWAL52Anna Fali
1043Johnson SergiArgentina2026-05-14Feiner Bros PROPOSAL96Xuxue Feng
1044Morrow RutaGermany2026-04-27Rangoni Of Florence NEGOTIATION87Amy Elsner
1045Rodrigues CampainCanada2026-05-12Morlong Associates NEGOTIATION52Onyama Limba
1046Adams MorascaGermany2026-05-07King, Christopher A Esq PROPOSAL37Stephen Shaw
1047Leja CaldareraJapan2026-05-01Morlong Associates NEW27Onyama Limba
1048Maisha RulapaughFrance2026-04-30Benton, John B Jr PROPOSAL11Onyama Limba
1049Leja CaldareraJapan2026-05-15Morlong Associates RENEWAL73Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Octavia MaletRussiaIoni Bowcher PROPOSAL
Francesco ShinkoItalyAmy Elsner PROPOSAL
Jeanfrancois VenereGermanyAmy Elsner NEW
Aditya KuskoItalyIvan Magalhaes PROPOSAL
Leja CaldareraAustraliaAsiya Javayant NEGOTIATION
Isabel BowleyIndiaAmy Elsner NEGOTIATION
Mujtaba NickaBrazilAsiya Javayant PROPOSAL
Murillo MaletFranceBernardo Dominic PROPOSAL
Aditya KuskoSpainXuxue Feng PROPOSAL
Munro FerenczCanadaXuxue Feng RENEWAL
Jeanfrancois VenereIndiaIvan Magalhaes PROPOSAL
Chavez BriddickFranceElwin Sharvill PROPOSAL
Jones VocelkaJapanAsiya Javayant RENEWAL
Kaitlin OstroskyBrazilAsiya Javayant RENEWAL
Sinclair WaycottItalyIvan Magalhaes PROPOSAL
Mujtaba NickaBrazilAnna Fali RENEWAL
Isabel BowleyItalyIoni Bowcher NEGOTIATION
Rodrigues CampainItalyAsiya Javayant NEGOTIATION
Darci PoquetteUnited KingdomAmy Elsner RENEWAL
Darci PoquetteJapanXuxue Feng NEW
Tony FollerArgentinaAnna Fali UNQUALIFIED
Adams MorascaCanadaStephen Shaw NEGOTIATION
Nicolas IturbideGermanyAmy Elsner NEW
Greenwood BologniaBrazilStephen Shaw PROPOSAL
Juan WieserRussiaAmy Elsner NEGOTIATION
Izzy GarufiUnited KingdomAnna Fali QUALIFIED
Salvatore StockhamRussiaElwin Sharvill QUALIFIED
Julie StensethAustraliaIoni Bowcher NEGOTIATION
Smith GlickCanadaXuxue Feng QUALIFIED
Misaki RoysterUnited KingdomIoni Bowcher UNQUALIFIED
Greenwood BologniaSpainAmy Elsner RENEWAL
Adams MorascaBrazilIvan Magalhaes NEW
Johnson SergiRussiaBernardo Dominic RENEWAL
Maria MarrierJapanElwin Sharvill RENEWAL
Costa DilliardSpainAsiya Javayant NEW
Costa DilliardGermanyAsiya Javayant UNQUALIFIED
Stacey MacleadGermanyOnyama Limba QUALIFIED
Nicolas IturbideSpainAmy Elsner NEGOTIATION
Maria MarrierItalyOnyama Limba QUALIFIED
Wickens NestleGermanyAmy Elsner UNQUALIFIED
Izzy GarufiIndiaBernardo Dominic NEW
Morrow RutaAustraliaElwin Sharvill PROPOSAL
David DarakjyCanadaBernardo Dominic UNQUALIFIED
Mujtaba NickaRussiaAsiya Javayant PROPOSAL
Darci PoquetteSpainAsiya Javayant UNQUALIFIED
Kaitlin OstroskyFranceOnyama Limba PROPOSAL
Sinclair WaycottFranceXuxue Feng NEGOTIATION
Emily WhobreySpainAnna Fali QUALIFIED
Chavez BriddickSpainXuxue Feng RENEWAL
Emily WhobreyUnited KingdomXuxue Feng UNQUALIFIED
Frozen Columns
Name
Emily Whobrey
Ashley Doe
Ashley Doe
Ashley Doe
Nicolas Iturbide
Darci Poquette
Maria Marrier
Kadeem Flosi
Francesco Shinko
Kadeem Flosi
Mayumi Kolmetz
Leon Oldroyd
David Darakjy
Tony Foller
Juan Wieser
Ivar Paprocki
Costa Dilliard
Leja Caldarera
Aika Inouye
Juan Wieser
Izzy Garufi
Emily Whobrey
Francesco Shinko
Greenwood Bolognia
Chavez Briddick
Silvio Slusarski
Chavez Briddick
Cody Saylors
Johnson Sergi
Kaitlin Ostrosky
Murillo Malet
Munro Ferencz
Leon Oldroyd
Wickens Nestle
James Butt
Arvin Albares
Jefferson Schemmer
Francesco Shinko
Antonio Caudy
Maria Marrier
Greenwood Bolognia
Wickens Nestle
Adams Morasca
Smith Glick
Francesco Shinko
Antonio Caudy
Sinclair Waycott
Wickens Nestle
Johnson Sergi
Jennifer Amigon
IdCountryDate
1000Japan2026-05-15
1001Germany2026-05-13
1002France2026-05-13
1003Japan2026-05-11
1004Russia2026-05-10
1005Australia2026-05-12
1006Canada2026-05-14
1007France2026-05-20
1008Germany2026-05-13
1009Italy2026-05-06
1010Brazil2026-05-13
1011Argentina2026-05-05
1012Germany2026-05-18
1013United Kingdom2026-05-17
1014Japan2026-05-15
1015Japan2026-05-01
1016Canada2026-04-29
1017India2026-05-10
1018Canada2026-04-28
1019Brazil2026-05-04
1020Canada2026-04-28
1021Germany2026-05-04
1022Spain2026-05-21
1023Spain2026-04-29
1024France2026-05-09
1025India2026-04-26
1026Argentina2026-05-01
1027France2026-05-16
1028Germany2026-05-07
1029Germany2026-05-09
1030Australia2026-05-08
1031Japan2026-05-11
1032India2026-05-25
1033Brazil2026-04-27
1034France2026-04-28
1035Germany2026-04-28
1036India2026-05-02
1037Brazil2026-05-05
1038Russia2026-04-30
1039India2026-04-28
1040France2026-05-13
1041Argentina2026-04-28
1042United Kingdom2026-05-20
1043United Kingdom2026-05-09
1044Australia2026-05-17
1045Argentina2026-05-22
1046Japan2026-05-06
1047Canada2026-05-14
1048Australia2026-04-30
1049Italy2026-05-15

On-Demand Data

NameIdCountryDate
Ricardo Gaucho1000Germany2026-05-11
Ashley Doe1001France2026-05-02
Aditya Kusko1002United Kingdom2026-05-10
Faith Gillian1003Brazil2026-05-11
Adams Morasca1004India2026-05-25
Leon Oldroyd1005Italy2026-04-30
Izzy Garufi1006Japan2026-04-26
Aika Inouye1007Russia2026-04-30
Alejandro Perin1008Australia2026-05-03
Octavia Malet1009Brazil2026-05-06
Clifford Rim1010Spain2026-05-06
Ricardo Gaucho1011Brazil2026-05-07
Morrow Ruta1012Italy2026-04-30
Ricardo Gaucho1013Argentina2026-04-29
Misaki Royster1014Germany2026-05-24
Arvin Albares1015Germany2026-05-04
Aika Inouye1016India2026-05-22
Chavez Briddick1017Canada2026-05-03
Adams Morasca1018India2026-05-25
Nicolas Iturbide1019Argentina2026-05-07
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jones VocelkaSpainOnyama Limba UNQUALIFIED
Izzy GarufiRussiaIvan Magalhaes QUALIFIED
Antonio CaudyRussiaOnyama Limba QUALIFIED
Deepesh ChuiIndiaIoni Bowcher NEW
Kadeem FlosiBrazilStephen Shaw PROPOSAL
Claire TollnerIndiaAmy Elsner NEGOTIATION
Deepesh ChuiSpainOnyama Limba NEGOTIATION
Leon OldroydJapanAnna Fali QUALIFIED
Arvin AlbaresIndiaOnyama Limba QUALIFIED
Munro FerenczJapanIoni Bowcher PROPOSAL
Costa DilliardIndiaBernardo Dominic QUALIFIED
Arvin AlbaresRussiaAmy Elsner PROPOSAL
Faith GillianFranceBernardo Dominic RENEWAL
Leja CaldareraRussiaIvan Magalhaes RENEWAL
Antonio CaudyJapanAsiya Javayant PROPOSAL
Cody SaylorsItalyOnyama Limba UNQUALIFIED
Faith GillianGermanyOnyama Limba RENEWAL
Johnson SergiSpainXuxue Feng RENEWAL
Nicolas IturbideFranceIvan Magalhaes QUALIFIED
Maisha RulapaughJapanBernardo Dominic RENEWAL
Izzy GarufiFranceOnyama Limba QUALIFIED
Kaitlin OstroskyGermanyAsiya Javayant NEW
Silvio SlusarskiIndiaAnna Fali UNQUALIFIED
Morrow RutaArgentinaAmy Elsner NEGOTIATION
Maisha RulapaughItalyOnyama Limba NEW
Misaki RoysterUnited KingdomIvan Magalhaes PROPOSAL
Clifford RimBrazilAmy Elsner QUALIFIED
Maisha RulapaughFranceOnyama Limba RENEWAL
Misaki RoysterUnited KingdomIoni Bowcher UNQUALIFIED
Jeanfrancois VenereAustraliaBernardo Dominic QUALIFIED
Aika InouyeFranceOnyama Limba UNQUALIFIED
Isabel BowleyRussiaStephen Shaw NEW
Ricardo GauchoGermanyAnna Fali NEGOTIATION
Tony FollerJapanIoni Bowcher QUALIFIED
Mujtaba NickaIndiaOnyama Limba QUALIFIED
Misaki RoysterFranceIvan Magalhaes QUALIFIED
Arvin AlbaresBrazilIvan Magalhaes NEW
Alejandro PerinArgentinaAmy Elsner RENEWAL
Deepesh ChuiItalyBernardo Dominic PROPOSAL
Chavez BriddickBrazilXuxue Feng 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>