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
Silvio SlusarskiIndiaElwin Sharvill NEW
Smith GlickRussiaAsiya Javayant PROPOSAL
Mujtaba NickaItalyElwin Sharvill RENEWAL
David DarakjyRussiaElwin Sharvill RENEWAL
Smith GlickJapanOnyama Limba RENEWAL
Isabel BowleyCanadaOnyama Limba RENEWAL
James ButtJapanStephen Shaw PROPOSAL
James ButtFranceXuxue Feng NEGOTIATION
Ashley DoeSpainStephen Shaw NEGOTIATION
Adams MorascaAustraliaAmy Elsner NEGOTIATION
Leja CaldareraRussiaAnna Fali NEW
James ButtGermanyXuxue Feng NEW
Leon OldroydIndiaAmy Elsner RENEWAL
Clifford RimCanadaOnyama Limba RENEWAL
Isabel BowleyIndiaOnyama Limba RENEWAL
Julie StensethGermanyXuxue Feng RENEWAL
Leon OldroydGermanyIvan Magalhaes UNQUALIFIED
Salvatore StockhamIndiaIoni Bowcher NEGOTIATION
Arvin AlbaresJapanIvan Magalhaes UNQUALIFIED
Munro FerenczFranceElwin Sharvill NEGOTIATION
Juan WieserGermanyAsiya Javayant PROPOSAL
Sinclair WaycottAustraliaXuxue Feng RENEWAL
Ashley DoeCanadaIoni Bowcher NEGOTIATION
Darci PoquetteUnited KingdomIoni Bowcher UNQUALIFIED
Clifford RimAustraliaElwin Sharvill NEGOTIATION
Nicolas IturbideGermanyBernardo Dominic UNQUALIFIED
Clifford RimBrazilIoni Bowcher PROPOSAL
Stacey MacleadFranceElwin Sharvill PROPOSAL
Octavia MaletArgentinaStephen Shaw NEW
Sinclair WaycottSpainAsiya Javayant RENEWAL
Ricardo GauchoFranceXuxue Feng NEGOTIATION
Emily WhobreyItalyAmy Elsner NEGOTIATION
Francesco ShinkoBrazilIvan Magalhaes UNQUALIFIED
Emily WhobreyGermanyAnna Fali NEGOTIATION
Maria MarrierAustraliaIvan Magalhaes RENEWAL
Isabel BowleyUnited KingdomIoni Bowcher UNQUALIFIED
Nicolas IturbideGermanyIoni Bowcher NEGOTIATION
Misaki RoysterRussiaStephen Shaw QUALIFIED
Francesco ShinkoIndiaBernardo Dominic NEGOTIATION
Kaitlin OstroskyCanadaIoni Bowcher UNQUALIFIED
Stacey MacleadCanadaIvan Magalhaes NEW
Ivar PaprockiFranceStephen Shaw RENEWAL
Cody SaylorsSpainAnna Fali NEW
Morrow RutaCanadaBernardo Dominic NEW
Sinclair WaycottAustraliaAnna Fali NEW
Ricardo GauchoGermanyAnna Fali UNQUALIFIED
James ButtUnited KingdomIvan Magalhaes QUALIFIED
Johnson SergiGermanyAmy Elsner QUALIFIED
Jennifer AmigonFranceAsiya Javayant PROPOSAL
Mujtaba NickaUnited KingdomAmy Elsner RENEWAL
Horizontal
NameCountryRepresentativeStatus
Johnson SergiGermanyBernardo Dominic NEGOTIATION
Faith GillianItalyElwin Sharvill NEW
Darci PoquetteBrazilOnyama Limba RENEWAL
Isabel BowleyIndiaAmy Elsner PROPOSAL
Claire TollnerJapanIvan Magalhaes RENEWAL
Jeanfrancois VenereIndiaAnna Fali UNQUALIFIED
Tony FollerGermanyElwin Sharvill NEW
Greenwood BologniaFranceBernardo Dominic QUALIFIED
Sinclair WaycottItalyStephen Shaw QUALIFIED
Arvin AlbaresUnited KingdomOnyama Limba QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Kaitlin OstroskyAustralia2026-05-25Printing Dimensions PROPOSAL48Onyama Limba
1001Johnson SergiFrance2026-06-15Rangoni Of Florence PROPOSAL31Ioni Bowcher
1002Rodrigues CampainItaly2026-06-18Feltz Printing Service PROPOSAL70Xuxue Feng
1003Jennifer AmigonJapan2026-06-05Dorl, James J Esq NEW95Ivan Magalhaes
1004Mayumi KolmetzCanada2026-06-10Rangoni Of Florence QUALIFIED18Xuxue Feng
1005Jennifer AmigonAustralia2026-05-25Rangoni Of Florence UNQUALIFIED41Anna Fali
1006Chavez BriddickCanada2026-06-18Rangoni Of Florence RENEWAL5Bernardo Dominic
1007Octavia MaletItaly2026-06-04Chapman, Ross E Esq UNQUALIFIED33Xuxue Feng
1008Greenwood BologniaBrazil2026-05-26Chanay, Jeffrey A Esq NEW84Stephen Shaw
1009Smith GlickBrazil2026-05-30Rangoni Of Florence RENEWAL69Bernardo Dominic
1010Adams MorascaGermany2026-06-09Feiner Bros RENEWAL36Onyama Limba
1011Mayumi KolmetzCanada2026-06-13Rousseaux, Michael Esq UNQUALIFIED2Stephen Shaw
1012Julie StensethCanada2026-06-20Truhlar And Truhlar Attys UNQUALIFIED62Elwin Sharvill
1013Silvio SlusarskiFrance2026-06-02Morlong Associates RENEWAL17Ioni Bowcher
1014Johnson SergiItaly2026-05-29Dorl, James J Esq PROPOSAL49Amy Elsner
1015Sinclair WaycottFrance2026-06-13Rangoni Of Florence NEW48Anna Fali
1016Leon OldroydCanada2026-06-19Benton, John B Jr PROPOSAL1Amy Elsner
1017Aditya KuskoGermany2026-06-13Benton, John B Jr QUALIFIED91Ivan Magalhaes
1018Wickens NestleBrazil2026-06-14Chemel, James L Cpa UNQUALIFIED2Ioni Bowcher
1019Jefferson SchemmerSpain2026-06-10Buckley Miller Wright RENEWAL31Elwin Sharvill
1020Maisha RulapaughSpain2026-06-05Morlong Associates NEW2Ivan Magalhaes
1021Ivar PaprockiFrance2026-05-25Rangoni Of Florence PROPOSAL77Onyama Limba
1022James ButtCanada2026-06-06Buckley Miller Wright NEW73Bernardo Dominic
1023Jennifer AmigonRussia2026-06-07Chapman, Ross E Esq RENEWAL20Stephen Shaw
1024Misaki RoysterIndia2026-06-19Benton, John B Jr RENEWAL28Anna Fali
1025Chavez BriddickUnited Kingdom2026-06-12Commercial Press NEW22Ioni Bowcher
1026Smith GlickArgentina2026-05-28Truhlar And Truhlar Attys NEW94Anna Fali
1027Mujtaba NickaItaly2026-05-22King, Christopher A Esq RENEWAL91Ivan Magalhaes
1028Darci PoquetteBrazil2026-06-14Printing Dimensions RENEWAL4Asiya Javayant
1029Jennifer AmigonUnited Kingdom2026-06-09Printing Dimensions PROPOSAL5Amy Elsner
1030Emily WhobreyCanada2026-05-22Feiner Bros QUALIFIED92Ioni Bowcher
1031Salvatore StockhamBrazil2026-05-29Morlong Associates QUALIFIED61Elwin Sharvill
1032Antonio CaudyFrance2026-05-24Commercial Press UNQUALIFIED33Bernardo Dominic
1033Greenwood BologniaItaly2026-06-10Rousseaux, Michael Esq UNQUALIFIED41Ioni Bowcher
1034Johnson SergiItaly2026-05-23Feiner Bros NEGOTIATION79Elwin Sharvill
1035Leon OldroydSpain2026-05-24King, Christopher A Esq NEGOTIATION85Elwin Sharvill
1036Chavez BriddickRussia2026-06-17Benton, John B Jr QUALIFIED35Bernardo Dominic
1037Jones VocelkaSpain2026-06-10Commercial Press UNQUALIFIED40Asiya Javayant
1038Ricardo GauchoCanada2026-06-13Rangoni Of Florence QUALIFIED12Ioni Bowcher
1039Deepesh ChuiJapan2026-06-15Benton, John B Jr UNQUALIFIED24Ioni Bowcher
1040Juan WieserJapan2026-05-31Truhlar And Truhlar Attys NEW94Ivan Magalhaes
1041Tony FollerIndia2026-06-15Buckley Miller Wright QUALIFIED80Stephen Shaw
1042Ashley DoeAustralia2026-05-24Feiner Bros NEW46Amy Elsner
1043Aditya KuskoFrance2026-05-28King, Christopher A Esq NEGOTIATION60Elwin Sharvill
1044Morrow RutaJapan2026-06-12Buckley Miller Wright QUALIFIED59Amy Elsner
1045Emily WhobreyAustralia2026-05-23King, Christopher A Esq PROPOSAL90Elwin Sharvill
1046Faith GillianItaly2026-06-03Truhlar And Truhlar Attys UNQUALIFIED35Ioni Bowcher
1047Arvin AlbaresBrazil2026-06-08Chanay, Jeffrey A Esq NEGOTIATION50Asiya Javayant
1048Antonio CaudyArgentina2026-06-12Rangoni Of Florence UNQUALIFIED59Onyama Limba
1049Jefferson SchemmerBrazil2026-05-29Chemel, James L Cpa RENEWAL32Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Juan WieserGermanyBernardo Dominic RENEWAL
Juan WieserRussiaIvan Magalhaes UNQUALIFIED
Johnson SergiIndiaAnna Fali PROPOSAL
Jeanfrancois VenereGermanyXuxue Feng NEW
Leon OldroydCanadaIoni Bowcher RENEWAL
Izzy GarufiFranceAsiya Javayant UNQUALIFIED
Jennifer AmigonItalyStephen Shaw UNQUALIFIED
Greenwood BologniaGermanyElwin Sharvill NEW
Adams MorascaJapanIvan Magalhaes UNQUALIFIED
Leja CaldareraAustraliaAnna Fali RENEWAL
Rodrigues CampainBrazilBernardo Dominic UNQUALIFIED
Cody SaylorsItalyXuxue Feng NEW
Octavia MaletJapanOnyama Limba NEW
Kaitlin OstroskyArgentinaAmy Elsner PROPOSAL
Darci PoquetteGermanyAmy Elsner NEGOTIATION
David DarakjySpainBernardo Dominic QUALIFIED
Jefferson SchemmerJapanOnyama Limba UNQUALIFIED
Tony FollerSpainIvan Magalhaes PROPOSAL
Mujtaba NickaArgentinaBernardo Dominic PROPOSAL
Octavia MaletArgentinaAnna Fali UNQUALIFIED
Johnson SergiIndiaElwin Sharvill RENEWAL
Chavez BriddickSpainAmy Elsner UNQUALIFIED
Ashley DoeFranceAnna Fali RENEWAL
Ricardo GauchoJapanXuxue Feng UNQUALIFIED
Stacey MacleadUnited KingdomIvan Magalhaes NEGOTIATION
Cody SaylorsItalyAnna Fali NEW
Wickens NestleBrazilElwin Sharvill QUALIFIED
Ashley DoeSpainAmy Elsner PROPOSAL
Wickens NestleRussiaXuxue Feng QUALIFIED
Stacey MacleadSpainElwin Sharvill RENEWAL
Aditya KuskoUnited KingdomAnna Fali QUALIFIED
Cody SaylorsItalyElwin Sharvill RENEWAL
Stacey MacleadItalyAmy Elsner QUALIFIED
Johnson SergiRussiaXuxue Feng UNQUALIFIED
Wickens NestleJapanAmy Elsner QUALIFIED
Antonio CaudyUnited KingdomStephen Shaw NEGOTIATION
Leon OldroydArgentinaElwin Sharvill NEW
Octavia MaletRussiaXuxue Feng QUALIFIED
Jennifer AmigonBrazilOnyama Limba UNQUALIFIED
Julie StensethGermanyBernardo Dominic UNQUALIFIED
Greenwood BologniaJapanOnyama Limba NEGOTIATION
Octavia MaletArgentinaAnna Fali NEW
David DarakjySpainXuxue Feng RENEWAL
Clifford RimSpainBernardo Dominic QUALIFIED
Munro FerenczGermanyElwin Sharvill PROPOSAL
Mujtaba NickaGermanyIoni Bowcher UNQUALIFIED
Adams MorascaBrazilIoni Bowcher NEGOTIATION
Kadeem FlosiItalyBernardo Dominic UNQUALIFIED
Faith GillianBrazilStephen Shaw QUALIFIED
Leon OldroydAustraliaIoni Bowcher NEGOTIATION
Frozen Columns
Name
Aditya Kusko
Julie Stenseth
Aditya Kusko
Izzy Garufi
Jefferson Schemmer
James Butt
Alejandro Perin
Murillo Malet
Chavez Briddick
Stacey Maclead
Aruna Figeroa
Cody Saylors
Claire Tollner
Antonio Caudy
Leon Oldroyd
Murillo Malet
Greenwood Bolognia
Stacey Maclead
Jones Vocelka
Cody Saylors
Aditya Kusko
Nicolas Iturbide
Isabel Bowley
Costa Dilliard
Jennifer Amigon
Octavia Malet
Nicolas Iturbide
David Darakjy
Morrow Ruta
Ashley Doe
Morrow Ruta
Juan Wieser
Chavez Briddick
Mayumi Kolmetz
Darci Poquette
Arvin Albares
Ashley Doe
Emily Whobrey
Juan Wieser
Kaitlin Ostrosky
Jeanfrancois Venere
Maria Marrier
Mayumi Kolmetz
Jefferson Schemmer
Greenwood Bolognia
Octavia Malet
Aruna Figeroa
Smith Glick
Antonio Caudy
Aika Inouye
IdCountryDate
1000Brazil2026-06-13
1001India2026-06-10
1002India2026-05-26
1003Russia2026-06-18
1004India2026-05-27
1005Canada2026-05-23
1006Italy2026-05-25
1007United Kingdom2026-05-23
1008Australia2026-05-22
1009Italy2026-06-16
1010Japan2026-05-27
1011Argentina2026-06-18
1012Argentina2026-05-28
1013Brazil2026-05-22
1014Canada2026-05-31
1015Australia2026-05-28
1016France2026-05-23
1017India2026-05-23
1018Italy2026-05-29
1019Japan2026-05-26
1020Germany2026-06-14
1021Italy2026-05-22
1022United Kingdom2026-06-05
1023Canada2026-05-24
1024Argentina2026-05-24
1025Italy2026-06-10
1026Italy2026-06-20
1027Argentina2026-06-16
1028Canada2026-06-14
1029Italy2026-06-18
1030Germany2026-06-02
1031India2026-06-17
1032Canada2026-06-05
1033Brazil2026-06-06
1034India2026-06-19
1035Italy2026-06-12
1036Canada2026-06-10
1037Japan2026-06-19
1038Argentina2026-05-27
1039Canada2026-05-31
1040Russia2026-06-06
1041India2026-06-10
1042France2026-05-31
1043Japan2026-05-25
1044Brazil2026-06-05
1045Brazil2026-05-25
1046Russia2026-06-06
1047Germany2026-05-29
1048Italy2026-05-22
1049United Kingdom2026-06-07

