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
Antonio CaudyAustraliaAmy Elsner PROPOSAL
Wickens NestleRussiaIvan Magalhaes NEGOTIATION
Izzy GarufiBrazilAnna Fali NEW
Murillo MaletUnited KingdomStephen Shaw UNQUALIFIED
Munro FerenczGermanyXuxue Feng NEGOTIATION
Francesco ShinkoRussiaIvan Magalhaes RENEWAL
Cody SaylorsItalyIoni Bowcher RENEWAL
Smith GlickGermanyElwin Sharvill PROPOSAL
Ivar PaprockiGermanyAsiya Javayant NEGOTIATION
Ivar PaprockiItalyAmy Elsner QUALIFIED
Munro FerenczRussiaAsiya Javayant PROPOSAL
Faith GillianUnited KingdomXuxue Feng UNQUALIFIED
Munro FerenczSpainXuxue Feng QUALIFIED
Leja CaldareraItalyElwin Sharvill QUALIFIED
Faith GillianArgentinaIvan Magalhaes PROPOSAL
Leja CaldareraGermanyAsiya Javayant PROPOSAL
Adams MorascaArgentinaAnna Fali RENEWAL
Izzy GarufiBrazilBernardo Dominic NEW
Jefferson SchemmerGermanyOnyama Limba NEW
Stacey MacleadAustraliaAmy Elsner NEW
Deepesh ChuiBrazilIvan Magalhaes NEGOTIATION
Maria MarrierRussiaIvan Magalhaes PROPOSAL
Antonio CaudyUnited KingdomStephen Shaw UNQUALIFIED
Aditya KuskoFranceElwin Sharvill NEW
Ashley DoeAustraliaIvan Magalhaes NEW
Stacey MacleadArgentinaBernardo Dominic NEGOTIATION
Jefferson SchemmerJapanIoni Bowcher UNQUALIFIED
Wickens NestleUnited KingdomAnna Fali PROPOSAL
Arvin AlbaresAustraliaIvan Magalhaes RENEWAL
Francesco ShinkoCanadaAmy Elsner PROPOSAL
Nicolas IturbideCanadaBernardo Dominic NEW
Wickens NestleRussiaElwin Sharvill RENEWAL
Kaitlin OstroskyFranceStephen Shaw NEW
Sinclair WaycottJapanAnna Fali UNQUALIFIED
Deepesh ChuiArgentinaOnyama Limba PROPOSAL
Octavia MaletBrazilBernardo Dominic NEW
Costa DilliardAustraliaOnyama Limba UNQUALIFIED
Mujtaba NickaJapanBernardo Dominic NEW
Jeanfrancois VenereFranceStephen Shaw QUALIFIED
Izzy GarufiUnited KingdomXuxue Feng RENEWAL
Costa DilliardGermanyElwin Sharvill RENEWAL
Jeanfrancois VenereIndiaAnna Fali QUALIFIED
Nicolas IturbideArgentinaIoni Bowcher NEGOTIATION
Jennifer AmigonGermanyXuxue Feng PROPOSAL
Isabel BowleyGermanyAnna Fali RENEWAL
Adams MorascaJapanIoni Bowcher RENEWAL
Juan WieserArgentinaOnyama Limba QUALIFIED
Aruna FigeroaFranceStephen Shaw NEW
Stacey MacleadIndiaAmy Elsner QUALIFIED
Tony FollerArgentinaXuxue Feng UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Maisha RulapaughJapanAsiya Javayant NEW
Jefferson SchemmerJapanBernardo Dominic NEGOTIATION
Claire TollnerArgentinaOnyama Limba UNQUALIFIED
Izzy GarufiAustraliaAnna Fali NEGOTIATION
Maisha RulapaughSpainStephen Shaw NEGOTIATION
Izzy GarufiUnited KingdomStephen Shaw NEW
Misaki RoysterAustraliaBernardo Dominic NEW
Aruna FigeroaGermanyAmy Elsner PROPOSAL
Jennifer AmigonAustraliaIvan Magalhaes NEGOTIATION
Kadeem FlosiRussiaAnna Fali NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Antonio CaudyAustralia2026-04-30Printing Dimensions NEW41Anna Fali
1001Mujtaba NickaUnited Kingdom2026-05-08Truhlar And Truhlar Attys RENEWAL38Anna Fali
1002Izzy GarufiIndia2026-04-17Benton, John B Jr UNQUALIFIED56Ivan Magalhaes
1003Murillo MaletUnited Kingdom2026-04-30Morlong Associates PROPOSAL20Onyama Limba
1004Maisha RulapaughCanada2026-05-02Feiner Bros QUALIFIED44Xuxue Feng
1005Nicolas IturbideRussia2026-05-10Truhlar And Truhlar Attys NEW74Xuxue Feng
1006Isabel BowleyCanada2026-04-25Rousseaux, Michael Esq QUALIFIED61Stephen Shaw
1007Clifford RimCanada2026-04-27Chemel, James L Cpa UNQUALIFIED84Xuxue Feng
1008James ButtCanada2026-04-22Commercial Press QUALIFIED48Amy Elsner
1009Costa DilliardGermany2026-05-09Chemel, James L Cpa NEGOTIATION98Amy Elsner
1010Kadeem FlosiItaly2026-04-17Chemel, James L Cpa NEGOTIATION12Stephen Shaw
1011Jones VocelkaJapan2026-05-14Chemel, James L Cpa NEGOTIATION69Stephen Shaw
1012Aika InouyeGermany2026-04-25Commercial Press PROPOSAL45Anna Fali
1013Greenwood BologniaItaly2026-04-28Rousseaux, Michael Esq QUALIFIED55Asiya Javayant
1014James ButtGermany2026-04-19Chemel, James L Cpa NEGOTIATION99Asiya Javayant
1015Julie StensethGermany2026-04-30Benton, John B Jr NEW51Ioni Bowcher
1016Leja CaldareraBrazil2026-04-26King, Christopher A Esq QUALIFIED85Anna Fali
1017Johnson SergiIndia2026-05-08Benton, John B Jr NEGOTIATION76Asiya Javayant
1018Morrow RutaAustralia2026-04-30Printing Dimensions UNQUALIFIED48Anna Fali
1019Misaki RoysterFrance2026-04-25Feiner Bros QUALIFIED32Ivan Magalhaes
1020Faith GillianJapan2026-05-10Feltz Printing Service QUALIFIED35Elwin Sharvill
1021Morrow RutaArgentina2026-05-06Feltz Printing Service PROPOSAL59Stephen Shaw
1022Darci PoquetteGermany2026-04-19King, Christopher A Esq NEW43Ioni Bowcher
1023Clifford RimArgentina2026-05-05Chemel, James L Cpa NEW99Ioni Bowcher
1024David DarakjyGermany2026-04-22Chapman, Ross E Esq NEW37Amy Elsner
1025Kaitlin OstroskyAustralia2026-05-12Truhlar And Truhlar Attys NEW94Ioni Bowcher
1026Greenwood BologniaCanada2026-04-19Morlong Associates NEW31Asiya Javayant
1027Aditya KuskoCanada2026-05-14Rousseaux, Michael Esq QUALIFIED77Asiya Javayant
1028Izzy GarufiIndia2026-04-24Printing Dimensions UNQUALIFIED11Amy Elsner
1029Antonio CaudyItaly2026-05-07Buckley Miller Wright PROPOSAL54Ioni Bowcher
1030Francesco ShinkoJapan2026-04-24King, Christopher A Esq PROPOSAL18Bernardo Dominic
1031Ricardo GauchoCanada2026-05-15Benton, John B Jr NEW93Onyama Limba
1032Silvio SlusarskiArgentina2026-05-07King, Christopher A Esq QUALIFIED75Amy Elsner
1033Greenwood BologniaUnited Kingdom2026-04-28King, Christopher A Esq NEGOTIATION56Ioni Bowcher
1034Stacey MacleadCanada2026-04-20Benton, John B Jr PROPOSAL19Bernardo Dominic
1035Jones VocelkaSpain2026-04-18Printing Dimensions NEW42Ivan Magalhaes
1036Julie StensethArgentina2026-05-12Rangoni Of Florence NEW17Onyama Limba
1037Jennifer AmigonRussia2026-05-16Rousseaux, Michael Esq QUALIFIED28Stephen Shaw
1038Morrow RutaRussia2026-04-27Chapman, Ross E Esq QUALIFIED49Bernardo Dominic
1039Emily WhobreyRussia2026-05-08Benton, John B Jr NEW4Ioni Bowcher
1040Salvatore StockhamBrazil2026-04-17Feltz Printing Service NEGOTIATION96Bernardo Dominic
1041Jennifer AmigonArgentina2026-04-30Chapman, Ross E Esq QUALIFIED73Anna Fali
1042Isabel BowleyIndia2026-05-01King, Christopher A Esq RENEWAL86Xuxue Feng
1043Maria MarrierIndia2026-04-27King, Christopher A Esq NEW15Anna Fali
1044Octavia MaletBrazil2026-05-09Morlong Associates PROPOSAL32Anna Fali
1045Nicolas IturbideItaly2026-05-11Rousseaux, Michael Esq NEGOTIATION64Stephen Shaw
1046Deepesh ChuiArgentina2026-04-27Benton, John B Jr RENEWAL59Asiya Javayant
1047Alejandro PerinSpain2026-05-11Printing Dimensions RENEWAL43Xuxue Feng
1048Murillo MaletCanada2026-04-30Rousseaux, Michael Esq NEW51Onyama Limba
1049Isabel BowleySpain2026-05-15Rousseaux, Michael Esq RENEWAL5Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Kaitlin OstroskyCanadaXuxue Feng QUALIFIED
Aruna FigeroaJapanStephen Shaw UNQUALIFIED
Aditya KuskoAustraliaAnna Fali PROPOSAL
David DarakjyRussiaOnyama Limba RENEWAL
Antonio CaudyAustraliaOnyama Limba QUALIFIED
Maisha RulapaughFranceOnyama Limba NEGOTIATION
Costa DilliardIndiaStephen Shaw RENEWAL
Munro FerenczBrazilAsiya Javayant NEW
David DarakjyBrazilStephen Shaw UNQUALIFIED
Faith GillianRussiaIvan Magalhaes NEGOTIATION
Salvatore StockhamGermanyAnna Fali QUALIFIED
Aditya KuskoJapanBernardo Dominic QUALIFIED
Kaitlin OstroskySpainAnna Fali UNQUALIFIED
Aruna FigeroaIndiaOnyama Limba PROPOSAL
Leon OldroydJapanAmy Elsner QUALIFIED
James ButtAustraliaIoni Bowcher NEW
Clifford RimRussiaIoni Bowcher NEW
Mayumi KolmetzItalyIvan Magalhaes NEW
Mayumi KolmetzGermanyAnna Fali NEW
Aditya KuskoSpainAnna Fali RENEWAL
Maisha RulapaughItalyIoni Bowcher UNQUALIFIED
Ivar PaprockiAustraliaStephen Shaw RENEWAL
Aruna FigeroaFranceAsiya Javayant NEGOTIATION
Chavez BriddickGermanyStephen Shaw PROPOSAL
Darci PoquetteIndiaElwin Sharvill UNQUALIFIED
Leon OldroydItalyAnna Fali NEW
Silvio SlusarskiItalyXuxue Feng UNQUALIFIED
Ivar PaprockiIndiaStephen Shaw RENEWAL
Jones VocelkaRussiaElwin Sharvill RENEWAL
Greenwood BologniaFranceStephen Shaw NEW
Munro FerenczItalyElwin Sharvill PROPOSAL
Greenwood BologniaAustraliaIvan Magalhaes UNQUALIFIED
Arvin AlbaresItalyAmy Elsner UNQUALIFIED
David DarakjyAustraliaIoni Bowcher RENEWAL
Ivar PaprockiArgentinaIoni Bowcher NEW
Octavia MaletBrazilIvan Magalhaes UNQUALIFIED
Munro FerenczFranceAsiya Javayant NEW
Smith GlickRussiaIoni Bowcher QUALIFIED
David DarakjyAustraliaXuxue Feng NEW
Julie StensethSpainAsiya Javayant PROPOSAL
Chavez BriddickJapanStephen Shaw NEGOTIATION
Munro FerenczRussiaElwin Sharvill PROPOSAL
Jones VocelkaFranceStephen Shaw NEGOTIATION
Juan WieserJapanIvan Magalhaes PROPOSAL
Aditya KuskoArgentinaAnna Fali NEW
Faith GillianIndiaAmy Elsner NEGOTIATION
Greenwood BologniaFranceIvan Magalhaes UNQUALIFIED
Rodrigues CampainCanadaBernardo Dominic NEGOTIATION
Smith GlickItalyXuxue Feng NEGOTIATION
Silvio SlusarskiArgentinaAsiya Javayant PROPOSAL
Frozen Columns
Name
Francesco Shinko
Jefferson Schemmer
Aruna Figeroa
Aruna Figeroa
Faith Gillian
Deepesh Chui
Izzy Garufi
Darci Poquette
Nicolas Iturbide
Misaki Royster
Jennifer Amigon
Faith Gillian
Misaki Royster
Murillo Malet
Leon Oldroyd
Aruna Figeroa
Emily Whobrey
Nicolas Iturbide
Octavia Malet
Octavia Malet
Mayumi Kolmetz
Smith Glick
Ashley Doe
Rodrigues Campain
Munro Ferencz
Jones Vocelka
Mayumi Kolmetz
Julie Stenseth
Smith Glick
Jennifer Amigon
Alejandro Perin
Jones Vocelka
Kadeem Flosi
Aika Inouye
Chavez Briddick
Misaki Royster
Antonio Caudy
Cody Saylors
Antonio Caudy
Jennifer Amigon
Greenwood Bolognia
Deepesh Chui
Mayumi Kolmetz
Kaitlin Ostrosky
Clifford Rim
Mayumi Kolmetz
Clifford Rim
Tony Foller
Rodrigues Campain
Claire Tollner
IdCountryDate
1000Japan2026-04-23
1001Russia2026-05-11
1002Brazil2026-05-09
1003Italy2026-05-09
1004Canada2026-04-19
1005Russia2026-05-03
1006India2026-05-03
1007United Kingdom2026-05-12
1008Australia2026-05-09
1009Russia2026-05-06
1010Australia2026-04-25
1011Canada2026-05-09
1012Japan2026-05-09
1013United Kingdom2026-05-14
1014Brazil2026-05-10
1015Australia2026-04-21
1016Argentina2026-05-08
1017Germany2026-04-19
1018France2026-04-20
1019Canada2026-05-06
1020Argentina2026-04-18
1021Spain2026-05-08
1022France2026-05-01
1023France2026-04-27
1024Germany2026-05-07
1025United Kingdom2026-04-27
1026Australia2026-05-10
1027United Kingdom2026-04-23
1028Spain2026-04-19
1029Spain2026-05-09
1030Japan2026-05-14
1031Australia2026-05-15
1032Argentina2026-05-14
1033France2026-04-22
1034Argentina2026-04-27
1035Japan2026-05-16
1036Russia2026-05-07
1037Russia2026-05-01
1038Italy2026-05-16
1039Canada2026-04-25
1040India2026-05-15
1041Germany2026-05-03
1042Spain2026-05-08
1043United Kingdom2026-05-05
1044Japan2026-05-03
1045Spain2026-04-26
1046France2026-05-16
1047France2026-04-26
1048France2026-05-16
1049Italy2026-04-17

