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
Smith GlickUnited KingdomStephen Shaw NEGOTIATION
Mayumi KolmetzJapanAmy Elsner QUALIFIED
Cody SaylorsCanadaBernardo Dominic UNQUALIFIED
Kaitlin OstroskyArgentinaXuxue Feng NEGOTIATION
Greenwood BologniaCanadaAsiya Javayant PROPOSAL
Leja CaldareraItalyAmy Elsner NEGOTIATION
Misaki RoysterItalyXuxue Feng QUALIFIED
Kadeem FlosiRussiaAsiya Javayant QUALIFIED
Maria MarrierSpainIoni Bowcher NEW
Tony FollerIndiaOnyama Limba QUALIFIED
Julie StensethJapanStephen Shaw UNQUALIFIED
Leja CaldareraAustraliaStephen Shaw UNQUALIFIED
Ashley DoeGermanyIvan Magalhaes NEW
Arvin AlbaresRussiaAsiya Javayant NEGOTIATION
Ivar PaprockiJapanBernardo Dominic NEW
Alejandro PerinFranceIvan Magalhaes PROPOSAL
Morrow RutaIndiaXuxue Feng RENEWAL
Nicolas IturbideRussiaXuxue Feng UNQUALIFIED
Alejandro PerinCanadaIvan Magalhaes QUALIFIED
Ashley DoeCanadaIoni Bowcher UNQUALIFIED
Salvatore StockhamGermanyElwin Sharvill RENEWAL
Deepesh ChuiAustraliaOnyama Limba NEW
Deepesh ChuiRussiaAnna Fali RENEWAL
Jefferson SchemmerRussiaElwin Sharvill UNQUALIFIED
Antonio CaudyItalyAnna Fali QUALIFIED
Adams MorascaJapanElwin Sharvill NEW
Munro FerenczIndiaOnyama Limba NEGOTIATION
Kaitlin OstroskyRussiaXuxue Feng RENEWAL
Smith GlickSpainIvan Magalhaes UNQUALIFIED
David DarakjyArgentinaXuxue Feng PROPOSAL
Mujtaba NickaSpainAnna Fali QUALIFIED
Kaitlin OstroskySpainOnyama Limba RENEWAL
Antonio CaudyIndiaOnyama Limba UNQUALIFIED
Aruna FigeroaSpainAmy Elsner PROPOSAL
Octavia MaletRussiaXuxue Feng NEW
Isabel BowleyCanadaStephen Shaw NEW
Leja CaldareraBrazilAsiya Javayant NEGOTIATION
Julie StensethRussiaBernardo Dominic UNQUALIFIED
Jennifer AmigonItalyOnyama Limba PROPOSAL
Julie StensethBrazilOnyama Limba UNQUALIFIED
Faith GillianBrazilIoni Bowcher PROPOSAL
Aika InouyeCanadaIoni Bowcher RENEWAL
Jeanfrancois VenereBrazilIvan Magalhaes NEW
Alejandro PerinJapanOnyama Limba RENEWAL
Sinclair WaycottItalyIvan Magalhaes NEGOTIATION
James ButtCanadaElwin Sharvill NEGOTIATION
Maria MarrierIndiaXuxue Feng QUALIFIED
Aika InouyeJapanStephen Shaw NEW
Silvio SlusarskiSpainElwin Sharvill QUALIFIED
James ButtGermanyAmy Elsner RENEWAL
Horizontal
NameCountryRepresentativeStatus
Jefferson SchemmerSpainXuxue Feng PROPOSAL
Adams MorascaRussiaOnyama Limba QUALIFIED
Izzy GarufiJapanElwin Sharvill RENEWAL
Munro FerenczSpainElwin Sharvill UNQUALIFIED
Ivar PaprockiBrazilAmy Elsner RENEWAL
Maisha RulapaughBrazilOnyama Limba NEGOTIATION
Jones VocelkaGermanyAmy Elsner QUALIFIED
Jones VocelkaAustraliaAnna Fali PROPOSAL
Alejandro PerinFranceIoni Bowcher NEW
Salvatore StockhamAustraliaIvan Magalhaes PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Ricardo GauchoItaly2026-05-31Feiner Bros PROPOSAL18Xuxue Feng
1001Leja CaldareraGermany2026-05-23Rangoni Of Florence PROPOSAL2Xuxue Feng
1002Faith GillianGermany2026-05-24Feiner Bros QUALIFIED58Ioni Bowcher
1003Cody SaylorsItaly2026-06-07Rangoni Of Florence RENEWAL31Onyama Limba
1004Mujtaba NickaSpain2026-05-14Feltz Printing Service RENEWAL11Onyama Limba
1005James ButtArgentina2026-05-21Buckley Miller Wright PROPOSAL86Onyama Limba
1006Aruna FigeroaArgentina2026-05-20Commercial Press UNQUALIFIED57Anna Fali
1007Morrow RutaArgentina2026-05-26Printing Dimensions UNQUALIFIED15Elwin Sharvill
1008Jefferson SchemmerCanada2026-05-24Feiner Bros PROPOSAL91Amy Elsner
1009Darci PoquetteJapan2026-05-14Rousseaux, Michael Esq PROPOSAL0Elwin Sharvill
1010Juan WieserJapan2026-05-22Feltz Printing Service NEW91Bernardo Dominic
1011Ivar PaprockiSpain2026-05-22Dorl, James J Esq UNQUALIFIED25Asiya Javayant
1012Ivar PaprockiGermany2026-05-22Morlong Associates NEW93Elwin Sharvill
1013Emily WhobreyItaly2026-05-16Morlong Associates UNQUALIFIED4Ioni Bowcher
1014Octavia MaletIndia2026-05-13Rangoni Of Florence QUALIFIED80Stephen Shaw
1015Nicolas IturbideGermany2026-05-15King, Christopher A Esq QUALIFIED90Stephen Shaw
1016Aika InouyeGermany2026-05-23Commercial Press NEW57Anna Fali
1017Arvin AlbaresFrance2026-06-09Buckley Miller Wright UNQUALIFIED91Stephen Shaw
1018Maria MarrierSpain2026-06-03Rousseaux, Michael Esq NEGOTIATION6Amy Elsner
1019Aditya KuskoSpain2026-06-07King, Christopher A Esq QUALIFIED55Anna Fali
1020James ButtGermany2026-06-06King, Christopher A Esq RENEWAL68Anna Fali
1021Sinclair WaycottUnited Kingdom2026-05-14Truhlar And Truhlar Attys UNQUALIFIED9Elwin Sharvill
1022Stacey MacleadFrance2026-05-18Buckley Miller Wright PROPOSAL67Anna Fali
1023Adams MorascaIndia2026-06-07Rangoni Of Florence RENEWAL89Ivan Magalhaes
1024Darci PoquetteIndia2026-05-14Commercial Press RENEWAL88Stephen Shaw
1025Ivar PaprockiAustralia2026-05-21Dorl, James J Esq NEW29Elwin Sharvill
1026Salvatore StockhamAustralia2026-05-19Benton, John B Jr NEGOTIATION76Anna Fali
1027Clifford RimIndia2026-05-14Benton, John B Jr NEGOTIATION55Stephen Shaw
1028Chavez BriddickRussia2026-06-03Feiner Bros NEGOTIATION18Onyama Limba
1029Emily WhobreyFrance2026-05-28Buckley Miller Wright NEGOTIATION14Xuxue Feng
1030Claire TollnerFrance2026-06-04Chanay, Jeffrey A Esq RENEWAL42Stephen Shaw
1031Rodrigues CampainAustralia2026-05-26Rousseaux, Michael Esq RENEWAL95Xuxue Feng
1032Darci PoquetteIndia2026-06-02Rangoni Of Florence NEW71Bernardo Dominic
1033Munro FerenczCanada2026-06-07Truhlar And Truhlar Attys NEW60Anna Fali
1034Munro FerenczSpain2026-06-08Morlong Associates UNQUALIFIED77Onyama Limba
1035Leon OldroydSpain2026-05-24Buckley Miller Wright NEW41Onyama Limba
1036Aditya KuskoArgentina2026-05-31Chemel, James L Cpa RENEWAL10Stephen Shaw
1037Darci PoquetteCanada2026-05-15Feltz Printing Service PROPOSAL30Ioni Bowcher
1038Johnson SergiGermany2026-06-03Feiner Bros QUALIFIED58Elwin Sharvill
1039Leja CaldareraUnited Kingdom2026-05-23Commercial Press NEW97Stephen Shaw
1040Ricardo GauchoItaly2026-06-08Chemel, James L Cpa UNQUALIFIED83Anna Fali
1041Morrow RutaFrance2026-05-24Commercial Press RENEWAL31Anna Fali
1042Munro FerenczItaly2026-05-30Feltz Printing Service NEW87Ivan Magalhaes
1043Mayumi KolmetzAustralia2026-06-07Feiner Bros UNQUALIFIED12Bernardo Dominic
1044David DarakjySpain2026-05-14Chemel, James L Cpa UNQUALIFIED28Elwin Sharvill
1045Julie StensethJapan2026-05-23Rousseaux, Michael Esq NEW58Ivan Magalhaes
1046Greenwood BologniaArgentina2026-05-22Dorl, James J Esq UNQUALIFIED71Anna Fali
1047Nicolas IturbideUnited Kingdom2026-05-15Feiner Bros UNQUALIFIED20Xuxue Feng
1048Deepesh ChuiBrazil2026-05-24Morlong Associates RENEWAL58Bernardo Dominic
1049Emily WhobreyItaly2026-05-15King, Christopher A Esq NEGOTIATION44Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Nicolas IturbideAustraliaElwin Sharvill RENEWAL
Jeanfrancois VenereGermanyBernardo Dominic QUALIFIED
Costa DilliardIndiaIoni Bowcher PROPOSAL
Ricardo GauchoUnited KingdomIoni Bowcher NEGOTIATION
David DarakjyFranceStephen Shaw QUALIFIED
Clifford RimJapanElwin Sharvill PROPOSAL
Octavia MaletGermanyBernardo Dominic NEGOTIATION
Kadeem FlosiFranceElwin Sharvill NEW
Jennifer AmigonArgentinaBernardo Dominic UNQUALIFIED
Aika InouyeBrazilIoni Bowcher NEGOTIATION
Leja CaldareraSpainAsiya Javayant QUALIFIED
Kaitlin OstroskyRussiaXuxue Feng RENEWAL
Ashley DoeRussiaOnyama Limba PROPOSAL
Salvatore StockhamJapanXuxue Feng NEGOTIATION
Faith GillianCanadaIoni Bowcher QUALIFIED
Mujtaba NickaJapanBernardo Dominic RENEWAL
Munro FerenczJapanElwin Sharvill NEGOTIATION
Isabel BowleySpainIoni Bowcher UNQUALIFIED
Isabel BowleyFranceAmy Elsner PROPOSAL
Kaitlin OstroskyJapanBernardo Dominic RENEWAL
Julie StensethArgentinaXuxue Feng NEW
Leon OldroydRussiaOnyama Limba QUALIFIED
Jeanfrancois VenereBrazilIvan Magalhaes RENEWAL
Salvatore StockhamGermanyAnna Fali QUALIFIED
Murillo MaletItalyBernardo Dominic NEW
Claire TollnerCanadaXuxue Feng QUALIFIED
Chavez BriddickGermanyOnyama Limba NEW
Alejandro PerinCanadaOnyama Limba NEGOTIATION
Misaki RoysterIndiaAnna Fali QUALIFIED
Tony FollerItalyStephen Shaw NEW
Costa DilliardAustraliaElwin Sharvill RENEWAL
Chavez BriddickRussiaElwin Sharvill NEGOTIATION
Cody SaylorsUnited KingdomIoni Bowcher QUALIFIED
Stacey MacleadBrazilIvan Magalhaes PROPOSAL
Silvio SlusarskiUnited KingdomAnna Fali PROPOSAL
Maisha RulapaughAustraliaXuxue Feng NEW
Sinclair WaycottCanadaAnna Fali NEGOTIATION
James ButtIndiaIvan Magalhaes NEW
Sinclair WaycottAustraliaStephen Shaw RENEWAL
Jones VocelkaIndiaAmy Elsner UNQUALIFIED
Maisha RulapaughCanadaStephen Shaw NEW
Aika InouyeAustraliaStephen Shaw UNQUALIFIED
Wickens NestleBrazilIvan Magalhaes PROPOSAL
Tony FollerGermanyIvan Magalhaes UNQUALIFIED
Izzy GarufiCanadaAmy Elsner UNQUALIFIED
Jones VocelkaFranceOnyama Limba NEW
Stacey MacleadAustraliaAmy Elsner PROPOSAL
Wickens NestleUnited KingdomAsiya Javayant RENEWAL
David DarakjyFranceIoni Bowcher NEGOTIATION
Chavez BriddickArgentinaAsiya Javayant PROPOSAL
Frozen Columns
Name
Juan Wieser
Aika Inouye
Chavez Briddick
Arvin Albares
Ricardo Gaucho
Arvin Albares
Emily Whobrey
Costa Dilliard
James Butt
Stacey Maclead
Mayumi Kolmetz
Adams Morasca
Ashley Doe
Clifford Rim
Octavia Malet
Rodrigues Campain
Julie Stenseth
Misaki Royster
Mujtaba Nicka
Octavia Malet
Munro Ferencz
Stacey Maclead
Juan Wieser
Faith Gillian
Arvin Albares
Stacey Maclead
Aruna Figeroa
Jones Vocelka
Kadeem Flosi
Aika Inouye
Jennifer Amigon
Emily Whobrey
David Darakjy
Jeanfrancois Venere
Aditya Kusko
Juan Wieser
Ivar Paprocki
Murillo Malet
Costa Dilliard
Jennifer Amigon
Clifford Rim
Emily Whobrey
Adams Morasca
Julie Stenseth
Julie Stenseth
Darci Poquette
Stacey Maclead
Kadeem Flosi
David Darakjy
Greenwood Bolognia
IdCountryDate
1000Spain2026-05-15
1001United Kingdom2026-05-22
1002Argentina2026-06-07
1003Japan2026-05-28
1004United Kingdom2026-05-31
1005Argentina2026-05-23
1006Argentina2026-05-18
1007Argentina2026-05-29
1008Italy2026-06-03
1009Australia2026-06-03
1010Japan2026-05-19
1011Russia2026-05-15
1012France2026-05-29
1013Brazil2026-05-29
1014Spain2026-05-19
1015Argentina2026-05-21
1016India2026-05-14
1017Australia2026-05-13
1018Brazil2026-05-24
1019Germany2026-05-27
1020Australia2026-05-21
1021India2026-05-30
1022Argentina2026-05-23
1023Russia2026-05-13
1024Italy2026-06-08
1025France2026-06-03
1026Italy2026-05-26
1027United Kingdom2026-05-20
1028France2026-05-14
1029Germany2026-05-30
1030Canada2026-05-12
1031Argentina2026-05-14
1032Argentina2026-06-04
1033Germany2026-06-06
1034Canada2026-05-26
1035United Kingdom2026-06-01
1036Australia2026-05-24
1037Australia2026-06-08
1038Russia2026-05-29
1039Germany2026-05-21
1040Germany2026-06-02
1041France2026-05-15
1042France2026-06-09
1043India2026-05-21
1044Canada2026-05-19
1045Brazil2026-06-04
1046Germany2026-05-29
1047Brazil2026-05-19
1048Spain2026-05-24
1049India2026-05-29