On-Demand Data

NameIdCountryDate
Octavia Malet1000France2026-06-09
Emily Whobrey1001India2026-05-22
Arvin Albares1002Brazil2026-05-26
Julie Stenseth1003France2026-06-08
Chavez Briddick1004Italy2026-06-15
Ivar Paprocki1005Argentina2026-06-09
Smith Glick1006Italy2026-06-12
Octavia Malet1007Germany2026-06-16
Kaitlin Ostrosky1008Spain2026-06-05
Munro Ferencz1009India2026-05-24
Johnson Sergi1010India2026-06-16
Alejandro Perin1011Japan2026-06-01
Isabel Bowley1012United Kingdom2026-05-30
Leon Oldroyd1013India2026-06-09
Costa Dilliard1014Italy2026-05-25
Leja Caldarera1015Australia2026-06-14
Francesco Shinko1016France2026-05-30
Arvin Albares1017Russia2026-05-26
Smith Glick1018United Kingdom2026-06-09
Ashley Doe1019India2026-05-28
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aruna FigeroaGermanyXuxue Feng NEGOTIATION
Aika InouyeUnited KingdomXuxue Feng NEW
Smith GlickIndiaXuxue Feng PROPOSAL
Salvatore StockhamItalyXuxue Feng NEGOTIATION
Leja CaldareraArgentinaAmy Elsner NEW
Nicolas IturbideSpainElwin Sharvill PROPOSAL
Arvin AlbaresFranceAsiya Javayant QUALIFIED
Tony FollerJapanStephen Shaw PROPOSAL
David DarakjyGermanyIvan Magalhaes NEGOTIATION
Johnson SergiGermanyAsiya Javayant RENEWAL
Adams MorascaJapanOnyama Limba NEGOTIATION
Chavez BriddickSpainAsiya Javayant QUALIFIED
Greenwood BologniaItalyBernardo Dominic PROPOSAL
Leon OldroydIndiaAsiya Javayant NEGOTIATION
Smith GlickSpainAsiya Javayant NEW
Murillo MaletFranceBernardo Dominic NEW
Wickens NestleUnited KingdomOnyama Limba NEGOTIATION
Salvatore StockhamCanadaAsiya Javayant NEW
Jennifer AmigonGermanyAsiya Javayant QUALIFIED
Antonio CaudyIndiaIvan Magalhaes PROPOSAL
James ButtJapanAnna Fali NEW
Munro FerenczUnited KingdomAsiya Javayant QUALIFIED
Kadeem FlosiCanadaAmy Elsner PROPOSAL
Misaki RoysterRussiaStephen Shaw RENEWAL
Leon OldroydUnited KingdomElwin Sharvill NEGOTIATION
Rodrigues CampainIndiaAsiya Javayant NEW
Adams MorascaBrazilOnyama Limba UNQUALIFIED
James ButtSpainAsiya Javayant PROPOSAL
Jefferson SchemmerAustraliaAnna Fali RENEWAL
Izzy GarufiRussiaXuxue Feng QUALIFIED
Jefferson SchemmerCanadaElwin Sharvill PROPOSAL
Deepesh ChuiBrazilAmy Elsner NEW
Leja CaldareraSpainBernardo Dominic RENEWAL
Aditya KuskoRussiaIvan Magalhaes NEGOTIATION
Munro FerenczSpainAmy Elsner PROPOSAL
Stacey MacleadGermanyAmy Elsner PROPOSAL
Claire TollnerArgentinaAsiya Javayant NEW
Maisha RulapaughSpainOnyama Limba QUALIFIED
Antonio CaudyGermanyIvan Magalhaes NEW
Faith GillianArgentinaAnna Fali NEGOTIATION

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