On-Demand Data

NameIdCountryDate
Faith Gillian1000United Kingdom2026-05-05
Arvin Albares1001India2026-04-17
Ivar Paprocki1002Australia2026-05-02
Aruna Figeroa1003Canada2026-04-23
Misaki Royster1004Germany2026-05-05
Chavez Briddick1005Spain2026-04-21
David Darakjy1006India2026-05-13
Julie Stenseth1007United Kingdom2026-05-12
Stacey Maclead1008Russia2026-05-08
Alejandro Perin1009Brazil2026-04-24
Munro Ferencz1010Russia2026-05-07
Mujtaba Nicka1011Germany2026-05-06
Wickens Nestle1012United Kingdom2026-05-06
Adams Morasca1013Germany2026-05-12
Adams Morasca1014United Kingdom2026-05-04
Deepesh Chui1015Argentina2026-05-11
Octavia Malet1016Argentina2026-05-15
Kadeem Flosi1017United Kingdom2026-04-30
Aruna Figeroa1018France2026-04-25
Kadeem Flosi1019Australia2026-04-27
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Claire TollnerAustraliaAsiya Javayant UNQUALIFIED
Aditya KuskoGermanyXuxue Feng UNQUALIFIED
Adams MorascaAustraliaStephen Shaw NEW
Misaki RoysterSpainIvan Magalhaes PROPOSAL
Leon OldroydSpainBernardo Dominic UNQUALIFIED
Aika InouyeAustraliaXuxue Feng UNQUALIFIED
Mujtaba NickaRussiaIvan Magalhaes UNQUALIFIED
James ButtJapanAnna Fali NEGOTIATION
Costa DilliardSpainBernardo Dominic NEW
Ashley DoeItalyIoni Bowcher QUALIFIED
Kadeem FlosiBrazilXuxue Feng RENEWAL
Aruna FigeroaRussiaAnna Fali PROPOSAL
Johnson SergiCanadaIoni Bowcher UNQUALIFIED
Octavia MaletGermanyAnna Fali QUALIFIED
Aika InouyeRussiaAsiya Javayant NEW
Jones VocelkaIndiaBernardo Dominic PROPOSAL
Chavez BriddickCanadaOnyama Limba QUALIFIED
Mayumi KolmetzUnited KingdomAmy Elsner NEGOTIATION
Darci PoquetteFranceStephen Shaw NEGOTIATION
Faith GillianRussiaAsiya Javayant NEGOTIATION
Aditya KuskoArgentinaXuxue Feng NEW
Claire TollnerRussiaAmy Elsner NEW
Greenwood BologniaAustraliaAmy Elsner NEGOTIATION
Juan WieserRussiaAmy Elsner PROPOSAL
Ashley DoeSpainIvan Magalhaes QUALIFIED
Aruna FigeroaSpainStephen Shaw NEW
Aditya KuskoRussiaAnna Fali QUALIFIED
Jefferson SchemmerItalyIoni Bowcher QUALIFIED
Ricardo GauchoSpainAsiya Javayant UNQUALIFIED
Aditya KuskoCanadaBernardo Dominic QUALIFIED
Murillo MaletItalyIvan Magalhaes PROPOSAL
Francesco ShinkoArgentinaAnna Fali PROPOSAL
Aika InouyeJapanStephen Shaw PROPOSAL
James ButtJapanIvan Magalhaes NEGOTIATION
Jeanfrancois VenereArgentinaIoni Bowcher RENEWAL
Stacey MacleadAustraliaXuxue Feng NEGOTIATION
Tony FollerAustraliaAnna Fali UNQUALIFIED
Sinclair WaycottGermanyElwin Sharvill NEW
Jennifer AmigonFranceIoni Bowcher RENEWAL
Juan WieserFranceAmy Elsner 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>