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
Julie StensethCanadaXuxue Feng QUALIFIED
Cody SaylorsItalyBernardo Dominic PROPOSAL
Adams MorascaFranceAnna Fali UNQUALIFIED
Jones VocelkaUnited KingdomAmy Elsner NEGOTIATION
Murillo MaletAustraliaIoni Bowcher UNQUALIFIED
Leon OldroydSpainAsiya Javayant UNQUALIFIED
Jones VocelkaGermanyElwin Sharvill NEW
Morrow RutaSpainStephen Shaw RENEWAL
Greenwood BologniaUnited KingdomAmy Elsner PROPOSAL
Aika InouyeAustraliaIvan Magalhaes QUALIFIED
Ricardo GauchoArgentinaStephen Shaw PROPOSAL
Leja CaldareraUnited KingdomBernardo Dominic NEW
Deepesh ChuiUnited KingdomStephen Shaw NEW
David DarakjyJapanElwin Sharvill RENEWAL
Greenwood BologniaIndiaXuxue Feng NEW
James ButtAustraliaXuxue Feng RENEWAL
Octavia MaletSpainIoni Bowcher RENEWAL
Murillo MaletUnited KingdomIoni Bowcher UNQUALIFIED
Salvatore StockhamItalyAnna Fali UNQUALIFIED
Cody SaylorsBrazilElwin Sharvill NEW
Octavia MaletFranceAmy Elsner QUALIFIED
Mujtaba NickaBrazilIoni Bowcher RENEWAL
Aika InouyeRussiaBernardo Dominic RENEWAL
James ButtArgentinaAmy Elsner NEGOTIATION
Ricardo GauchoIndiaXuxue Feng NEGOTIATION
Smith GlickSpainIvan Magalhaes PROPOSAL
Chavez BriddickBrazilElwin Sharvill UNQUALIFIED
Jeanfrancois VenereArgentinaAmy Elsner NEGOTIATION
Darci PoquetteItalyXuxue Feng PROPOSAL
Murillo MaletGermanyIvan Magalhaes QUALIFIED
Maisha RulapaughFranceXuxue Feng UNQUALIFIED
Johnson SergiUnited KingdomIvan Magalhaes PROPOSAL
Maisha RulapaughItalyOnyama Limba RENEWAL
Cody SaylorsIndiaAmy Elsner NEGOTIATION
Rodrigues CampainRussiaBernardo Dominic NEGOTIATION
Ashley DoeSpainOnyama Limba PROPOSAL
Leon OldroydUnited KingdomIvan Magalhaes RENEWAL
Emily WhobreyCanadaElwin Sharvill RENEWAL
Sinclair WaycottIndiaAsiya Javayant NEGOTIATION
Ricardo GauchoIndiaIvan Magalhaes PROPOSAL
Aika InouyeRussiaBernardo Dominic NEGOTIATION
Emily WhobreyAustraliaStephen Shaw PROPOSAL
Jones VocelkaArgentinaElwin Sharvill QUALIFIED
Ashley DoeAustraliaBernardo Dominic NEGOTIATION
Misaki RoysterRussiaIoni Bowcher NEGOTIATION
Chavez BriddickIndiaBernardo Dominic PROPOSAL
Adams MorascaRussiaOnyama Limba NEW
Stacey MacleadJapanAnna Fali QUALIFIED
Jones VocelkaSpainAnna Fali UNQUALIFIED
Jones VocelkaAustraliaAnna Fali NEW
Horizontal
NameCountryRepresentativeStatus
Aruna FigeroaRussiaBernardo Dominic RENEWAL
Mayumi KolmetzJapanAmy Elsner NEW
Leon OldroydCanadaIvan Magalhaes PROPOSAL
Sinclair WaycottUnited KingdomStephen Shaw RENEWAL
Izzy GarufiItalyAnna Fali PROPOSAL
Costa DilliardSpainXuxue Feng NEGOTIATION
Kadeem FlosiFranceAmy Elsner PROPOSAL
Rodrigues CampainAustraliaElwin Sharvill PROPOSAL
Arvin AlbaresArgentinaIvan Magalhaes NEW
Aika InouyeCanadaAnna Fali UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Clifford RimSpain2026-06-13Rousseaux, Michael Esq QUALIFIED13Onyama Limba
1001Chavez BriddickGermany2026-05-30Truhlar And Truhlar Attys QUALIFIED67Ioni Bowcher
1002Tony FollerGermany2026-06-04Buckley Miller Wright PROPOSAL44Asiya Javayant
1003Ivar PaprockiGermany2026-05-15King, Christopher A Esq RENEWAL96Bernardo Dominic
1004Maria MarrierRussia2026-05-19Morlong Associates RENEWAL57Anna Fali
1005Alejandro PerinJapan2026-05-30Benton, John B Jr NEW43Elwin Sharvill
1006Juan WieserFrance2026-06-05Morlong Associates PROPOSAL9Ivan Magalhaes
1007Nicolas IturbideBrazil2026-05-29Truhlar And Truhlar Attys QUALIFIED73Xuxue Feng
1008Faith GillianArgentina2026-06-08Rangoni Of Florence NEW53Stephen Shaw
1009Silvio SlusarskiAustralia2026-05-20King, Christopher A Esq RENEWAL76Asiya Javayant
1010Mujtaba NickaItaly2026-06-01Dorl, James J Esq RENEWAL77Bernardo Dominic
1011Kaitlin OstroskyJapan2026-05-15Morlong Associates UNQUALIFIED19Elwin Sharvill
1012Rodrigues CampainRussia2026-05-17Chapman, Ross E Esq NEW31Onyama Limba
1013Misaki RoysterSpain2026-05-25Feltz Printing Service NEGOTIATION7Stephen Shaw
1014Murillo MaletUnited Kingdom2026-05-26Benton, John B Jr NEGOTIATION15Ivan Magalhaes
1015Johnson SergiBrazil2026-05-29Truhlar And Truhlar Attys RENEWAL59Ioni Bowcher
1016Clifford RimItaly2026-05-17Morlong Associates PROPOSAL33Anna Fali
1017Wickens NestleCanada2026-05-24Chapman, Ross E Esq NEW4Amy Elsner
1018Emily WhobreyItaly2026-06-10Truhlar And Truhlar Attys PROPOSAL61Amy Elsner
1019Emily WhobreyGermany2026-05-29Rousseaux, Michael Esq UNQUALIFIED1Anna Fali
1020Cody SaylorsGermany2026-05-17Feiner Bros NEW29Stephen Shaw
1021Maisha RulapaughFrance2026-05-22King, Christopher A Esq NEGOTIATION21Elwin Sharvill
1022Izzy GarufiGermany2026-06-07Chemel, James L Cpa PROPOSAL32Xuxue Feng
1023Maria MarrierBrazil2026-06-02Morlong Associates NEGOTIATION8Anna Fali
1024Izzy GarufiIndia2026-05-19Dorl, James J Esq NEGOTIATION37Asiya Javayant
1025Silvio SlusarskiAustralia2026-05-16Benton, John B Jr NEGOTIATION9Bernardo Dominic
1026Greenwood BologniaFrance2026-05-28Benton, John B Jr RENEWAL28Asiya Javayant
1027Ricardo GauchoFrance2026-06-04Chemel, James L Cpa NEW10Ioni Bowcher
1028Jeanfrancois VenereIndia2026-05-31Benton, John B Jr NEW63Onyama Limba
1029Aditya KuskoGermany2026-06-02Rousseaux, Michael Esq NEW82Ioni Bowcher
1030Johnson SergiArgentina2026-05-31Feiner Bros PROPOSAL76Amy Elsner
1031Silvio SlusarskiArgentina2026-06-05Chemel, James L Cpa QUALIFIED89Onyama Limba
1032Adams MorascaSpain2026-05-29Printing Dimensions NEW44Amy Elsner
1033Silvio SlusarskiCanada2026-06-12Feiner Bros RENEWAL11Onyama Limba
1034Kadeem FlosiAustralia2026-05-22Feltz Printing Service NEGOTIATION18Stephen Shaw
1035Ashley DoeSpain2026-05-30Rangoni Of Florence QUALIFIED67Ivan Magalhaes
1036Isabel BowleyIndia2026-06-10Buckley Miller Wright PROPOSAL76Anna Fali
1037Johnson SergiFrance2026-05-15Printing Dimensions NEGOTIATION21Ioni Bowcher
1038Morrow RutaArgentina2026-05-24Printing Dimensions UNQUALIFIED42Amy Elsner
1039Nicolas IturbideAustralia2026-06-06Chemel, James L Cpa NEGOTIATION25Amy Elsner
1040Johnson SergiCanada2026-06-02Dorl, James J Esq UNQUALIFIED24Anna Fali
1041David DarakjyIndia2026-06-06Rangoni Of Florence NEGOTIATION30Ioni Bowcher
1042Mujtaba NickaRussia2026-06-01Dorl, James J Esq UNQUALIFIED41Xuxue Feng
1043Munro FerenczItaly2026-06-12Dorl, James J Esq RENEWAL49Elwin Sharvill
1044Chavez BriddickSpain2026-05-16Chanay, Jeffrey A Esq PROPOSAL83Stephen Shaw
1045Jefferson SchemmerGermany2026-06-08Benton, John B Jr RENEWAL94Stephen Shaw
1046Kaitlin OstroskyRussia2026-06-05Chemel, James L Cpa QUALIFIED72Stephen Shaw
1047Aruna FigeroaGermany2026-06-04Feltz Printing Service RENEWAL28Elwin Sharvill
1048Emily WhobreyCanada2026-06-09Chapman, Ross E Esq UNQUALIFIED83Xuxue Feng
1049Wickens NestleCanada2026-06-05Dorl, James J Esq NEW74Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Juan WieserItalyAsiya Javayant NEGOTIATION
Salvatore StockhamGermanyStephen Shaw RENEWAL
Misaki RoysterJapanOnyama Limba NEGOTIATION
Mujtaba NickaGermanyStephen Shaw RENEWAL
Francesco ShinkoGermanyAnna Fali NEGOTIATION
Murillo MaletFranceXuxue Feng NEGOTIATION
Adams MorascaIndiaAmy Elsner QUALIFIED
Nicolas IturbideIndiaStephen Shaw PROPOSAL
Tony FollerBrazilBernardo Dominic UNQUALIFIED
Stacey MacleadUnited KingdomOnyama Limba NEGOTIATION
Kadeem FlosiGermanyAsiya Javayant QUALIFIED
Smith GlickItalyAsiya Javayant UNQUALIFIED
Ricardo GauchoJapanAmy Elsner UNQUALIFIED
David DarakjyRussiaAsiya Javayant UNQUALIFIED
Costa DilliardSpainAsiya Javayant QUALIFIED
Murillo MaletFranceAnna Fali NEGOTIATION
Julie StensethSpainElwin Sharvill QUALIFIED
Emily WhobreySpainIoni Bowcher NEGOTIATION
David DarakjySpainIvan Magalhaes QUALIFIED
Salvatore StockhamRussiaAsiya Javayant NEW
David DarakjyFranceBernardo Dominic QUALIFIED
Silvio SlusarskiUnited KingdomIoni Bowcher PROPOSAL
Ricardo GauchoAustraliaIvan Magalhaes NEW
Izzy GarufiFranceOnyama Limba NEGOTIATION
Nicolas IturbideCanadaIoni Bowcher RENEWAL
Jeanfrancois VenereArgentinaElwin Sharvill NEW
Antonio CaudyArgentinaAmy Elsner NEGOTIATION
Smith GlickIndiaAsiya Javayant PROPOSAL
Greenwood BologniaCanadaOnyama Limba UNQUALIFIED
Tony FollerFranceIvan Magalhaes UNQUALIFIED
Antonio CaudyAustraliaBernardo Dominic PROPOSAL
Jennifer AmigonSpainIoni Bowcher QUALIFIED
Mayumi KolmetzJapanAsiya Javayant PROPOSAL
Faith GillianItalyStephen Shaw PROPOSAL
Julie StensethBrazilBernardo Dominic QUALIFIED
James ButtCanadaOnyama Limba PROPOSAL
Octavia MaletUnited KingdomElwin Sharvill RENEWAL
Rodrigues CampainItalyIoni Bowcher UNQUALIFIED
Johnson SergiBrazilXuxue Feng QUALIFIED
Tony FollerJapanXuxue Feng NEW
Izzy GarufiFranceOnyama Limba PROPOSAL
Maria MarrierIndiaAmy Elsner QUALIFIED
Alejandro PerinFranceStephen Shaw RENEWAL
Misaki RoysterUnited KingdomAmy Elsner UNQUALIFIED
Smith GlickCanadaAmy Elsner PROPOSAL
Chavez BriddickArgentinaOnyama Limba NEW
Ashley DoeFranceAmy Elsner PROPOSAL
Sinclair WaycottRussiaAsiya Javayant PROPOSAL
Aruna FigeroaUnited KingdomElwin Sharvill NEW
Adams MorascaFranceElwin Sharvill RENEWAL
Frozen Columns
Name
Jones Vocelka
Aditya Kusko
Alejandro Perin
David Darakjy
Francesco Shinko
Aditya Kusko
Costa Dilliard
Jeanfrancois Venere
Jones Vocelka
Emily Whobrey
Darci Poquette
Darci Poquette
Leja Caldarera
Maria Marrier
Kadeem Flosi
Aruna Figeroa
Costa Dilliard
Munro Ferencz
Alejandro Perin
Kaitlin Ostrosky
Maria Marrier
Mujtaba Nicka
Kadeem Flosi
Mujtaba Nicka
Francesco Shinko
Mayumi Kolmetz
Costa Dilliard
Maria Marrier
Silvio Slusarski
Julie Stenseth
Jennifer Amigon
Jennifer Amigon
Aika Inouye
Tony Foller
Cody Saylors
Stacey Maclead
Ricardo Gaucho
Ashley Doe
Nicolas Iturbide
Jones Vocelka
Juan Wieser
Jeanfrancois Venere
Maisha Rulapaugh
Stacey Maclead
Izzy Garufi
Arvin Albares
Johnson Sergi
Aditya Kusko
Jennifer Amigon
Jones Vocelka
IdCountryDate
1000United Kingdom2026-06-06
1001Germany2026-05-25
1002India2026-06-01
1003France2026-06-08
1004Brazil2026-06-11
1005India2026-05-30
1006Italy2026-06-07
1007Brazil2026-06-06
1008Spain2026-05-26
1009Canada2026-06-10
1010Russia2026-06-02
1011Japan2026-06-09
1012Japan2026-05-19
1013Japan2026-05-15
1014Argentina2026-06-10
1015Spain2026-05-19
1016Argentina2026-06-08
1017Brazil2026-06-09
1018Italy2026-05-20
1019Germany2026-05-22
1020Italy2026-06-06
1021Japan2026-05-17
1022India2026-05-27
1023Argentina2026-05-30
1024Canada2026-05-21
1025India2026-06-06
1026India2026-06-08
1027Argentina2026-06-02
1028Japan2026-06-08
1029India2026-05-29
1030France2026-06-06
1031Brazil2026-06-09
1032Spain2026-06-04
1033Japan2026-05-15
1034Argentina2026-05-18
1035Germany2026-05-19
1036Australia2026-05-18
1037France2026-06-09
1038India2026-05-16
1039Australia2026-06-08
1040Spain2026-05-29
1041Argentina2026-06-10
1042Russia2026-06-09
1043Argentina2026-05-15
1044Argentina2026-06-13
1045Brazil2026-05-29
1046India2026-06-12
1047India2026-06-05
1048Japan2026-05-22
1049Italy2026-05-18

