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
Costa DilliardItalyBernardo Dominic RENEWAL
Maria MarrierUnited KingdomBernardo Dominic RENEWAL
Stacey MacleadBrazilOnyama Limba NEW
Murillo MaletFranceIvan Magalhaes UNQUALIFIED
Greenwood BologniaGermanyElwin Sharvill PROPOSAL
Johnson SergiArgentinaAsiya Javayant PROPOSAL
Munro FerenczRussiaIoni Bowcher NEGOTIATION
Mayumi KolmetzJapanXuxue Feng QUALIFIED
Munro FerenczAustraliaAsiya Javayant RENEWAL
Mujtaba NickaAustraliaOnyama Limba NEGOTIATION
Cody SaylorsIndiaElwin Sharvill NEGOTIATION
Murillo MaletArgentinaAmy Elsner RENEWAL
Ashley DoeJapanAsiya Javayant NEW
Misaki RoysterRussiaIoni Bowcher NEGOTIATION
Jones VocelkaBrazilAsiya Javayant PROPOSAL
Costa DilliardBrazilIoni Bowcher NEGOTIATION
Rodrigues CampainFranceOnyama Limba NEGOTIATION
Kadeem FlosiJapanIvan Magalhaes UNQUALIFIED
Maisha RulapaughSpainElwin Sharvill QUALIFIED
Izzy GarufiBrazilElwin Sharvill PROPOSAL
Faith GillianFranceAnna Fali NEW
Francesco ShinkoSpainAmy Elsner QUALIFIED
Mujtaba NickaCanadaAsiya Javayant NEW
Morrow RutaRussiaElwin Sharvill RENEWAL
Nicolas IturbideArgentinaElwin Sharvill NEW
Deepesh ChuiUnited KingdomIoni Bowcher NEW
Adams MorascaGermanyAmy Elsner NEW
Ivar PaprockiRussiaAsiya Javayant QUALIFIED
Kaitlin OstroskyJapanXuxue Feng NEW
Darci PoquetteSpainElwin Sharvill NEW
Maria MarrierFranceAmy Elsner PROPOSAL
Misaki RoysterAustraliaOnyama Limba NEGOTIATION
Aruna FigeroaItalyIvan Magalhaes RENEWAL
David DarakjySpainAnna Fali QUALIFIED
Clifford RimArgentinaIoni Bowcher NEGOTIATION
Jefferson SchemmerUnited KingdomStephen Shaw NEGOTIATION
Misaki RoysterRussiaAnna Fali PROPOSAL
Chavez BriddickUnited KingdomIvan Magalhaes RENEWAL
Francesco ShinkoBrazilAsiya Javayant QUALIFIED
Emily WhobreyGermanyOnyama Limba QUALIFIED
James ButtGermanyAmy Elsner PROPOSAL
Costa DilliardJapanBernardo Dominic PROPOSAL
Wickens NestleItalyIvan Magalhaes PROPOSAL
Jefferson SchemmerBrazilAnna Fali QUALIFIED
Rodrigues CampainItalyAmy Elsner NEGOTIATION
Aruna FigeroaJapanIoni Bowcher NEGOTIATION
Faith GillianFranceOnyama Limba PROPOSAL
Jeanfrancois VenereCanadaAmy Elsner UNQUALIFIED
Faith GillianFranceOnyama Limba RENEWAL
Ashley DoeIndiaXuxue Feng UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Sinclair WaycottCanadaXuxue Feng NEW
Juan WieserAustraliaBernardo Dominic PROPOSAL
Faith GillianIndiaIvan Magalhaes PROPOSAL
Jefferson SchemmerBrazilStephen Shaw RENEWAL
Johnson SergiFranceAnna Fali NEGOTIATION
Isabel BowleyCanadaStephen Shaw UNQUALIFIED
Maria MarrierGermanyOnyama Limba RENEWAL
Greenwood BologniaGermanyBernardo Dominic RENEWAL
Mujtaba NickaIndiaAmy Elsner NEGOTIATION
Deepesh ChuiIndiaAmy Elsner NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aika InouyeCanada2026-05-24Rangoni Of Florence NEGOTIATION96Asiya Javayant
1001Mayumi KolmetzFrance2026-06-09Dorl, James J Esq UNQUALIFIED7Xuxue Feng
1002Mayumi KolmetzUnited Kingdom2026-06-08King, Christopher A Esq UNQUALIFIED10Asiya Javayant
1003Morrow RutaGermany2026-06-05Chanay, Jeffrey A Esq PROPOSAL86Anna Fali
1004Izzy GarufiArgentina2026-05-25Feltz Printing Service NEW90Bernardo Dominic
1005Aditya KuskoJapan2026-06-18Commercial Press QUALIFIED44Xuxue Feng
1006Murillo MaletBrazil2026-06-03Rangoni Of Florence QUALIFIED7Onyama Limba
1007Claire TollnerCanada2026-06-08Morlong Associates UNQUALIFIED27Stephen Shaw
1008Chavez BriddickArgentina2026-06-07Dorl, James J Esq QUALIFIED9Onyama Limba
1009Munro FerenczGermany2026-05-27Feiner Bros QUALIFIED10Asiya Javayant
1010Aditya KuskoGermany2026-06-13Feiner Bros RENEWAL27Xuxue Feng
1011Salvatore StockhamBrazil2026-06-02Commercial Press RENEWAL73Anna Fali
1012Cody SaylorsIndia2026-05-29Chapman, Ross E Esq NEW8Xuxue Feng
1013Juan WieserBrazil2026-06-01Chemel, James L Cpa NEW14Stephen Shaw
1014Ricardo GauchoRussia2026-06-11Chapman, Ross E Esq QUALIFIED94Stephen Shaw
1015Salvatore StockhamSpain2026-06-03Chemel, James L Cpa QUALIFIED59Bernardo Dominic
1016James ButtAustralia2026-05-28Rousseaux, Michael Esq NEW75Amy Elsner
1017Chavez BriddickJapan2026-06-08Benton, John B Jr QUALIFIED54Amy Elsner
1018David DarakjyIndia2026-05-31Feiner Bros QUALIFIED73Bernardo Dominic
1019Leon OldroydItaly2026-05-30Benton, John B Jr QUALIFIED56Asiya Javayant
1020Kaitlin OstroskyGermany2026-06-18Rangoni Of Florence PROPOSAL19Amy Elsner
1021Aruna FigeroaJapan2026-05-24Truhlar And Truhlar Attys RENEWAL67Asiya Javayant
1022Ricardo GauchoAustralia2026-05-26Rangoni Of Florence NEGOTIATION41Bernardo Dominic
1023Misaki RoysterCanada2026-05-27Chapman, Ross E Esq PROPOSAL1Elwin Sharvill
1024Faith GillianItaly2026-06-21Feltz Printing Service QUALIFIED14Ivan Magalhaes
1025Mujtaba NickaIndia2026-06-21Commercial Press RENEWAL73Asiya Javayant
1026Kaitlin OstroskyAustralia2026-06-08Rousseaux, Michael Esq RENEWAL14Asiya Javayant
1027Rodrigues CampainJapan2026-06-10Printing Dimensions PROPOSAL58Stephen Shaw
1028Wickens NestleRussia2026-05-30Feltz Printing Service QUALIFIED75Xuxue Feng
1029Jeanfrancois VenereCanada2026-06-17Commercial Press NEGOTIATION23Bernardo Dominic
1030Alejandro PerinRussia2026-05-26Feltz Printing Service NEGOTIATION22Ivan Magalhaes
1031Salvatore StockhamJapan2026-05-24Commercial Press NEGOTIATION58Elwin Sharvill
1032Munro FerenczCanada2026-06-02Chapman, Ross E Esq QUALIFIED74Ioni Bowcher
1033Salvatore StockhamGermany2026-05-25Commercial Press UNQUALIFIED53Ivan Magalhaes
1034Murillo MaletItaly2026-06-18Feltz Printing Service PROPOSAL50Ioni Bowcher
1035Aditya KuskoIndia2026-06-08Feiner Bros NEW64Xuxue Feng
1036James ButtJapan2026-06-21Printing Dimensions NEW86Xuxue Feng
1037Faith GillianAustralia2026-05-25King, Christopher A Esq NEW22Ivan Magalhaes
1038Izzy GarufiCanada2026-06-08Rousseaux, Michael Esq RENEWAL12Elwin Sharvill
1039Murillo MaletJapan2026-06-18Dorl, James J Esq QUALIFIED18Onyama Limba
1040Jeanfrancois VenereJapan2026-06-20Printing Dimensions RENEWAL30Stephen Shaw
1041David DarakjyUnited Kingdom2026-06-15Commercial Press RENEWAL21Anna Fali
1042Emily WhobreyAustralia2026-06-15King, Christopher A Esq RENEWAL73Stephen Shaw
1043Deepesh ChuiUnited Kingdom2026-05-27Chanay, Jeffrey A Esq NEW28Xuxue Feng
1044Aika InouyeUnited Kingdom2026-06-16Morlong Associates UNQUALIFIED9Ioni Bowcher
1045Nicolas IturbideFrance2026-05-27Buckley Miller Wright UNQUALIFIED37Ioni Bowcher
1046Silvio SlusarskiArgentina2026-06-22Rousseaux, Michael Esq QUALIFIED93Bernardo Dominic
1047Silvio SlusarskiBrazil2026-06-03Chapman, Ross E Esq NEW62Amy Elsner
1048Jones VocelkaJapan2026-06-08Rangoni Of Florence UNQUALIFIED0Onyama Limba
1049Rodrigues CampainItaly2026-05-27Commercial Press PROPOSAL25Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Wickens NestleSpainAnna Fali QUALIFIED
Octavia MaletAustraliaIvan Magalhaes NEGOTIATION
Jefferson SchemmerAustraliaAmy Elsner NEW
Aditya KuskoItalyOnyama Limba RENEWAL
Maria MarrierRussiaXuxue Feng NEW
Munro FerenczSpainOnyama Limba UNQUALIFIED
Jones VocelkaAustraliaAsiya Javayant NEGOTIATION
Aika InouyeArgentinaIvan Magalhaes NEGOTIATION
Leja CaldareraGermanyOnyama Limba UNQUALIFIED
Claire TollnerCanadaXuxue Feng QUALIFIED
Smith GlickFranceAnna Fali NEGOTIATION
Adams MorascaItalyBernardo Dominic UNQUALIFIED
Misaki RoysterUnited KingdomOnyama Limba PROPOSAL
Aika InouyeCanadaIvan Magalhaes RENEWAL
Octavia MaletSpainIoni Bowcher NEGOTIATION
Rodrigues CampainBrazilIvan Magalhaes NEW
Julie StensethJapanStephen Shaw PROPOSAL
Tony FollerJapanIvan Magalhaes QUALIFIED
Izzy GarufiUnited KingdomOnyama Limba NEW
Silvio SlusarskiAustraliaIvan Magalhaes NEW
Kaitlin OstroskyJapanOnyama Limba QUALIFIED
Jefferson SchemmerBrazilAsiya Javayant NEGOTIATION
Chavez BriddickGermanyStephen Shaw RENEWAL
Juan WieserIndiaOnyama Limba QUALIFIED
Jefferson SchemmerIndiaXuxue Feng UNQUALIFIED
Ivar PaprockiItalyAnna Fali PROPOSAL
Tony FollerUnited KingdomOnyama Limba PROPOSAL
Ivar PaprockiJapanIvan Magalhaes NEGOTIATION
Aika InouyeBrazilIvan Magalhaes RENEWAL
David DarakjyBrazilAsiya Javayant RENEWAL
Jefferson SchemmerCanadaIoni Bowcher NEW
Alejandro PerinFranceAsiya Javayant NEGOTIATION
Deepesh ChuiJapanBernardo Dominic QUALIFIED
Morrow RutaArgentinaAmy Elsner UNQUALIFIED
Leon OldroydArgentinaAnna Fali UNQUALIFIED
Ashley DoeFranceElwin Sharvill PROPOSAL
Octavia MaletBrazilElwin Sharvill RENEWAL
Morrow RutaFranceXuxue Feng RENEWAL
Deepesh ChuiBrazilBernardo Dominic PROPOSAL
Salvatore StockhamGermanyAmy Elsner QUALIFIED
David DarakjyAustraliaElwin Sharvill QUALIFIED
Tony FollerFranceBernardo Dominic QUALIFIED
Nicolas IturbideUnited KingdomAnna Fali UNQUALIFIED
Salvatore StockhamGermanyXuxue Feng PROPOSAL
Ricardo GauchoRussiaAsiya Javayant NEGOTIATION
Aditya KuskoCanadaStephen Shaw UNQUALIFIED
Kaitlin OstroskyGermanyIoni Bowcher UNQUALIFIED
Isabel BowleyGermanyAsiya Javayant NEGOTIATION
Wickens NestleItalyIoni Bowcher QUALIFIED
Chavez BriddickCanadaOnyama Limba PROPOSAL
Frozen Columns
Name
Mayumi Kolmetz
Kadeem Flosi
Wickens Nestle
Johnson Sergi
Aruna Figeroa
Adams Morasca
Smith Glick
Faith Gillian
Greenwood Bolognia
Francesco Shinko
Stacey Maclead
Stacey Maclead
Arvin Albares
Silvio Slusarski
Morrow Ruta
Aika Inouye
Maisha Rulapaugh
Murillo Malet
Greenwood Bolognia
Aditya Kusko
Jeanfrancois Venere
Nicolas Iturbide
Murillo Malet
Faith Gillian
Jones Vocelka
Claire Tollner
Aruna Figeroa
Clifford Rim
Tony Foller
Emily Whobrey
Ashley Doe
Aditya Kusko
Murillo Malet
Julie Stenseth
Greenwood Bolognia
Murillo Malet
Jones Vocelka
Cody Saylors
Deepesh Chui
Leon Oldroyd
Misaki Royster
Stacey Maclead
Greenwood Bolognia
Maria Marrier
Wickens Nestle
Murillo Malet
Faith Gillian
Salvatore Stockham
Adams Morasca
Ashley Doe
IdCountryDate
1000Italy2026-06-03
1001Brazil2026-06-21
1002Brazil2026-06-07
1003Spain2026-06-07
1004India2026-05-25
1005Russia2026-06-05
1006Germany2026-05-31
1007Australia2026-05-24
1008Canada2026-06-16
1009Italy2026-05-24
1010Italy2026-05-31
1011Brazil2026-06-03
1012Japan2026-06-10
1013Russia2026-06-01
1014United Kingdom2026-06-11
1015Spain2026-06-22
1016India2026-05-24
1017France2026-06-02
1018India2026-06-05
1019Canada2026-05-25
1020Russia2026-05-29
1021Italy2026-05-29
1022Argentina2026-06-03
1023Australia2026-05-26
1024India2026-06-18
1025France2026-06-19
1026Russia2026-06-03
1027Argentina2026-05-29
1028Russia2026-06-02
1029Australia2026-06-13
1030Canada2026-06-12
1031France2026-06-19
1032Brazil2026-06-19
1033France2026-06-08
1034Canada2026-06-11
1035Italy2026-06-12
1036Italy2026-06-10
1037France2026-06-17
1038Brazil2026-06-02
1039Argentina2026-06-10
1040Canada2026-06-22
1041Argentina2026-05-24
1042Spain2026-06-21
1043Russia2026-06-09
1044Japan2026-05-28
1045Japan2026-06-02
1046Spain2026-05-25
1047Brazil2026-05-31
1048France2026-05-27
1049Australia2026-06-02

