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 VenereUnited KingdomXuxue Feng PROPOSAL
Aruna FigeroaItalyBernardo Dominic NEGOTIATION
Ashley DoeCanadaIvan Magalhaes QUALIFIED
Octavia MaletSpainAsiya Javayant PROPOSAL
James ButtItalyOnyama Limba PROPOSAL
Claire TollnerFranceAmy Elsner QUALIFIED
Faith GillianUnited KingdomIvan Magalhaes NEGOTIATION
Stacey MacleadUnited KingdomElwin Sharvill NEW
Nicolas IturbideCanadaIoni Bowcher NEW
Arvin AlbaresFranceBernardo Dominic PROPOSAL
Maria MarrierJapanXuxue Feng NEGOTIATION
Izzy GarufiSpainAmy Elsner RENEWAL
Octavia MaletCanadaIoni Bowcher QUALIFIED
Smith GlickRussiaAsiya Javayant UNQUALIFIED
Kadeem FlosiAustraliaIvan Magalhaes PROPOSAL
Murillo MaletCanadaIvan Magalhaes UNQUALIFIED
Juan WieserGermanyXuxue Feng PROPOSAL
Ricardo GauchoGermanyStephen Shaw QUALIFIED
James ButtRussiaOnyama Limba UNQUALIFIED
Salvatore StockhamCanadaOnyama Limba QUALIFIED
Ashley DoeSpainOnyama Limba PROPOSAL
Mujtaba NickaArgentinaIvan Magalhaes PROPOSAL
Claire TollnerFranceIvan Magalhaes QUALIFIED
Maisha RulapaughFranceElwin Sharvill RENEWAL
Rodrigues CampainCanadaXuxue Feng QUALIFIED
James ButtJapanAnna Fali PROPOSAL
Alejandro PerinGermanyOnyama Limba RENEWAL
Antonio CaudyUnited KingdomXuxue Feng RENEWAL
Leja CaldareraUnited KingdomElwin Sharvill NEGOTIATION
Juan WieserIndiaOnyama Limba NEGOTIATION
Octavia MaletArgentinaXuxue Feng NEW
Jeanfrancois VenereFranceAnna Fali NEW
Aika InouyeUnited KingdomAnna Fali RENEWAL
Aditya KuskoFranceOnyama Limba NEW
Smith GlickJapanIvan Magalhaes RENEWAL
Alejandro PerinFranceAmy Elsner PROPOSAL
Julie StensethJapanXuxue Feng NEGOTIATION
Jennifer AmigonCanadaAnna Fali NEW
Leja CaldareraRussiaStephen Shaw NEGOTIATION
Isabel BowleyGermanyStephen Shaw UNQUALIFIED
James ButtCanadaIoni Bowcher RENEWAL
Ashley DoeAustraliaIvan Magalhaes RENEWAL
Stacey MacleadIndiaAnna Fali NEGOTIATION
Tony FollerJapanAmy Elsner RENEWAL
Jefferson SchemmerFranceIoni Bowcher UNQUALIFIED
Jefferson SchemmerGermanyIvan Magalhaes NEW
Kadeem FlosiUnited KingdomIvan Magalhaes RENEWAL
Octavia MaletFranceIoni Bowcher NEGOTIATION
Leja CaldareraSpainIvan Magalhaes NEGOTIATION
Leon OldroydArgentinaXuxue Feng PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Mayumi KolmetzSpainElwin Sharvill UNQUALIFIED
Antonio CaudyGermanyIvan Magalhaes RENEWAL
Sinclair WaycottBrazilXuxue Feng RENEWAL
Nicolas IturbideAustraliaElwin Sharvill PROPOSAL
Chavez BriddickArgentinaAsiya Javayant PROPOSAL
Misaki RoysterItalyBernardo Dominic RENEWAL
Ashley DoeAustraliaOnyama Limba QUALIFIED
Morrow RutaArgentinaIoni Bowcher NEW
Juan WieserSpainElwin Sharvill RENEWAL
Francesco ShinkoJapanXuxue Feng QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Clifford RimCanada2026-04-28Rangoni Of Florence NEW18Xuxue Feng
1001Smith GlickBrazil2026-04-19King, Christopher A Esq PROPOSAL60Elwin Sharvill
1002Murillo MaletFrance2026-05-08Morlong Associates RENEWAL34Stephen Shaw
1003Claire TollnerUnited Kingdom2026-04-20Chapman, Ross E Esq NEGOTIATION74Anna Fali
1004Leon OldroydItaly2026-04-23Morlong Associates RENEWAL14Elwin Sharvill
1005Jefferson SchemmerItaly2026-04-22Rousseaux, Michael Esq UNQUALIFIED46Ivan Magalhaes
1006Alejandro PerinAustralia2026-05-01Buckley Miller Wright NEGOTIATION62Ioni Bowcher
1007Salvatore StockhamFrance2026-04-21Rangoni Of Florence NEGOTIATION65Ioni Bowcher
1008Emily WhobreyArgentina2026-04-15King, Christopher A Esq NEGOTIATION75Amy Elsner
1009Leja CaldareraBrazil2026-04-14Chanay, Jeffrey A Esq NEW4Ivan Magalhaes
1010Octavia MaletItaly2026-04-12Feiner Bros NEGOTIATION52Ivan Magalhaes
1011Arvin AlbaresArgentina2026-05-05King, Christopher A Esq UNQUALIFIED88Ivan Magalhaes
1012James ButtBrazil2026-04-30Buckley Miller Wright NEGOTIATION8Xuxue Feng
1013Adams MorascaUnited Kingdom2026-04-15Feltz Printing Service QUALIFIED60Elwin Sharvill
1014Jones VocelkaRussia2026-04-14Rousseaux, Michael Esq NEGOTIATION46Amy Elsner
1015Morrow RutaRussia2026-04-19Commercial Press UNQUALIFIED37Onyama Limba
1016Juan WieserCanada2026-05-10Chemel, James L Cpa NEW24Elwin Sharvill
1017Wickens NestleCanada2026-05-07Morlong Associates NEW2Ioni Bowcher
1018Cody SaylorsJapan2026-05-01Benton, John B Jr RENEWAL82Elwin Sharvill
1019Ivar PaprockiFrance2026-05-02Chanay, Jeffrey A Esq NEW10Amy Elsner
1020Tony FollerSpain2026-05-09Benton, John B Jr NEGOTIATION71Elwin Sharvill
1021Arvin AlbaresArgentina2026-04-15Rangoni Of Florence NEW35Anna Fali
1022Antonio CaudyFrance2026-04-20Printing Dimensions NEGOTIATION13Amy Elsner
1023Izzy GarufiUnited Kingdom2026-04-22Rangoni Of Florence NEGOTIATION67Bernardo Dominic
1024Greenwood BologniaGermany2026-05-01Chanay, Jeffrey A Esq RENEWAL64Onyama Limba
1025Sinclair WaycottSpain2026-04-18Chemel, James L Cpa NEW33Ivan Magalhaes
1026Emily WhobreyFrance2026-04-28Chemel, James L Cpa RENEWAL48Xuxue Feng
1027Costa DilliardCanada2026-05-01Chanay, Jeffrey A Esq NEGOTIATION55Asiya Javayant
1028Silvio SlusarskiAustralia2026-05-02Buckley Miller Wright QUALIFIED51Asiya Javayant
1029Sinclair WaycottArgentina2026-04-19Dorl, James J Esq UNQUALIFIED90Elwin Sharvill
1030Claire TollnerJapan2026-04-26Feiner Bros RENEWAL60Asiya Javayant
1031Darci PoquetteCanada2026-04-18Feltz Printing Service QUALIFIED51Xuxue Feng
1032Tony FollerItaly2026-05-02Dorl, James J Esq UNQUALIFIED97Amy Elsner
1033Tony FollerBrazil2026-05-02Rousseaux, Michael Esq UNQUALIFIED88Elwin Sharvill
1034Arvin AlbaresSpain2026-04-26Printing Dimensions UNQUALIFIED11Ivan Magalhaes
1035Greenwood BologniaRussia2026-04-19Morlong Associates RENEWAL97Asiya Javayant
1036Mujtaba NickaAustralia2026-04-22Feiner Bros RENEWAL63Stephen Shaw
1037Leon OldroydIndia2026-04-28Truhlar And Truhlar Attys NEW77Asiya Javayant
1038Izzy GarufiItaly2026-05-08Buckley Miller Wright NEW80Bernardo Dominic
1039Greenwood BologniaJapan2026-04-19Rousseaux, Michael Esq RENEWAL52Amy Elsner
1040Ashley DoeCanada2026-04-13Chanay, Jeffrey A Esq QUALIFIED26Bernardo Dominic
1041Wickens NestleBrazil2026-04-16Rousseaux, Michael Esq UNQUALIFIED78Ivan Magalhaes
1042Sinclair WaycottItaly2026-04-21Dorl, James J Esq RENEWAL62Ivan Magalhaes
1043Julie StensethUnited Kingdom2026-04-24Chanay, Jeffrey A Esq UNQUALIFIED13Stephen Shaw
1044Cody SaylorsSpain2026-05-01Dorl, James J Esq RENEWAL74Ioni Bowcher
1045Julie StensethRussia2026-04-15Printing Dimensions RENEWAL71Ivan Magalhaes
1046Salvatore StockhamJapan2026-05-02Feltz Printing Service NEGOTIATION76Anna Fali
1047Misaki RoysterUnited Kingdom2026-04-17Printing Dimensions UNQUALIFIED37Stephen Shaw
1048Salvatore StockhamJapan2026-04-14Feiner Bros NEW82Elwin Sharvill
1049Silvio SlusarskiBrazil2026-04-26Feltz Printing Service PROPOSAL20Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Ivar PaprockiUnited KingdomAnna Fali NEGOTIATION
Deepesh ChuiCanadaXuxue Feng NEGOTIATION
Isabel BowleyUnited KingdomXuxue Feng PROPOSAL
Clifford RimIndiaAnna Fali PROPOSAL
Aruna FigeroaBrazilIvan Magalhaes RENEWAL
Misaki RoysterUnited KingdomAsiya Javayant UNQUALIFIED
Jennifer AmigonCanadaAsiya Javayant NEW
Adams MorascaSpainBernardo Dominic UNQUALIFIED
Greenwood BologniaCanadaElwin Sharvill NEGOTIATION
Stacey MacleadUnited KingdomElwin Sharvill NEW
Julie StensethRussiaOnyama Limba NEGOTIATION
Morrow RutaFranceIvan Magalhaes RENEWAL
Emily WhobreyJapanStephen Shaw NEGOTIATION
Mayumi KolmetzJapanStephen Shaw NEGOTIATION
Tony FollerArgentinaElwin Sharvill UNQUALIFIED
Maisha RulapaughCanadaAnna Fali NEW
Leja CaldareraCanadaIvan Magalhaes UNQUALIFIED
David DarakjyAustraliaBernardo Dominic NEW
Isabel BowleyUnited KingdomStephen Shaw NEGOTIATION
Misaki RoysterBrazilIvan Magalhaes NEW
Rodrigues CampainBrazilStephen Shaw PROPOSAL
Aditya KuskoRussiaAsiya Javayant QUALIFIED
Leon OldroydSpainIoni Bowcher UNQUALIFIED
Isabel BowleyIndiaAmy Elsner PROPOSAL
Cody SaylorsAustraliaIvan Magalhaes RENEWAL
Cody SaylorsCanadaOnyama Limba QUALIFIED
Nicolas IturbideAustraliaIoni Bowcher QUALIFIED
Morrow RutaGermanyAsiya Javayant UNQUALIFIED
Nicolas IturbideItalyAmy Elsner NEW
Jones VocelkaAustraliaIoni Bowcher NEGOTIATION
Nicolas IturbideUnited KingdomBernardo Dominic QUALIFIED
Faith GillianArgentinaElwin Sharvill NEGOTIATION
Mujtaba NickaSpainAnna Fali NEW
Wickens NestleSpainAmy Elsner QUALIFIED
Aika InouyeFranceAmy Elsner UNQUALIFIED
David DarakjyFranceAmy Elsner RENEWAL
David DarakjyUnited KingdomAnna Fali NEGOTIATION
Chavez BriddickJapanAmy Elsner PROPOSAL
Darci PoquetteJapanBernardo Dominic NEW
Morrow RutaJapanBernardo Dominic NEGOTIATION
Kaitlin OstroskyCanadaOnyama Limba RENEWAL
Aika InouyeJapanXuxue Feng UNQUALIFIED
Jefferson SchemmerItalyAnna Fali NEW
Maria MarrierIndiaXuxue Feng QUALIFIED
Isabel BowleyArgentinaIvan Magalhaes UNQUALIFIED
Arvin AlbaresCanadaAnna Fali NEGOTIATION
Maisha RulapaughBrazilIvan Magalhaes QUALIFIED
Costa DilliardArgentinaStephen Shaw RENEWAL
Greenwood BologniaUnited KingdomAmy Elsner RENEWAL
Isabel BowleyBrazilIvan Magalhaes UNQUALIFIED
Frozen Columns
Name
James Butt
Darci Poquette
Kadeem Flosi
Francesco Shinko
Wickens Nestle
Johnson Sergi
Leon Oldroyd
Kaitlin Ostrosky
Salvatore Stockham
Munro Ferencz
Kadeem Flosi
Izzy Garufi
Claire Tollner
Jones Vocelka
Costa Dilliard
Mujtaba Nicka
Izzy Garufi
Sinclair Waycott
Mujtaba Nicka
Juan Wieser
Jones Vocelka
Alejandro Perin
Salvatore Stockham
Misaki Royster
Ivar Paprocki
Salvatore Stockham
Mayumi Kolmetz
Adams Morasca
Julie Stenseth
James Butt
Octavia Malet
Smith Glick
Antonio Caudy
Octavia Malet
Clifford Rim
Nicolas Iturbide
Smith Glick
Ricardo Gaucho
Faith Gillian
Munro Ferencz
Costa Dilliard
Mujtaba Nicka
Ivar Paprocki
Faith Gillian
Arvin Albares
Julie Stenseth
Faith Gillian
Izzy Garufi
Rodrigues Campain
Claire Tollner
IdCountryDate
1000United Kingdom2026-04-30
1001Italy2026-04-24
1002Canada2026-04-28
1003United Kingdom2026-04-30
1004Australia2026-04-25
1005Japan2026-04-28
1006India2026-05-07
1007Japan2026-04-20
1008France2026-05-08
1009Italy2026-04-27
1010India2026-05-07
1011India2026-05-04
1012Spain2026-04-26
1013Italy2026-04-24
1014India2026-04-17
1015Russia2026-04-30
1016Brazil2026-04-17
1017India2026-05-05
1018Japan2026-04-13
1019Brazil2026-04-26
1020Spain2026-05-09
1021Russia2026-05-02
1022Japan2026-04-29
1023Argentina2026-04-16
1024Japan2026-04-26
1025Spain2026-05-07
1026United Kingdom2026-05-06
1027Italy2026-04-28
1028Germany2026-05-10
1029Italy2026-05-10
1030Spain2026-04-26
1031Spain2026-05-04
1032Australia2026-05-04
1033Russia2026-04-19
1034Canada2026-04-27
1035Canada2026-04-17
1036Argentina2026-05-05
1037Argentina2026-04-15
1038Russia2026-04-20
1039Canada2026-04-13
1040Russia2026-04-29
1041Germany2026-04-14
1042Australia2026-04-17
1043India2026-04-11
1044Australia2026-05-04
1045Australia2026-05-09
1046France2026-04-13
1047Spain2026-04-13
1048Argentina2026-05-08
1049Russia2026-05-07

