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
Maria MarrierSpainXuxue Feng UNQUALIFIED
Leja CaldareraSpainBernardo Dominic NEW
Jeanfrancois VenereRussiaAsiya Javayant NEGOTIATION
Aditya KuskoArgentinaIoni Bowcher NEGOTIATION
Maisha RulapaughJapanBernardo Dominic QUALIFIED
Aditya KuskoAustraliaXuxue Feng UNQUALIFIED
Costa DilliardItalyAnna Fali QUALIFIED
Mayumi KolmetzGermanyBernardo Dominic RENEWAL
Morrow RutaBrazilAmy Elsner PROPOSAL
Murillo MaletAustraliaXuxue Feng PROPOSAL
Mayumi KolmetzJapanBernardo Dominic NEW
Misaki RoysterRussiaAmy Elsner UNQUALIFIED
Murillo MaletCanadaAnna Fali NEW
Johnson SergiItalyElwin Sharvill PROPOSAL
Izzy GarufiArgentinaIoni Bowcher PROPOSAL
Salvatore StockhamAustraliaXuxue Feng NEW
Munro FerenczSpainAsiya Javayant RENEWAL
Kaitlin OstroskyIndiaAnna Fali PROPOSAL
Munro FerenczRussiaIoni Bowcher NEGOTIATION
Maria MarrierSpainBernardo Dominic PROPOSAL
Mujtaba NickaFranceAsiya Javayant PROPOSAL
Kadeem FlosiRussiaIoni Bowcher RENEWAL
Leja CaldareraIndiaAsiya Javayant UNQUALIFIED
Chavez BriddickSpainXuxue Feng RENEWAL
James ButtArgentinaStephen Shaw NEW
Kadeem FlosiAustraliaXuxue Feng QUALIFIED
Nicolas IturbideRussiaAnna Fali QUALIFIED
Ricardo GauchoGermanyIvan Magalhaes PROPOSAL
Silvio SlusarskiIndiaBernardo Dominic QUALIFIED
Johnson SergiBrazilAnna Fali NEW
Francesco ShinkoIndiaStephen Shaw NEGOTIATION
Julie StensethArgentinaStephen Shaw NEW
Juan WieserItalyStephen Shaw NEGOTIATION
James ButtArgentinaIoni Bowcher NEGOTIATION
Murillo MaletUnited KingdomAmy Elsner UNQUALIFIED
Chavez BriddickArgentinaAsiya Javayant UNQUALIFIED
Greenwood BologniaCanadaIvan Magalhaes NEGOTIATION
Arvin AlbaresSpainAnna Fali RENEWAL
Mayumi KolmetzItalyAmy Elsner NEW
Mayumi KolmetzIndiaAsiya Javayant UNQUALIFIED
Claire TollnerJapanAsiya Javayant NEW
Emily WhobreyIndiaIvan Magalhaes NEW
Ashley DoeSpainIoni Bowcher NEW
Murillo MaletArgentinaOnyama Limba NEW
Kaitlin OstroskyGermanyOnyama Limba NEW
Costa DilliardSpainAmy Elsner QUALIFIED
James ButtUnited KingdomOnyama Limba NEGOTIATION
Munro FerenczCanadaStephen Shaw QUALIFIED
Claire TollnerUnited KingdomIvan Magalhaes NEGOTIATION
Aditya KuskoSpainIvan Magalhaes UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Greenwood BologniaSpainIvan Magalhaes NEW
Darci PoquetteFranceOnyama Limba NEW
Nicolas IturbideRussiaStephen Shaw NEGOTIATION
Morrow RutaFranceBernardo Dominic PROPOSAL
Jennifer AmigonSpainStephen Shaw PROPOSAL
Leja CaldareraBrazilIoni Bowcher PROPOSAL
Ricardo GauchoJapanIoni Bowcher NEW
Chavez BriddickFranceXuxue Feng RENEWAL
Murillo MaletJapanStephen Shaw RENEWAL
Salvatore StockhamBrazilElwin Sharvill UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aditya KuskoArgentina2026-05-29Dorl, James J Esq RENEWAL18Ivan Magalhaes
1001Silvio SlusarskiSpain2026-06-01Chapman, Ross E Esq PROPOSAL88Ivan Magalhaes
1002Smith GlickGermany2026-05-27Chanay, Jeffrey A Esq NEGOTIATION57Stephen Shaw
1003Emily WhobreyRussia2026-05-12Feltz Printing Service NEGOTIATION79Ioni Bowcher
1004Ashley DoeCanada2026-05-07Printing Dimensions NEW97Onyama Limba
1005Maria MarrierFrance2026-05-18Feltz Printing Service NEW85Ivan Magalhaes
1006Jeanfrancois VenereGermany2026-05-08Truhlar And Truhlar Attys UNQUALIFIED90Amy Elsner
1007James ButtBrazil2026-05-09Dorl, James J Esq NEGOTIATION65Onyama Limba
1008Chavez BriddickFrance2026-05-06Dorl, James J Esq QUALIFIED96Anna Fali
1009Maria MarrierFrance2026-05-31Chemel, James L Cpa NEGOTIATION76Ioni Bowcher
1010Maria MarrierItaly2026-05-23Feiner Bros NEGOTIATION62Xuxue Feng
1011Jeanfrancois VenereCanada2026-05-31Morlong Associates UNQUALIFIED39Elwin Sharvill
1012Greenwood BologniaItaly2026-05-05Feltz Printing Service NEW51Elwin Sharvill
1013Smith GlickArgentina2026-05-20Chapman, Ross E Esq UNQUALIFIED23Ivan Magalhaes
1014Munro FerenczRussia2026-05-09King, Christopher A Esq NEGOTIATION60Ivan Magalhaes
1015Ashley DoeRussia2026-05-05Rangoni Of Florence NEGOTIATION78Elwin Sharvill
1016Silvio SlusarskiJapan2026-05-09Chapman, Ross E Esq QUALIFIED62Elwin Sharvill
1017Jefferson SchemmerGermany2026-06-01Chemel, James L Cpa NEW83Onyama Limba
1018Antonio CaudyGermany2026-05-18Commercial Press UNQUALIFIED83Anna Fali
1019David DarakjyCanada2026-05-15Buckley Miller Wright NEW99Ivan Magalhaes
1020Nicolas IturbideGermany2026-05-24Commercial Press PROPOSAL86Xuxue Feng
1021Arvin AlbaresItaly2026-05-16Morlong Associates PROPOSAL18Asiya Javayant
1022Wickens NestleRussia2026-05-21Chemel, James L Cpa RENEWAL39Stephen Shaw
1023Chavez BriddickGermany2026-05-05Feltz Printing Service PROPOSAL34Anna Fali
1024Jeanfrancois VenereJapan2026-05-19Benton, John B Jr RENEWAL44Ioni Bowcher
1025Salvatore StockhamUnited Kingdom2026-05-06Rousseaux, Michael Esq UNQUALIFIED71Elwin Sharvill
1026Stacey MacleadFrance2026-06-03Chapman, Ross E Esq NEGOTIATION30Bernardo Dominic
1027Maisha RulapaughIndia2026-05-05Feltz Printing Service QUALIFIED11Anna Fali
1028Ashley DoeIndia2026-05-25Truhlar And Truhlar Attys UNQUALIFIED19Elwin Sharvill
1029Costa DilliardAustralia2026-05-10Rousseaux, Michael Esq NEGOTIATION40Onyama Limba
1030Antonio CaudyIndia2026-05-23Benton, John B Jr NEGOTIATION77Stephen Shaw
1031Jeanfrancois VenereUnited Kingdom2026-05-13Buckley Miller Wright RENEWAL23Amy Elsner
1032David DarakjyIndia2026-05-29Rangoni Of Florence UNQUALIFIED59Stephen Shaw
1033Sinclair WaycottBrazil2026-05-17Benton, John B Jr RENEWAL26Amy Elsner
1034Aruna FigeroaAustralia2026-05-24Benton, John B Jr NEGOTIATION26Anna Fali
1035David DarakjyRussia2026-05-07Printing Dimensions UNQUALIFIED39Amy Elsner
1036Murillo MaletRussia2026-05-20Feiner Bros PROPOSAL64Bernardo Dominic
1037Jefferson SchemmerFrance2026-05-06Morlong Associates UNQUALIFIED74Elwin Sharvill
1038Alejandro PerinBrazil2026-05-07Chapman, Ross E Esq QUALIFIED18Amy Elsner
1039Ivar PaprockiIndia2026-05-28Chemel, James L Cpa RENEWAL4Anna Fali
1040Juan WieserItaly2026-05-31Buckley Miller Wright QUALIFIED2Ivan Magalhaes
1041Ricardo GauchoJapan2026-05-17Feiner Bros NEW75Stephen Shaw
1042Faith GillianCanada2026-05-09Commercial Press NEW80Onyama Limba
1043Costa DilliardFrance2026-05-19Benton, John B Jr UNQUALIFIED61Onyama Limba
1044Claire TollnerRussia2026-05-11Chemel, James L Cpa NEGOTIATION74Asiya Javayant
1045Murillo MaletArgentina2026-05-21Feiner Bros PROPOSAL54Amy Elsner
1046Ashley DoeBrazil2026-05-28Morlong Associates PROPOSAL80Stephen Shaw
1047Maria MarrierSpain2026-05-06Commercial Press QUALIFIED31Xuxue Feng
1048Deepesh ChuiItaly2026-05-22Printing Dimensions NEW15Onyama Limba
1049James ButtAustralia2026-05-28Printing Dimensions PROPOSAL31Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Faith GillianFranceOnyama Limba PROPOSAL
Nicolas IturbideGermanyAnna Fali UNQUALIFIED
Jennifer AmigonCanadaAmy Elsner RENEWAL
Faith GillianRussiaAnna Fali QUALIFIED
Octavia MaletIndiaElwin Sharvill QUALIFIED
Jennifer AmigonCanadaAmy Elsner RENEWAL
Munro FerenczSpainOnyama Limba RENEWAL
Izzy GarufiFranceStephen Shaw QUALIFIED
Leon OldroydFranceElwin Sharvill UNQUALIFIED
Darci PoquetteBrazilIoni Bowcher NEGOTIATION
Isabel BowleySpainXuxue Feng NEW
Antonio CaudyIndiaOnyama Limba NEW
Deepesh ChuiRussiaXuxue Feng PROPOSAL
Leon OldroydCanadaAnna Fali NEW
Juan WieserItalyAsiya Javayant UNQUALIFIED
Salvatore StockhamRussiaIvan Magalhaes NEW
Faith GillianSpainIoni Bowcher NEW
Nicolas IturbideArgentinaOnyama Limba NEW
Aika InouyeItalyIvan Magalhaes NEW
Isabel BowleyIndiaElwin Sharvill QUALIFIED
Mujtaba NickaUnited KingdomOnyama Limba UNQUALIFIED
Ashley DoeSpainAmy Elsner NEW
Claire TollnerGermanyIvan Magalhaes RENEWAL
Nicolas IturbideRussiaAsiya Javayant RENEWAL
Francesco ShinkoBrazilBernardo Dominic NEW
Clifford RimCanadaElwin Sharvill NEGOTIATION
Jeanfrancois VenereArgentinaIoni Bowcher QUALIFIED
Francesco ShinkoSpainStephen Shaw QUALIFIED
Maisha RulapaughJapanAmy Elsner UNQUALIFIED
Greenwood BologniaAustraliaElwin Sharvill PROPOSAL
Jeanfrancois VenereRussiaStephen Shaw PROPOSAL
Johnson SergiCanadaStephen Shaw QUALIFIED
Sinclair WaycottRussiaAnna Fali NEGOTIATION
Murillo MaletJapanElwin Sharvill RENEWAL
Cody SaylorsUnited KingdomOnyama Limba NEW
Isabel BowleySpainAmy Elsner NEGOTIATION
Ashley DoeSpainBernardo Dominic QUALIFIED
James ButtArgentinaStephen Shaw PROPOSAL
Octavia MaletSpainXuxue Feng RENEWAL
Sinclair WaycottArgentinaAsiya Javayant PROPOSAL
Wickens NestleIndiaStephen Shaw NEW
Faith GillianCanadaXuxue Feng NEW
Wickens NestleGermanyElwin Sharvill UNQUALIFIED
Antonio CaudyAustraliaStephen Shaw RENEWAL
Jennifer AmigonJapanOnyama Limba RENEWAL
Silvio SlusarskiSpainXuxue Feng QUALIFIED
Isabel BowleyItalyAnna Fali QUALIFIED
Izzy GarufiItalyAsiya Javayant NEGOTIATION
Silvio SlusarskiUnited KingdomBernardo Dominic NEGOTIATION
James ButtRussiaOnyama Limba QUALIFIED
Frozen Columns
Name
Juan Wieser
Jennifer Amigon
Kadeem Flosi
Tony Foller
Octavia Malet
Izzy Garufi
Aika Inouye
Munro Ferencz
Claire Tollner
Cody Saylors
Alejandro Perin
Salvatore Stockham
Antonio Caudy
Alejandro Perin
James Butt
Aditya Kusko
Tony Foller
Sinclair Waycott
Cody Saylors
Francesco Shinko
Cody Saylors
Chavez Briddick
Rodrigues Campain
Stacey Maclead
Alejandro Perin
Maria Marrier
Maisha Rulapaugh
Nicolas Iturbide
Cody Saylors
Rodrigues Campain
Izzy Garufi
Rodrigues Campain
Silvio Slusarski
Morrow Ruta
Aruna Figeroa
Chavez Briddick
Nicolas Iturbide
Ricardo Gaucho
Jeanfrancois Venere
Jennifer Amigon
Leon Oldroyd
Costa Dilliard
Leja Caldarera
Jones Vocelka
Adams Morasca
Salvatore Stockham
Kadeem Flosi
Morrow Ruta
Aruna Figeroa
Jeanfrancois Venere
IdCountryDate
1000Canada2026-05-12
1001Argentina2026-05-07
1002Russia2026-05-14
1003Australia2026-06-01
1004Argentina2026-05-05
1005Italy2026-05-10
1006Canada2026-05-09
1007France2026-05-09
1008United Kingdom2026-05-31
1009Italy2026-06-02
1010Russia2026-05-22
1011Brazil2026-05-25
1012Russia2026-06-03
1013Spain2026-05-29
1014Australia2026-05-06
1015Spain2026-05-14
1016Australia2026-05-26
1017India2026-05-27
1018Germany2026-05-29
1019India2026-05-21
1020Russia2026-05-29
1021United Kingdom2026-05-23
1022Australia2026-05-16
1023Argentina2026-05-09
1024Spain2026-05-16
1025Germany2026-05-30
1026Australia2026-05-18
1027Spain2026-05-15
1028Germany2026-05-14
1029Italy2026-05-07
1030Canada2026-05-18
1031India2026-05-18
1032France2026-06-03
1033Germany2026-05-19
1034Australia2026-05-26
1035Australia2026-05-23
1036United Kingdom2026-05-05
1037Italy2026-05-24
1038Australia2026-05-12
1039Spain2026-05-21
1040Brazil2026-06-03
1041Germany2026-05-09
1042France2026-05-17
1043Russia2026-05-14
1044France2026-05-11
1045Australia2026-05-26
1046India2026-05-19
1047Brazil2026-05-18
1048Canada2026-05-12
1049Australia2026-05-05

