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
Jeanfrancois VenereBrazilOnyama Limba UNQUALIFIED
Maria MarrierArgentinaAnna Fali NEGOTIATION
Darci PoquetteArgentinaIvan Magalhaes QUALIFIED
Mujtaba NickaIndiaXuxue Feng UNQUALIFIED
Faith GillianSpainAmy Elsner NEW
Salvatore StockhamBrazilIvan Magalhaes QUALIFIED
Clifford RimGermanyOnyama Limba NEGOTIATION
Cody SaylorsCanadaAnna Fali PROPOSAL
Ricardo GauchoItalyAmy Elsner QUALIFIED
Arvin AlbaresAustraliaElwin Sharvill QUALIFIED
Adams MorascaIndiaAmy Elsner QUALIFIED
Wickens NestleUnited KingdomStephen Shaw NEW
Maisha RulapaughAustraliaXuxue Feng QUALIFIED
Antonio CaudyRussiaAsiya Javayant UNQUALIFIED
Jennifer AmigonGermanyOnyama Limba UNQUALIFIED
Morrow RutaUnited KingdomXuxue Feng PROPOSAL
Isabel BowleyItalyAsiya Javayant NEGOTIATION
Greenwood BologniaFranceOnyama Limba NEW
Maria MarrierUnited KingdomAsiya Javayant UNQUALIFIED
Emily WhobreySpainAmy Elsner RENEWAL
Faith GillianFranceElwin Sharvill NEGOTIATION
Antonio CaudyItalyBernardo Dominic NEW
Adams MorascaIndiaIoni Bowcher PROPOSAL
Chavez BriddickBrazilStephen Shaw NEW
Arvin AlbaresIndiaAmy Elsner UNQUALIFIED
Cody SaylorsItalyIoni Bowcher UNQUALIFIED
Ashley DoeFranceElwin Sharvill NEW
Murillo MaletSpainElwin Sharvill NEGOTIATION
Salvatore StockhamGermanyIvan Magalhaes UNQUALIFIED
Aditya KuskoUnited KingdomIvan Magalhaes NEGOTIATION
Aditya KuskoCanadaIoni Bowcher NEGOTIATION
Salvatore StockhamUnited KingdomIvan Magalhaes NEGOTIATION
Faith GillianSpainAsiya Javayant QUALIFIED
Jefferson SchemmerUnited KingdomIoni Bowcher UNQUALIFIED
Sinclair WaycottArgentinaXuxue Feng UNQUALIFIED
Ivar PaprockiGermanyAsiya Javayant NEW
Deepesh ChuiJapanAmy Elsner PROPOSAL
Jefferson SchemmerGermanyAsiya Javayant QUALIFIED
Leon OldroydSpainOnyama Limba RENEWAL
Jennifer AmigonSpainIoni Bowcher UNQUALIFIED
Morrow RutaCanadaIvan Magalhaes NEGOTIATION
Costa DilliardJapanOnyama Limba NEW
Ricardo GauchoBrazilAnna Fali PROPOSAL
Maria MarrierBrazilOnyama Limba UNQUALIFIED
Costa DilliardArgentinaAmy Elsner RENEWAL
Arvin AlbaresFranceStephen Shaw PROPOSAL
Arvin AlbaresJapanStephen Shaw PROPOSAL
Adams MorascaArgentinaIoni Bowcher UNQUALIFIED
Rodrigues CampainAustraliaAnna Fali NEW
Leon OldroydGermanyOnyama Limba NEW
Horizontal
NameCountryRepresentativeStatus
Deepesh ChuiRussiaXuxue Feng NEGOTIATION
Francesco ShinkoJapanOnyama Limba UNQUALIFIED
Julie StensethJapanAmy Elsner UNQUALIFIED
Cody SaylorsSpainIvan Magalhaes NEW
Clifford RimItalyElwin Sharvill UNQUALIFIED
Clifford RimFranceOnyama Limba PROPOSAL
Munro FerenczFranceElwin Sharvill RENEWAL
Rodrigues CampainRussiaAnna Fali QUALIFIED
Ricardo GauchoIndiaIvan Magalhaes NEW
Chavez BriddickRussiaIvan Magalhaes UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Wickens NestleItaly2025-09-10Commercial Press QUALIFIED4Onyama Limba
1001Izzy GarufiIndia2025-09-18King, Christopher A Esq NEW18Asiya Javayant
1002Ivar PaprockiBrazil2025-09-22Chapman, Ross E Esq NEGOTIATION65Bernardo Dominic
1003Arvin AlbaresSpain2025-08-24Rangoni Of Florence UNQUALIFIED64Asiya Javayant
1004Chavez BriddickCanada2025-09-21Buckley Miller Wright RENEWAL6Elwin Sharvill
1005Greenwood BologniaArgentina2025-08-24Chanay, Jeffrey A Esq PROPOSAL17Onyama Limba
1006Johnson SergiUnited Kingdom2025-09-02Morlong Associates QUALIFIED54Amy Elsner
1007Jones VocelkaUnited Kingdom2025-09-04Commercial Press NEW29Amy Elsner
1008Ivar PaprockiCanada2025-09-13Feiner Bros UNQUALIFIED70Amy Elsner
1009Darci PoquetteRussia2025-09-19Dorl, James J Esq UNQUALIFIED22Anna Fali
1010Faith GillianAustralia2025-09-01Benton, John B Jr QUALIFIED87Asiya Javayant
1011Maria MarrierCanada2025-08-28Printing Dimensions PROPOSAL68Ivan Magalhaes
1012Julie StensethUnited Kingdom2025-09-15Benton, John B Jr RENEWAL31Asiya Javayant
1013Wickens NestleFrance2025-09-14Commercial Press NEGOTIATION8Ivan Magalhaes
1014Octavia MaletGermany2025-09-07Chanay, Jeffrey A Esq NEW68Elwin Sharvill
1015Costa DilliardItaly2025-09-07Morlong Associates PROPOSAL11Asiya Javayant
1016Claire TollnerRussia2025-09-08Feiner Bros NEW51Bernardo Dominic
1017Leon OldroydBrazil2025-08-27Rangoni Of Florence UNQUALIFIED86Anna Fali
1018Antonio CaudyFrance2025-09-16Buckley Miller Wright UNQUALIFIED19Amy Elsner
1019Aruna FigeroaSpain2025-08-30King, Christopher A Esq UNQUALIFIED27Ioni Bowcher
1020Jennifer AmigonFrance2025-08-31Truhlar And Truhlar Attys UNQUALIFIED35Stephen Shaw
1021Morrow RutaUnited Kingdom2025-09-10Truhlar And Truhlar Attys NEGOTIATION23Onyama Limba
1022Izzy GarufiFrance2025-09-02Benton, John B Jr NEW13Amy Elsner
1023Aditya KuskoGermany2025-09-08Feltz Printing Service UNQUALIFIED15Onyama Limba
1024Maria MarrierArgentina2025-09-11Truhlar And Truhlar Attys PROPOSAL4Amy Elsner
1025Leja CaldareraCanada2025-09-12Benton, John B Jr QUALIFIED80Bernardo Dominic
1026Ricardo GauchoUnited Kingdom2025-08-31Feiner Bros QUALIFIED28Ioni Bowcher
1027Johnson SergiBrazil2025-09-13Feltz Printing Service QUALIFIED44Ioni Bowcher
1028Misaki RoysterCanada2025-09-16Truhlar And Truhlar Attys RENEWAL43Elwin Sharvill
1029Jennifer AmigonBrazil2025-09-15Rangoni Of Florence RENEWAL35Asiya Javayant
1030Nicolas IturbideAustralia2025-08-26Rousseaux, Michael Esq RENEWAL6Stephen Shaw
1031Nicolas IturbideAustralia2025-08-28Chapman, Ross E Esq UNQUALIFIED10Xuxue Feng
1032Leon OldroydRussia2025-09-05Chanay, Jeffrey A Esq NEW74Ivan Magalhaes
1033Nicolas IturbideUnited Kingdom2025-09-19Commercial Press NEGOTIATION20Elwin Sharvill
1034Johnson SergiItaly2025-08-30Feltz Printing Service UNQUALIFIED83Amy Elsner
1035Costa DilliardUnited Kingdom2025-09-06Commercial Press NEW65Elwin Sharvill
1036Rodrigues CampainBrazil2025-08-26Rangoni Of Florence NEGOTIATION77Anna Fali
1037Ivar PaprockiFrance2025-09-20Commercial Press RENEWAL39Ioni Bowcher
1038Aruna FigeroaRussia2025-09-07King, Christopher A Esq PROPOSAL54Bernardo Dominic
1039Clifford RimJapan2025-08-27Commercial Press NEW5Onyama Limba
1040Adams MorascaGermany2025-09-11Commercial Press NEGOTIATION40Asiya Javayant
1041Antonio CaudyJapan2025-09-08Chapman, Ross E Esq NEGOTIATION88Bernardo Dominic
1042Wickens NestleGermany2025-08-28Feltz Printing Service UNQUALIFIED88Asiya Javayant
1043Darci PoquetteAustralia2025-08-24Truhlar And Truhlar Attys UNQUALIFIED99Amy Elsner
1044Ashley DoeFrance2025-09-03Dorl, James J Esq NEW18Xuxue Feng
1045Morrow RutaGermany2025-09-22Commercial Press QUALIFIED59Anna Fali
1046Adams MorascaFrance2025-09-17Feiner Bros RENEWAL30Bernardo Dominic
1047David DarakjyGermany2025-09-19Rangoni Of Florence UNQUALIFIED91Onyama Limba
1048Chavez BriddickSpain2025-09-16Feiner Bros QUALIFIED61Bernardo Dominic
1049Munro FerenczGermany2025-09-21Truhlar And Truhlar Attys UNQUALIFIED64Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Ricardo GauchoSpainAmy Elsner UNQUALIFIED
Cody SaylorsIndiaOnyama Limba NEW
Kadeem FlosiIndiaXuxue Feng UNQUALIFIED
Ashley DoeJapanIvan Magalhaes RENEWAL
Jones VocelkaIndiaOnyama Limba RENEWAL
Rodrigues CampainItalyStephen Shaw NEGOTIATION
Aika InouyeAustraliaOnyama Limba NEW
Arvin AlbaresRussiaAsiya Javayant RENEWAL
Faith GillianAustraliaStephen Shaw RENEWAL
James ButtAustraliaAnna Fali PROPOSAL
Ashley DoeUnited KingdomAmy Elsner NEW
Stacey MacleadCanadaXuxue Feng QUALIFIED
Salvatore StockhamGermanyXuxue Feng UNQUALIFIED
Claire TollnerUnited KingdomElwin Sharvill RENEWAL
Alejandro PerinAustraliaOnyama Limba UNQUALIFIED
Arvin AlbaresRussiaXuxue Feng NEW
Johnson SergiIndiaBernardo Dominic NEGOTIATION
Wickens NestleCanadaIoni Bowcher RENEWAL
Nicolas IturbideAustraliaOnyama Limba RENEWAL
Wickens NestleJapanIvan Magalhaes QUALIFIED
Jeanfrancois VenereIndiaXuxue Feng UNQUALIFIED
Stacey MacleadIndiaAnna Fali UNQUALIFIED
Ivar PaprockiUnited KingdomElwin Sharvill RENEWAL
Leon OldroydAustraliaIoni Bowcher NEGOTIATION
Greenwood BologniaJapanOnyama Limba NEW
Aruna FigeroaGermanyXuxue Feng PROPOSAL
Emily WhobreyRussiaIoni Bowcher UNQUALIFIED
Johnson SergiSpainAnna Fali QUALIFIED
Faith GillianCanadaAsiya Javayant NEGOTIATION
Greenwood BologniaItalyXuxue Feng RENEWAL
Smith GlickIndiaBernardo Dominic QUALIFIED
Julie StensethAustraliaOnyama Limba NEGOTIATION
Munro FerenczSpainStephen Shaw NEGOTIATION
Leon OldroydGermanyXuxue Feng RENEWAL
Izzy GarufiBrazilAsiya Javayant UNQUALIFIED
Munro FerenczSpainElwin Sharvill QUALIFIED
Leja CaldareraIndiaStephen Shaw QUALIFIED
Claire TollnerCanadaIvan Magalhaes QUALIFIED
Isabel BowleyRussiaStephen Shaw UNQUALIFIED
Greenwood BologniaAustraliaBernardo Dominic UNQUALIFIED
Mayumi KolmetzCanadaIoni Bowcher UNQUALIFIED
Mayumi KolmetzAustraliaIoni Bowcher QUALIFIED
Wickens NestleBrazilBernardo Dominic NEW
Smith GlickArgentinaBernardo Dominic PROPOSAL
Ashley DoeAustraliaIvan Magalhaes NEGOTIATION
Silvio SlusarskiItalyXuxue Feng NEW
Stacey MacleadAustraliaElwin Sharvill PROPOSAL
David DarakjyAustraliaAnna Fali QUALIFIED
Aruna FigeroaArgentinaBernardo Dominic PROPOSAL
Deepesh ChuiJapanOnyama Limba PROPOSAL
Frozen Columns
Name
Aditya Kusko
Cody Saylors
Nicolas Iturbide
Smith Glick
Jefferson Schemmer
Morrow Ruta
Francesco Shinko
Emily Whobrey
Maisha Rulapaugh
Costa Dilliard
Francesco Shinko
Arvin Albares
Jennifer Amigon
Francesco Shinko
Aruna Figeroa
Chavez Briddick
Costa Dilliard
Maria Marrier
Maria Marrier
Cody Saylors
Costa Dilliard
Ashley Doe
Claire Tollner
Costa Dilliard
Ashley Doe
Kadeem Flosi
Antonio Caudy
Leon Oldroyd
Johnson Sergi
Tony Foller
Aditya Kusko
Morrow Ruta
Ivar Paprocki
James Butt
Maria Marrier
James Butt
Izzy Garufi
Costa Dilliard
Murillo Malet
Clifford Rim
Isabel Bowley
Jennifer Amigon
Deepesh Chui
Kadeem Flosi
Francesco Shinko
Ricardo Gaucho
Francesco Shinko
Jefferson Schemmer
Rodrigues Campain
Aruna Figeroa
IdCountryDate
1000Brazil2025-09-09
1001Italy2025-08-27
1002India2025-08-31
1003India2025-09-08
1004Russia2025-08-27
1005Italy2025-08-26
1006Japan2025-08-26
1007Germany2025-09-20
1008Russia2025-09-07
1009Japan2025-09-17
1010Australia2025-09-07
1011France2025-09-06
1012Japan2025-09-06
1013France2025-09-17
1014Australia2025-09-13
1015Russia2025-09-16
1016Japan2025-08-29
1017Australia2025-08-24
1018Brazil2025-09-12
1019Russia2025-09-20
1020Argentina2025-09-12
1021India2025-09-17
1022Australia2025-09-13
1023Australia2025-09-15
1024France2025-08-25
1025Brazil2025-09-15
1026Russia2025-09-05
1027France2025-09-05
1028Australia2025-08-31
1029India2025-09-02
1030Argentina2025-09-10
1031France2025-09-20
1032United Kingdom2025-09-22
1033Spain2025-08-26
1034India2025-08-30
1035Brazil2025-09-03
1036Brazil2025-09-08
1037Argentina2025-09-01
1038Spain2025-09-06
1039United Kingdom2025-09-08
1040Brazil2025-09-17
1041United Kingdom2025-08-29
1042Germany2025-08-28
1043India2025-09-01
1044Italy2025-09-01
1045Italy2025-08-27
1046Brazil2025-09-09
1047Canada2025-08-25
1048Italy2025-09-16
1049Brazil2025-08-24