On-Demand Data

NameIdCountryDate
Ricardo Gaucho1000Italy2026-05-28
Nicolas Iturbide1001Russia2026-06-09
Morrow Ruta1002United Kingdom2026-05-15
Maisha Rulapaugh1003India2026-05-19
Leon Oldroyd1004Italy2026-05-22
Ricardo Gaucho1005France2026-05-12
James Butt1006France2026-05-28
Misaki Royster1007Spain2026-05-27
Cody Saylors1008United Kingdom2026-05-24
Jefferson Schemmer1009Spain2026-06-08
Morrow Ruta1010Japan2026-06-03
Cody Saylors1011Australia2026-05-30
Tony Foller1012Spain2026-06-06
Adams Morasca1013Japan2026-05-26
Chavez Briddick1014India2026-05-16
Stacey Maclead1015Australia2026-06-03
Leja Caldarera1016Japan2026-05-23
Aika Inouye1017Italy2026-05-11
Claire Tollner1018Germany2026-05-12
Jones Vocelka1019Italy2026-06-06
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Tony FollerGermanyAsiya Javayant NEW
Tony FollerRussiaElwin Sharvill UNQUALIFIED
Deepesh ChuiBrazilIvan Magalhaes RENEWAL
Jennifer AmigonArgentinaElwin Sharvill NEW
Murillo MaletGermanyAsiya Javayant UNQUALIFIED
Maisha RulapaughRussiaAmy Elsner NEGOTIATION
Juan WieserAustraliaIoni Bowcher QUALIFIED
Chavez BriddickAustraliaAmy Elsner QUALIFIED
Morrow RutaIndiaBernardo Dominic NEW
Chavez BriddickSpainStephen Shaw UNQUALIFIED
Mujtaba NickaCanadaIvan Magalhaes NEW
Maisha RulapaughIndiaIoni Bowcher RENEWAL
Silvio SlusarskiBrazilIoni Bowcher NEGOTIATION
Aditya KuskoFranceIoni Bowcher PROPOSAL
Tony FollerFranceIvan Magalhaes NEGOTIATION
Misaki RoysterItalyElwin Sharvill NEW
Alejandro PerinItalyXuxue Feng UNQUALIFIED
Kaitlin OstroskyCanadaAmy Elsner NEGOTIATION
Murillo MaletUnited KingdomElwin Sharvill NEW
Johnson SergiCanadaIvan Magalhaes PROPOSAL
Jennifer AmigonGermanyAmy Elsner UNQUALIFIED
Mayumi KolmetzIndiaIoni Bowcher NEW
Izzy GarufiRussiaAsiya Javayant QUALIFIED
Maria MarrierUnited KingdomElwin Sharvill UNQUALIFIED
Darci PoquetteCanadaIoni Bowcher PROPOSAL
Adams MorascaAustraliaAmy Elsner NEGOTIATION
Mujtaba NickaGermanyXuxue Feng PROPOSAL
Mujtaba NickaGermanyIoni Bowcher QUALIFIED
Wickens NestleRussiaIvan Magalhaes QUALIFIED
Claire TollnerCanadaBernardo Dominic NEW
Isabel BowleyFranceBernardo Dominic NEGOTIATION
Nicolas IturbideBrazilAmy Elsner NEGOTIATION
Julie StensethIndiaElwin Sharvill QUALIFIED
Mayumi KolmetzAustraliaXuxue Feng QUALIFIED
Munro FerenczSpainBernardo Dominic PROPOSAL
Munro FerenczItalyXuxue Feng UNQUALIFIED
Jennifer AmigonCanadaStephen Shaw RENEWAL
Jennifer AmigonUnited KingdomIoni Bowcher UNQUALIFIED
Stacey MacleadUnited KingdomIoni Bowcher RENEWAL
Jones VocelkaUnited KingdomAnna Fali 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>