On-Demand Data

NameIdCountryDate
Francesco Shinko1000France2026-05-10
Stacey Maclead1001Russia2026-05-01
Kadeem Flosi1002Japan2026-05-01
Faith Gillian1003Brazil2026-04-19
Aika Inouye1004India2026-04-20
Sinclair Waycott1005Russia2026-04-23
Arvin Albares1006Brazil2026-04-23
James Butt1007United Kingdom2026-05-05
David Darakjy1008Argentina2026-04-23
Leon Oldroyd1009Argentina2026-04-27
Murillo Malet1010Spain2026-05-10
Adams Morasca1011Australia2026-04-15
Munro Ferencz1012Germany2026-04-25
Misaki Royster1013Canada2026-05-08
Deepesh Chui1014France2026-04-25
Ashley Doe1015India2026-04-17
David Darakjy1016Germany2026-04-11
Aditya Kusko1017Canada2026-04-27
Stacey Maclead1018Russia2026-05-09
Clifford Rim1019Brazil2026-04-23
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Cody SaylorsItalyBernardo Dominic RENEWAL
Julie StensethCanadaElwin Sharvill QUALIFIED
Maisha RulapaughAustraliaOnyama Limba NEGOTIATION
Salvatore StockhamItalyAnna Fali PROPOSAL
David DarakjyCanadaStephen Shaw NEW
Juan WieserGermanyElwin Sharvill QUALIFIED
Johnson SergiItalyAnna Fali UNQUALIFIED
Morrow RutaArgentinaIoni Bowcher RENEWAL
Clifford RimAustraliaIoni Bowcher QUALIFIED
Sinclair WaycottRussiaXuxue Feng NEGOTIATION
Chavez BriddickBrazilBernardo Dominic RENEWAL
Johnson SergiFranceOnyama Limba QUALIFIED
Morrow RutaJapanAmy Elsner PROPOSAL
Leon OldroydAustraliaAmy Elsner RENEWAL
Deepesh ChuiGermanyBernardo Dominic NEGOTIATION
Emily WhobreyUnited KingdomAsiya Javayant RENEWAL
Sinclair WaycottFranceAmy Elsner QUALIFIED
Silvio SlusarskiArgentinaOnyama Limba RENEWAL
James ButtRussiaXuxue Feng NEGOTIATION
Leon OldroydGermanyAsiya Javayant NEGOTIATION
Salvatore StockhamSpainIoni Bowcher QUALIFIED
Ivar PaprockiAustraliaStephen Shaw NEW
Maisha RulapaughJapanBernardo Dominic UNQUALIFIED
Juan WieserUnited KingdomAnna Fali NEW
Nicolas IturbideSpainBernardo Dominic UNQUALIFIED
Alejandro PerinSpainXuxue Feng NEGOTIATION
Mujtaba NickaCanadaElwin Sharvill RENEWAL
Francesco ShinkoGermanyIoni Bowcher NEW
Jones VocelkaBrazilBernardo Dominic NEW
James ButtFranceAsiya Javayant UNQUALIFIED
Jeanfrancois VenereIndiaIvan Magalhaes UNQUALIFIED
Silvio SlusarskiSpainXuxue Feng RENEWAL
Ivar PaprockiAustraliaAnna Fali PROPOSAL
Murillo MaletIndiaIvan Magalhaes RENEWAL
Silvio SlusarskiArgentinaOnyama Limba NEGOTIATION
Aika InouyeArgentinaAmy Elsner RENEWAL
Maisha RulapaughSpainIvan Magalhaes NEW
Faith GillianRussiaAsiya Javayant NEW
Munro FerenczBrazilBernardo Dominic NEW
Nicolas IturbideSpainIoni Bowcher 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>