On-Demand Data

NameIdCountryDate
Cody Saylors1000Brazil2025-08-29
Cody Saylors1001Spain2025-09-14
Claire Tollner1002Germany2025-09-20
Smith Glick1003Spain2025-09-09
Morrow Ruta1004France2025-09-12
Claire Tollner1005Canada2025-09-08
Adams Morasca1006Canada2025-09-13
Deepesh Chui1007Italy2025-09-19
Julie Stenseth1008Spain2025-09-17
David Darakjy1009Italy2025-09-08
Smith Glick1010Argentina2025-08-26
Maisha Rulapaugh1011France2025-08-31
Ivar Paprocki1012Australia2025-09-07
Morrow Ruta1013France2025-09-09
James Butt1014Spain2025-09-18
Adams Morasca1015Argentina2025-08-26
Mujtaba Nicka1016Russia2025-09-20
Emily Whobrey1017Germany2025-09-05
Darci Poquette1018Spain2025-09-11
Octavia Malet1019United Kingdom2025-09-05
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Arvin AlbaresArgentinaAsiya Javayant RENEWAL
Tony FollerGermanyXuxue Feng QUALIFIED
Leon OldroydUnited KingdomElwin Sharvill PROPOSAL
Leja CaldareraArgentinaElwin Sharvill QUALIFIED
Jefferson SchemmerUnited KingdomElwin Sharvill QUALIFIED
Mujtaba NickaBrazilBernardo Dominic UNQUALIFIED
Misaki RoysterJapanXuxue Feng PROPOSAL
Maria MarrierRussiaAnna Fali UNQUALIFIED
Wickens NestleArgentinaStephen Shaw QUALIFIED
Adams MorascaSpainStephen Shaw RENEWAL
Jefferson SchemmerCanadaAmy Elsner NEGOTIATION
Greenwood BologniaSpainIoni Bowcher RENEWAL
Misaki RoysterRussiaAsiya Javayant RENEWAL
Leja CaldareraGermanyElwin Sharvill NEW
Faith GillianItalyElwin Sharvill UNQUALIFIED
Faith GillianJapanAmy Elsner NEGOTIATION
Smith GlickBrazilBernardo Dominic QUALIFIED
Leon OldroydIndiaBernardo Dominic UNQUALIFIED
Alejandro PerinArgentinaStephen Shaw UNQUALIFIED
Darci PoquetteAustraliaXuxue Feng QUALIFIED
Jeanfrancois VenereRussiaIoni Bowcher PROPOSAL
Mujtaba NickaAustraliaAnna Fali NEGOTIATION
Julie StensethArgentinaAsiya Javayant NEW
Aika InouyeIndiaIvan Magalhaes RENEWAL
Arvin AlbaresGermanyStephen Shaw NEGOTIATION
Izzy GarufiJapanStephen Shaw UNQUALIFIED
Antonio CaudyCanadaAmy Elsner NEW
Jeanfrancois VenereGermanyAmy Elsner NEW
Mujtaba NickaFranceIvan Magalhaes QUALIFIED
Chavez BriddickGermanyIoni Bowcher PROPOSAL
Smith GlickFranceStephen Shaw NEGOTIATION
Salvatore StockhamCanadaIoni Bowcher PROPOSAL
Wickens NestleAustraliaIoni Bowcher QUALIFIED
Deepesh ChuiBrazilElwin Sharvill PROPOSAL
Misaki RoysterRussiaAnna Fali NEW
Emily WhobreyJapanStephen Shaw NEW
Aika InouyeSpainAsiya Javayant QUALIFIED
Chavez BriddickRussiaIvan Magalhaes RENEWAL
Ivar PaprockiArgentinaIvan Magalhaes NEW
Ashley DoeSpainAmy Elsner UNQUALIFIED

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