On-Demand Data

NameIdCountryDate
Alejandro Perin1000France2026-06-01
Silvio Slusarski1001Brazil2026-06-10
David Darakjy1002Japan2026-05-20
Maria Marrier1003Russia2026-05-21
Aruna Figeroa1004Australia2026-06-12
Jennifer Amigon1005Spain2026-06-06
Claire Tollner1006Spain2026-05-29
Ricardo Gaucho1007Italy2026-05-25
Ricardo Gaucho1008Russia2026-05-21
Kadeem Flosi1009India2026-05-15
Juan Wieser1010Canada2026-05-16
Kadeem Flosi1011United Kingdom2026-05-30
Mujtaba Nicka1012Japan2026-06-04
Francesco Shinko1013Italy2026-06-06
Emily Whobrey1014France2026-05-19
Julie Stenseth1015India2026-06-04
Jennifer Amigon1016Australia2026-06-08
Costa Dilliard1017Italy2026-05-17
Johnson Sergi1018Argentina2026-05-22
Munro Ferencz1019Argentina2026-06-06
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aika InouyeArgentinaAnna Fali UNQUALIFIED
Juan WieserItalyIoni Bowcher UNQUALIFIED
Salvatore StockhamGermanyAnna Fali QUALIFIED
Misaki RoysterFranceStephen Shaw NEW
Clifford RimIndiaIoni Bowcher RENEWAL
Alejandro PerinUnited KingdomAsiya Javayant QUALIFIED
Maisha RulapaughCanadaAnna Fali NEW
Ashley DoeArgentinaAsiya Javayant RENEWAL
Tony FollerFranceIvan Magalhaes NEGOTIATION
Jefferson SchemmerCanadaAsiya Javayant RENEWAL
Alejandro PerinAustraliaIvan Magalhaes RENEWAL
Mayumi KolmetzFranceBernardo Dominic NEW
Sinclair WaycottSpainIoni Bowcher QUALIFIED
David DarakjyUnited KingdomBernardo Dominic NEW
Faith GillianCanadaXuxue Feng NEW
Rodrigues CampainSpainElwin Sharvill RENEWAL
Jefferson SchemmerUnited KingdomAnna Fali UNQUALIFIED
James ButtGermanyIoni Bowcher QUALIFIED
Chavez BriddickGermanyAmy Elsner PROPOSAL
Greenwood BologniaFranceStephen Shaw RENEWAL
Emily WhobreyIndiaIoni Bowcher NEW
Isabel BowleyItalyAmy Elsner PROPOSAL
Ivar PaprockiIndiaElwin Sharvill NEGOTIATION
James ButtSpainXuxue Feng PROPOSAL
Murillo MaletSpainBernardo Dominic RENEWAL
Aruna FigeroaAustraliaBernardo Dominic QUALIFIED
Deepesh ChuiAustraliaIoni Bowcher PROPOSAL
Jeanfrancois VenereArgentinaAnna Fali NEW
Juan WieserJapanStephen Shaw UNQUALIFIED
Isabel BowleyUnited KingdomBernardo Dominic NEGOTIATION
Leja CaldareraSpainElwin Sharvill NEGOTIATION
Smith GlickUnited KingdomElwin Sharvill QUALIFIED
Jennifer AmigonRussiaIoni Bowcher RENEWAL
Maisha RulapaughCanadaIoni Bowcher PROPOSAL
Isabel BowleyItalyElwin Sharvill NEGOTIATION
Octavia MaletItalyXuxue Feng RENEWAL
Chavez BriddickSpainAnna Fali NEW
Morrow RutaGermanyAnna Fali RENEWAL
Aika InouyeUnited KingdomIoni Bowcher QUALIFIED
Darci PoquetteJapanBernardo Dominic 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>