On-Demand Data

NameIdCountryDate
Ivar Paprocki1000India2026-05-27
Deepesh Chui1001Canada2026-05-08
Murillo Malet1002Brazil2026-06-02
Ricardo Gaucho1003Russia2026-05-28
Aika Inouye1004Canada2026-05-21
Cody Saylors1005United Kingdom2026-05-11
Arvin Albares1006United Kingdom2026-05-18
Julie Stenseth1007Japan2026-06-03
Leon Oldroyd1008India2026-05-30
Jones Vocelka1009Germany2026-05-17
Izzy Garufi1010Brazil2026-05-18
Sinclair Waycott1011France2026-05-09
Tony Foller1012Russia2026-06-01
Chavez Briddick1013France2026-05-28
Chavez Briddick1014France2026-05-17
Aruna Figeroa1015France2026-05-07
Izzy Garufi1016Italy2026-05-28
Wickens Nestle1017India2026-05-12
Nicolas Iturbide1018Brazil2026-05-11
Smith Glick1019Brazil2026-05-22
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jeanfrancois VenereGermanyAsiya Javayant NEGOTIATION
Aika InouyeFranceOnyama Limba QUALIFIED
Kaitlin OstroskyIndiaIvan Magalhaes PROPOSAL
Maisha RulapaughSpainIoni Bowcher PROPOSAL
Jeanfrancois VenereSpainAsiya Javayant QUALIFIED
Ivar PaprockiSpainAsiya Javayant QUALIFIED
Clifford RimFranceXuxue Feng NEW
Kaitlin OstroskyIndiaElwin Sharvill PROPOSAL
Aruna FigeroaCanadaStephen Shaw PROPOSAL
Salvatore StockhamCanadaIoni Bowcher RENEWAL
Morrow RutaIndiaOnyama Limba PROPOSAL
Nicolas IturbideItalyIoni Bowcher PROPOSAL
James ButtGermanyIoni Bowcher UNQUALIFIED
Ashley DoeBrazilIoni Bowcher RENEWAL
Deepesh ChuiItalyXuxue Feng NEW
Jeanfrancois VenereJapanIvan Magalhaes NEW
Johnson SergiCanadaBernardo Dominic QUALIFIED
Aruna FigeroaJapanAsiya Javayant UNQUALIFIED
Jennifer AmigonArgentinaBernardo Dominic UNQUALIFIED
Arvin AlbaresGermanyAsiya Javayant QUALIFIED
Cody SaylorsAustraliaXuxue Feng PROPOSAL
Clifford RimJapanBernardo Dominic QUALIFIED
Cody SaylorsItalyStephen Shaw PROPOSAL
Antonio CaudyFranceAsiya Javayant PROPOSAL
Faith GillianSpainElwin Sharvill NEGOTIATION
Aruna FigeroaFranceElwin Sharvill UNQUALIFIED
Smith GlickBrazilElwin Sharvill NEGOTIATION
Francesco ShinkoUnited KingdomAsiya Javayant NEGOTIATION
Salvatore StockhamFranceXuxue Feng QUALIFIED
Francesco ShinkoIndiaStephen Shaw NEGOTIATION
Isabel BowleyArgentinaOnyama Limba UNQUALIFIED
Silvio SlusarskiAustraliaAmy Elsner NEGOTIATION
Stacey MacleadUnited KingdomIoni Bowcher NEW
Jennifer AmigonIndiaIoni Bowcher RENEWAL
Faith GillianRussiaAnna Fali NEGOTIATION
Tony FollerUnited KingdomAsiya Javayant NEGOTIATION
Mayumi KolmetzJapanIoni Bowcher UNQUALIFIED
Leja CaldareraJapanBernardo Dominic NEGOTIATION
Chavez BriddickGermanyAmy Elsner NEGOTIATION
Antonio CaudyItalyStephen Shaw RENEWAL

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