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
Izzy GarufiGermanyXuxue Feng UNQUALIFIED
Aruna FigeroaBrazilAsiya Javayant QUALIFIED
Jennifer AmigonRussiaAsiya Javayant UNQUALIFIED
Nicolas IturbideFranceAnna Fali UNQUALIFIED
Jones VocelkaRussiaXuxue Feng UNQUALIFIED
Leja CaldareraBrazilIoni Bowcher UNQUALIFIED
Alejandro PerinItalyIoni Bowcher NEGOTIATION
Aditya KuskoSpainIvan Magalhaes RENEWAL
Mujtaba NickaSpainAnna Fali UNQUALIFIED
Darci PoquetteItalyAmy Elsner NEW
Alejandro PerinSpainStephen Shaw NEGOTIATION
Ashley DoeJapanBernardo Dominic NEW
Johnson SergiBrazilIoni Bowcher PROPOSAL
Leja CaldareraSpainIvan Magalhaes PROPOSAL
Wickens NestleItalyAmy Elsner NEW
Julie StensethCanadaIvan Magalhaes QUALIFIED
Morrow RutaUnited KingdomAmy Elsner NEW
Kaitlin OstroskyUnited KingdomAsiya Javayant QUALIFIED
Jeanfrancois VenereAustraliaBernardo Dominic QUALIFIED
Maisha RulapaughJapanStephen Shaw RENEWAL
Stacey MacleadCanadaOnyama Limba PROPOSAL
Emily WhobreySpainIoni Bowcher RENEWAL
Aditya KuskoArgentinaAsiya Javayant UNQUALIFIED
Jones VocelkaItalyIvan Magalhaes NEW
Chavez BriddickUnited KingdomBernardo Dominic PROPOSAL
Aditya KuskoRussiaAsiya Javayant NEGOTIATION
Emily WhobreyItalyIoni Bowcher UNQUALIFIED
Emily WhobreyCanadaBernardo Dominic QUALIFIED
David DarakjyItalyAnna Fali NEW
Chavez BriddickItalyIoni Bowcher UNQUALIFIED
Jefferson SchemmerRussiaElwin Sharvill RENEWAL
Arvin AlbaresItalyIvan Magalhaes UNQUALIFIED
James ButtBrazilIoni Bowcher NEW
Greenwood BologniaIndiaBernardo Dominic QUALIFIED
Cody SaylorsUnited KingdomIvan Magalhaes NEW
Mujtaba NickaBrazilAmy Elsner RENEWAL
Murillo MaletCanadaBernardo Dominic NEGOTIATION
Wickens NestleItalyElwin Sharvill NEW
Nicolas IturbideUnited KingdomXuxue Feng PROPOSAL
Maisha RulapaughItalyAnna Fali NEW
Deepesh ChuiJapanStephen Shaw PROPOSAL
Maisha RulapaughIndiaAmy Elsner NEW
Clifford RimBrazilAsiya Javayant NEGOTIATION
Jones VocelkaRussiaIvan Magalhaes RENEWAL
Salvatore StockhamAustraliaAnna Fali NEW
Salvatore StockhamAustraliaIvan Magalhaes NEGOTIATION
Maria MarrierRussiaElwin Sharvill NEW
Leon OldroydJapanAsiya Javayant PROPOSAL
Stacey MacleadArgentinaAsiya Javayant RENEWAL
Chavez BriddickBrazilIvan Magalhaes QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Deepesh ChuiCanadaStephen Shaw PROPOSAL
Julie StensethItalyOnyama Limba PROPOSAL
Ivar PaprockiUnited KingdomIoni Bowcher QUALIFIED
Arvin AlbaresJapanOnyama Limba NEW
Kaitlin OstroskyItalyElwin Sharvill NEW
Mujtaba NickaIndiaOnyama Limba UNQUALIFIED
Kaitlin OstroskySpainAsiya Javayant UNQUALIFIED
Jennifer AmigonRussiaAnna Fali QUALIFIED
Clifford RimSpainIoni Bowcher PROPOSAL
Jefferson SchemmerJapanStephen Shaw QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Costa DilliardFrance2025-08-24Chanay, Jeffrey A Esq RENEWAL13Ioni Bowcher
1001Smith GlickIndia2025-09-10King, Christopher A Esq RENEWAL11Ivan Magalhaes
1002Silvio SlusarskiArgentina2025-08-30Chemel, James L Cpa NEW12Onyama Limba
1003Aika InouyeIndia2025-08-25Rousseaux, Michael Esq UNQUALIFIED30Amy Elsner
1004Ashley DoeFrance2025-08-17Buckley Miller Wright NEGOTIATION19Amy Elsner
1005Antonio CaudyGermany2025-09-01Benton, John B Jr UNQUALIFIED64Bernardo Dominic
1006Munro FerenczIndia2025-08-20Chemel, James L Cpa NEGOTIATION97Anna Fali
1007Misaki RoysterItaly2025-08-24Commercial Press UNQUALIFIED45Bernardo Dominic
1008Alejandro PerinBrazil2025-08-18Feiner Bros RENEWAL4Anna Fali
1009Chavez BriddickRussia2025-08-17Feltz Printing Service QUALIFIED84Amy Elsner
1010Aika InouyeArgentina2025-09-09Printing Dimensions NEW53Amy Elsner
1011Chavez BriddickAustralia2025-09-06Benton, John B Jr QUALIFIED32Xuxue Feng
1012Jennifer AmigonArgentina2025-08-28Chapman, Ross E Esq NEW3Ioni Bowcher
1013Tony FollerBrazil2025-09-01Printing Dimensions RENEWAL7Xuxue Feng
1014Izzy GarufiUnited Kingdom2025-08-17Chanay, Jeffrey A Esq PROPOSAL2Elwin Sharvill
1015Munro FerenczItaly2025-08-16Feltz Printing Service UNQUALIFIED69Stephen Shaw
1016James ButtCanada2025-09-04King, Christopher A Esq RENEWAL66Elwin Sharvill
1017Adams MorascaFrance2025-09-02Benton, John B Jr PROPOSAL30Ivan Magalhaes
1018Morrow RutaGermany2025-08-16King, Christopher A Esq NEW81Anna Fali
1019Costa DilliardBrazil2025-08-14Rangoni Of Florence RENEWAL49Amy Elsner
1020Ashley DoeFrance2025-08-31Chapman, Ross E Esq NEGOTIATION76Onyama Limba
1021Julie StensethGermany2025-08-19Morlong Associates QUALIFIED87Xuxue Feng
1022Francesco ShinkoCanada2025-09-04Benton, John B Jr QUALIFIED28Amy Elsner
1023Maisha RulapaughAustralia2025-08-16Feiner Bros UNQUALIFIED20Elwin Sharvill
1024Jones VocelkaJapan2025-08-19Buckley Miller Wright NEW22Ivan Magalhaes
1025Munro FerenczSpain2025-08-18Feiner Bros NEGOTIATION4Elwin Sharvill
1026Aika InouyeSpain2025-08-19Printing Dimensions PROPOSAL26Bernardo Dominic
1027Deepesh ChuiCanada2025-08-15Dorl, James J Esq RENEWAL15Ioni Bowcher
1028Mujtaba NickaBrazil2025-09-05Chapman, Ross E Esq NEGOTIATION98Ivan Magalhaes
1029David DarakjyCanada2025-08-30Dorl, James J Esq UNQUALIFIED53Stephen Shaw
1030Smith GlickFrance2025-08-26Benton, John B Jr NEW59Amy Elsner
1031Sinclair WaycottAustralia2025-09-10Rangoni Of Florence NEGOTIATION57Stephen Shaw
1032Leja CaldareraUnited Kingdom2025-08-27Chemel, James L Cpa QUALIFIED10Xuxue Feng
1033Costa DilliardIndia2025-08-30Commercial Press QUALIFIED38Bernardo Dominic
1034Julie StensethJapan2025-08-18Printing Dimensions PROPOSAL4Ivan Magalhaes
1035Octavia MaletFrance2025-08-21Buckley Miller Wright NEW77Amy Elsner
1036Aika InouyeUnited Kingdom2025-08-30Benton, John B Jr QUALIFIED17Onyama Limba
1037Maisha RulapaughCanada2025-08-31Benton, John B Jr UNQUALIFIED86Xuxue Feng
1038David DarakjyGermany2025-09-10Commercial Press RENEWAL75Amy Elsner
1039Octavia MaletFrance2025-08-25Dorl, James J Esq RENEWAL50Anna Fali
1040Izzy GarufiBrazil2025-08-28King, Christopher A Esq QUALIFIED99Xuxue Feng
1041Munro FerenczRussia2025-09-12Rangoni Of Florence RENEWAL15Anna Fali
1042Leon OldroydFrance2025-09-10King, Christopher A Esq PROPOSAL12Anna Fali
1043Johnson SergiJapan2025-09-11Feiner Bros NEGOTIATION79Asiya Javayant
1044Izzy GarufiSpain2025-08-23Benton, John B Jr RENEWAL58Asiya Javayant
1045Tony FollerAustralia2025-09-04Benton, John B Jr NEW37Xuxue Feng
1046Isabel BowleyGermany2025-08-25Benton, John B Jr QUALIFIED16Ioni Bowcher
1047Munro FerenczBrazil2025-09-01Chanay, Jeffrey A Esq RENEWAL56Amy Elsner
1048Nicolas IturbideFrance2025-09-11Dorl, James J Esq RENEWAL91Onyama Limba
1049Sinclair WaycottFrance2025-09-08Buckley Miller Wright UNQUALIFIED96Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Chavez BriddickGermanyIoni Bowcher UNQUALIFIED
Munro FerenczRussiaAnna Fali NEGOTIATION
Silvio SlusarskiUnited KingdomElwin Sharvill PROPOSAL
Maria MarrierGermanyAnna Fali NEGOTIATION
Greenwood BologniaSpainIvan Magalhaes UNQUALIFIED
Kaitlin OstroskyCanadaXuxue Feng NEGOTIATION
Morrow RutaRussiaAsiya Javayant UNQUALIFIED
Adams MorascaSpainAnna Fali RENEWAL
Sinclair WaycottAustraliaBernardo Dominic NEW
Jefferson SchemmerSpainAsiya Javayant NEW
Nicolas IturbideIndiaStephen Shaw PROPOSAL
Aditya KuskoGermanyAnna Fali QUALIFIED
Juan WieserArgentinaAmy Elsner RENEWAL
James ButtItalyAmy Elsner QUALIFIED
Leon OldroydRussiaAsiya Javayant NEGOTIATION
Ashley DoeSpainXuxue Feng RENEWAL
Isabel BowleyJapanBernardo Dominic QUALIFIED
James ButtUnited KingdomAmy Elsner NEW
Kaitlin OstroskyBrazilIoni Bowcher UNQUALIFIED
Chavez BriddickUnited KingdomAsiya Javayant UNQUALIFIED
Murillo MaletGermanyAsiya Javayant PROPOSAL
Leon OldroydUnited KingdomElwin Sharvill PROPOSAL
David DarakjyArgentinaAmy Elsner UNQUALIFIED
Johnson SergiAustraliaAmy Elsner NEGOTIATION
Costa DilliardBrazilBernardo Dominic NEGOTIATION
Nicolas IturbideSpainAnna Fali PROPOSAL
Claire TollnerIndiaElwin Sharvill NEW
Claire TollnerItalyAnna Fali NEGOTIATION
Francesco ShinkoGermanyAsiya Javayant PROPOSAL
Darci PoquetteUnited KingdomIvan Magalhaes UNQUALIFIED
Chavez BriddickRussiaXuxue Feng RENEWAL
Leon OldroydCanadaBernardo Dominic NEW
Izzy GarufiCanadaAmy Elsner NEGOTIATION
Mujtaba NickaFranceIoni Bowcher UNQUALIFIED
Octavia MaletCanadaAsiya Javayant PROPOSAL
Chavez BriddickGermanyAmy Elsner RENEWAL
Izzy GarufiUnited KingdomElwin Sharvill QUALIFIED
Ricardo GauchoAustraliaAmy Elsner RENEWAL
Stacey MacleadItalyAsiya Javayant QUALIFIED
James ButtBrazilBernardo Dominic NEW
Faith GillianCanadaElwin Sharvill NEGOTIATION
Claire TollnerAustraliaBernardo Dominic NEW
Maisha RulapaughAustraliaIoni Bowcher RENEWAL
Ivar PaprockiIndiaStephen Shaw PROPOSAL
Claire TollnerArgentinaXuxue Feng RENEWAL
James ButtAustraliaStephen Shaw UNQUALIFIED
Adams MorascaCanadaXuxue Feng NEW
Wickens NestleCanadaAnna Fali PROPOSAL
Octavia MaletSpainOnyama Limba NEGOTIATION
Darci PoquetteUnited KingdomIoni Bowcher QUALIFIED
Frozen Columns
Name
Ivar Paprocki
Jennifer Amigon
Izzy Garufi
Francesco Shinko
Octavia Malet
Francesco Shinko
Murillo Malet
Nicolas Iturbide
Arvin Albares
Misaki Royster
Jones Vocelka
Mujtaba Nicka
Ivar Paprocki
Mayumi Kolmetz
Leja Caldarera
Julie Stenseth
Kadeem Flosi
Wickens Nestle
Adams Morasca
Aika Inouye
David Darakjy
Salvatore Stockham
Wickens Nestle
Jones Vocelka
Leon Oldroyd
Johnson Sergi
Smith Glick
Sinclair Waycott
Kadeem Flosi
Aika Inouye
Clifford Rim
Costa Dilliard
Maisha Rulapaugh
Isabel Bowley
Jennifer Amigon
Jennifer Amigon
Silvio Slusarski
James Butt
Greenwood Bolognia
Johnson Sergi
Jennifer Amigon
Faith Gillian
Ricardo Gaucho
Isabel Bowley
Salvatore Stockham
Deepesh Chui
Deepesh Chui
Emily Whobrey
Morrow Ruta
Morrow Ruta
IdCountryDate
1000Australia2025-08-29
1001Canada2025-08-24
1002Russia2025-09-12
1003Canada2025-09-06
1004Australia2025-08-23
1005Germany2025-08-18
1006France2025-08-18
1007Canada2025-08-29
1008Argentina2025-08-15
1009United Kingdom2025-08-28
1010France2025-09-01
1011Brazil2025-08-20
1012India2025-08-26
1013Argentina2025-08-19
1014Canada2025-08-17
1015Canada2025-09-07
1016Canada2025-09-03
1017Spain2025-09-02
1018Australia2025-08-22
1019Brazil2025-09-01
1020Russia2025-09-03
1021Argentina2025-09-04
1022Italy2025-08-20
1023Japan2025-09-11
1024Japan2025-09-07
1025Japan2025-09-03
1026Spain2025-08-24
1027Australia2025-09-04
1028France2025-08-14
1029Germany2025-09-01
1030Australia2025-08-24
1031Canada2025-09-01
1032Italy2025-09-11
1033France2025-08-21
1034Australia2025-08-23
1035Russia2025-09-01
1036India2025-08-16
1037India2025-08-14
1038Russia2025-08-22
1039France2025-08-26
1040Japan2025-09-07
1041United Kingdom2025-09-04
1042Canada2025-09-10
1043Germany2025-09-10
1044Italy2025-09-12
1045United Kingdom2025-09-08
1046Australia2025-08-16
1047Italy2025-08-20
1048Canada2025-09-05
1049Australia2025-09-07