On-Demand Data

NameIdCountryDate
Ricardo Gaucho1000Spain2026-06-08
Kaitlin Ostrosky1001United Kingdom2026-06-11
Mayumi Kolmetz1002India2026-06-03
Mayumi Kolmetz1003Argentina2026-06-04
Greenwood Bolognia1004Japan2026-06-08
Leja Caldarera1005France2026-06-12
Jefferson Schemmer1006Argentina2026-06-15
Aruna Figeroa1007Australia2026-06-11
Jeanfrancois Venere1008India2026-06-05
Misaki Royster1009Australia2026-06-03
David Darakjy1010India2026-06-10
Jefferson Schemmer1011Canada2026-05-26
James Butt1012Japan2026-05-25
Munro Ferencz1013Russia2026-06-05
Sinclair Waycott1014Brazil2026-06-13
Ivar Paprocki1015Japan2026-06-03
Faith Gillian1016Canada2026-06-02
Deepesh Chui1017India2026-06-20
Aika Inouye1018Brazil2026-05-30
James Butt1019Germany2026-05-30
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Francesco ShinkoBrazilIvan Magalhaes RENEWAL
Murillo MaletArgentinaXuxue Feng NEW
Arvin AlbaresArgentinaAsiya Javayant QUALIFIED
Francesco ShinkoArgentinaIvan Magalhaes RENEWAL
Jeanfrancois VenereBrazilBernardo Dominic NEGOTIATION
Wickens NestleGermanyStephen Shaw QUALIFIED
Francesco ShinkoAustraliaIoni Bowcher NEW
Aika InouyeFranceAnna Fali RENEWAL
Maisha RulapaughRussiaXuxue Feng NEW
Octavia MaletBrazilAnna Fali QUALIFIED
Antonio CaudyAustraliaXuxue Feng NEGOTIATION
Leja CaldareraAustraliaBernardo Dominic NEW
Murillo MaletRussiaBernardo Dominic QUALIFIED
Claire TollnerArgentinaBernardo Dominic PROPOSAL
Kaitlin OstroskyGermanyElwin Sharvill RENEWAL
Maria MarrierFranceIvan Magalhaes UNQUALIFIED
Mayumi KolmetzAustraliaXuxue Feng NEW
Kadeem FlosiRussiaAnna Fali UNQUALIFIED
Smith GlickGermanyAmy Elsner RENEWAL
Aika InouyeJapanElwin Sharvill UNQUALIFIED
Faith GillianArgentinaElwin Sharvill UNQUALIFIED
Maria MarrierBrazilBernardo Dominic PROPOSAL
Julie StensethFranceIoni Bowcher NEW
Alejandro PerinGermanyIoni Bowcher PROPOSAL
Claire TollnerGermanyAnna Fali QUALIFIED
Stacey MacleadItalyIoni Bowcher PROPOSAL
David DarakjySpainAsiya Javayant QUALIFIED
Arvin AlbaresBrazilAnna Fali QUALIFIED
Faith GillianIndiaOnyama Limba NEW
Johnson SergiBrazilIvan Magalhaes PROPOSAL
Leja CaldareraSpainStephen Shaw NEGOTIATION
Munro FerenczCanadaStephen Shaw RENEWAL
Jeanfrancois VenereUnited KingdomAsiya Javayant NEW
Munro FerenczRussiaAmy Elsner PROPOSAL
Alejandro PerinUnited KingdomAnna Fali QUALIFIED
Octavia MaletUnited KingdomAnna Fali NEW
Jones VocelkaGermanyOnyama Limba NEGOTIATION
Jennifer AmigonJapanAnna Fali UNQUALIFIED
Jeanfrancois VenereSpainAsiya Javayant RENEWAL
Deepesh ChuiSpainElwin Sharvill PROPOSAL

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