On-Demand Data

NameIdCountryDate
Jeanfrancois Venere1000Australia2025-09-04
Jones Vocelka1001United Kingdom2025-09-02
Leja Caldarera1002United Kingdom2025-08-23
Arvin Albares1003United Kingdom2025-08-20
Mujtaba Nicka1004Canada2025-08-17
Leon Oldroyd1005Brazil2025-08-20
Costa Dilliard1006Germany2025-08-30
Jennifer Amigon1007India2025-09-03
Antonio Caudy1008Japan2025-08-24
Nicolas Iturbide1009India2025-08-31
Deepesh Chui1010India2025-09-11
Faith Gillian1011Brazil2025-08-15
Deepesh Chui1012Brazil2025-08-31
Ricardo Gaucho1013Russia2025-09-06
David Darakjy1014Italy2025-08-23
Greenwood Bolognia1015Japan2025-09-05
Tony Foller1016Germany2025-09-07
Aruna Figeroa1017Australia2025-09-11
Claire Tollner1018Japan2025-08-25
Sinclair Waycott1019Germany2025-08-22
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Alejandro PerinSpainIvan Magalhaes QUALIFIED
Antonio CaudyBrazilAsiya Javayant QUALIFIED
Adams MorascaAustraliaBernardo Dominic RENEWAL
Stacey MacleadRussiaAmy Elsner QUALIFIED
Greenwood BologniaIndiaStephen Shaw UNQUALIFIED
Maria MarrierUnited KingdomElwin Sharvill QUALIFIED
Maisha RulapaughAustraliaXuxue Feng UNQUALIFIED
Leja CaldareraFranceBernardo Dominic NEGOTIATION
Adams MorascaItalyBernardo Dominic PROPOSAL
Claire TollnerRussiaIvan Magalhaes RENEWAL
Juan WieserArgentinaElwin Sharvill QUALIFIED
Rodrigues CampainGermanyStephen Shaw UNQUALIFIED
Ivar PaprockiCanadaOnyama Limba PROPOSAL
Juan WieserAustraliaIvan Magalhaes NEW
Isabel BowleyIndiaBernardo Dominic PROPOSAL
Mayumi KolmetzRussiaAmy Elsner QUALIFIED
Alejandro PerinUnited KingdomOnyama Limba NEW
Octavia MaletCanadaOnyama Limba NEGOTIATION
Antonio CaudyGermanyOnyama Limba NEGOTIATION
Chavez BriddickArgentinaIvan Magalhaes NEW
Aika InouyeRussiaAnna Fali NEGOTIATION
David DarakjySpainAsiya Javayant QUALIFIED
Stacey MacleadBrazilBernardo Dominic NEW
Greenwood BologniaIndiaIvan Magalhaes PROPOSAL
Maisha RulapaughJapanAsiya Javayant UNQUALIFIED
Alejandro PerinFranceIoni Bowcher RENEWAL
Maisha RulapaughSpainAsiya Javayant UNQUALIFIED
Ricardo GauchoRussiaAnna Fali NEGOTIATION
Salvatore StockhamBrazilIoni Bowcher NEGOTIATION
Jones VocelkaCanadaStephen Shaw PROPOSAL
Greenwood BologniaUnited KingdomStephen Shaw QUALIFIED
Leon OldroydCanadaStephen Shaw NEW
Morrow RutaGermanyStephen Shaw PROPOSAL
Misaki RoysterFranceIvan Magalhaes NEW
Morrow RutaIndiaElwin Sharvill QUALIFIED
Rodrigues CampainIndiaElwin Sharvill RENEWAL
Clifford RimRussiaStephen Shaw QUALIFIED
Faith GillianItalyXuxue Feng RENEWAL
Cody SaylorsIndiaElwin Sharvill NEGOTIATION
David DarakjyCanadaElwin Sharvill QUALIFIED

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