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
Maisha RulapaughIndiaBernardo Dominic PROPOSAL
Sinclair WaycottArgentinaXuxue Feng NEW
Izzy GarufiIndiaIoni Bowcher RENEWAL
Nicolas IturbideIndiaBernardo Dominic NEGOTIATION
Aditya KuskoItalyAsiya Javayant NEGOTIATION
Cody SaylorsIndiaIoni Bowcher NEW
Nicolas IturbideArgentinaAmy Elsner PROPOSAL
Mujtaba NickaIndiaXuxue Feng QUALIFIED
Mayumi KolmetzAustraliaXuxue Feng PROPOSAL
Rodrigues CampainRussiaAmy Elsner NEGOTIATION
Costa DilliardJapanAmy Elsner PROPOSAL
Faith GillianJapanStephen Shaw QUALIFIED
Aika InouyeUnited KingdomStephen Shaw QUALIFIED
Aika InouyeBrazilAnna Fali QUALIFIED
Costa DilliardBrazilElwin Sharvill NEW
James ButtBrazilIvan Magalhaes UNQUALIFIED
James ButtRussiaAsiya Javayant QUALIFIED
Jennifer AmigonRussiaIvan Magalhaes PROPOSAL
Isabel BowleyItalyIvan Magalhaes PROPOSAL
Nicolas IturbideRussiaBernardo Dominic QUALIFIED
Francesco ShinkoAustraliaIoni Bowcher RENEWAL
Jefferson SchemmerFranceElwin Sharvill UNQUALIFIED
Salvatore StockhamItalyIvan Magalhaes UNQUALIFIED
Arvin AlbaresUnited KingdomIvan Magalhaes QUALIFIED
Antonio CaudyFranceOnyama Limba RENEWAL
Deepesh ChuiRussiaBernardo Dominic NEW
Leja CaldareraIndiaAmy Elsner NEW
Costa DilliardFranceElwin Sharvill UNQUALIFIED
Wickens NestleRussiaBernardo Dominic PROPOSAL
Rodrigues CampainItalyAsiya Javayant NEW
Ashley DoeCanadaElwin Sharvill PROPOSAL
Stacey MacleadArgentinaAnna Fali QUALIFIED
Johnson SergiCanadaOnyama Limba RENEWAL
Stacey MacleadArgentinaAnna Fali NEGOTIATION
Jennifer AmigonArgentinaIoni Bowcher NEGOTIATION
Jefferson SchemmerRussiaStephen Shaw NEGOTIATION
Jennifer AmigonRussiaOnyama Limba NEGOTIATION
Jeanfrancois VenereCanadaAsiya Javayant RENEWAL
Antonio CaudyFranceXuxue Feng QUALIFIED
Jefferson SchemmerItalyIoni Bowcher NEW
Costa DilliardUnited KingdomXuxue Feng RENEWAL
Alejandro PerinAustraliaAmy Elsner NEGOTIATION
Alejandro PerinCanadaAmy Elsner NEGOTIATION
Isabel BowleyItalyBernardo Dominic NEGOTIATION
Mujtaba NickaAustraliaBernardo Dominic NEGOTIATION
Mayumi KolmetzGermanyOnyama Limba RENEWAL
Ashley DoeGermanyXuxue Feng NEW
Arvin AlbaresBrazilAmy Elsner PROPOSAL
Jennifer AmigonIndiaElwin Sharvill QUALIFIED
Morrow RutaGermanyIvan Magalhaes RENEWAL
Horizontal
NameCountryRepresentativeStatus
Chavez BriddickIndiaXuxue Feng NEW
Jones VocelkaSpainBernardo Dominic QUALIFIED
Johnson SergiJapanOnyama Limba UNQUALIFIED
Claire TollnerCanadaAsiya Javayant UNQUALIFIED
Ricardo GauchoJapanStephen Shaw PROPOSAL
Leja CaldareraIndiaAnna Fali UNQUALIFIED
Jefferson SchemmerArgentinaStephen Shaw NEW
Ivar PaprockiRussiaAnna Fali RENEWAL
Faith GillianItalyAmy Elsner RENEWAL
Faith GillianJapanXuxue Feng RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Francesco ShinkoBrazil2026-05-21Benton, John B Jr NEW46Ivan Magalhaes
1001Stacey MacleadCanada2026-05-24Morlong Associates PROPOSAL65Bernardo Dominic
1002Murillo MaletGermany2026-06-03Benton, John B Jr NEW13Ivan Magalhaes
1003Isabel BowleySpain2026-06-02Feltz Printing Service QUALIFIED91Ivan Magalhaes
1004Jefferson SchemmerJapan2026-06-04Rousseaux, Michael Esq NEGOTIATION21Ioni Bowcher
1005Maria MarrierFrance2026-05-19Buckley Miller Wright NEW28Xuxue Feng
1006Julie StensethRussia2026-05-19King, Christopher A Esq NEW91Amy Elsner
1007Stacey MacleadCanada2026-05-15King, Christopher A Esq RENEWAL35Elwin Sharvill
1008Antonio CaudyGermany2026-05-24Feiner Bros NEGOTIATION43Asiya Javayant
1009Johnson SergiRussia2026-05-15Feiner Bros RENEWAL33Amy Elsner
1010Juan WieserItaly2026-05-16Chapman, Ross E Esq NEGOTIATION7Onyama Limba
1011Aditya KuskoIndia2026-05-29Commercial Press QUALIFIED23Ioni Bowcher
1012Alejandro PerinGermany2026-06-04King, Christopher A Esq NEW59Stephen Shaw
1013Ashley DoeGermany2026-06-09Benton, John B Jr RENEWAL40Anna Fali
1014Nicolas IturbideIndia2026-05-19Rousseaux, Michael Esq RENEWAL4Stephen Shaw
1015Arvin AlbaresAustralia2026-05-23Rousseaux, Michael Esq QUALIFIED84Ivan Magalhaes
1016Cody SaylorsArgentina2026-05-26Rousseaux, Michael Esq NEGOTIATION37Bernardo Dominic
1017Tony FollerItaly2026-06-05Chapman, Ross E Esq PROPOSAL18Anna Fali
1018Kaitlin OstroskyAustralia2026-05-22Morlong Associates PROPOSAL25Anna Fali
1019Munro FerenczUnited Kingdom2026-05-20King, Christopher A Esq NEW64Bernardo Dominic
1020James ButtIndia2026-06-12Printing Dimensions RENEWAL84Xuxue Feng
1021Antonio CaudyJapan2026-06-05Benton, John B Jr QUALIFIED68Onyama Limba
1022Juan WieserRussia2026-06-09King, Christopher A Esq QUALIFIED15Anna Fali
1023Antonio CaudyRussia2026-06-06Buckley Miller Wright PROPOSAL54Anna Fali
1024Mayumi KolmetzItaly2026-05-22Feltz Printing Service RENEWAL86Amy Elsner
1025Ashley DoeArgentina2026-05-23Feiner Bros NEW71Anna Fali
1026Alejandro PerinRussia2026-06-11Commercial Press NEGOTIATION63Ivan Magalhaes
1027Adams MorascaBrazil2026-06-11King, Christopher A Esq RENEWAL54Elwin Sharvill
1028Salvatore StockhamSpain2026-05-31Commercial Press QUALIFIED80Bernardo Dominic
1029James ButtItaly2026-06-11Dorl, James J Esq NEW26Ivan Magalhaes
1030Rodrigues CampainFrance2026-06-06Chanay, Jeffrey A Esq NEW98Elwin Sharvill
1031Adams MorascaCanada2026-05-22Chapman, Ross E Esq PROPOSAL6Stephen Shaw
1032Misaki RoysterIndia2026-06-07Dorl, James J Esq PROPOSAL42Bernardo Dominic
1033Ivar PaprockiIndia2026-05-19Rangoni Of Florence UNQUALIFIED55Elwin Sharvill
1034Leja CaldareraUnited Kingdom2026-06-13Benton, John B Jr NEW73Xuxue Feng
1035Ivar PaprockiJapan2026-05-28Feiner Bros PROPOSAL84Anna Fali
1036Darci PoquetteFrance2026-06-13Benton, John B Jr UNQUALIFIED55Stephen Shaw
1037Izzy GarufiGermany2026-05-17Rangoni Of Florence RENEWAL46Bernardo Dominic
1038Julie StensethSpain2026-05-20Printing Dimensions RENEWAL25Xuxue Feng
1039Wickens NestleItaly2026-06-07Feiner Bros QUALIFIED89Xuxue Feng
1040Wickens NestleArgentina2026-05-26King, Christopher A Esq NEW61Stephen Shaw
1041Faith GillianRussia2026-06-05Printing Dimensions NEGOTIATION97Asiya Javayant
1042Alejandro PerinArgentina2026-05-25Chanay, Jeffrey A Esq UNQUALIFIED61Asiya Javayant
1043Smith GlickUnited Kingdom2026-05-18Truhlar And Truhlar Attys RENEWAL59Xuxue Feng
1044Murillo MaletGermany2026-05-31Feltz Printing Service NEGOTIATION39Bernardo Dominic
1045Maisha RulapaughGermany2026-05-28King, Christopher A Esq UNQUALIFIED10Asiya Javayant
1046Arvin AlbaresFrance2026-06-07Rousseaux, Michael Esq NEW26Asiya Javayant
1047Chavez BriddickArgentina2026-06-02Dorl, James J Esq NEW38Xuxue Feng
1048Juan WieserRussia2026-05-30Benton, John B Jr QUALIFIED47Onyama Limba
1049Ricardo GauchoFrance2026-06-06Chemel, James L Cpa NEGOTIATION15Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Wickens NestleItalyIvan Magalhaes RENEWAL
Juan WieserBrazilIoni Bowcher PROPOSAL
David DarakjyJapanAnna Fali QUALIFIED
Emily WhobreyAustraliaIoni Bowcher NEGOTIATION
Octavia MaletCanadaStephen Shaw RENEWAL
Smith GlickIndiaIvan Magalhaes RENEWAL
Costa DilliardCanadaIoni Bowcher NEGOTIATION
Kadeem FlosiUnited KingdomBernardo Dominic UNQUALIFIED
Leja CaldareraArgentinaAsiya Javayant RENEWAL
Rodrigues CampainBrazilXuxue Feng PROPOSAL
Claire TollnerArgentinaXuxue Feng UNQUALIFIED
David DarakjySpainXuxue Feng RENEWAL
Maria MarrierBrazilXuxue Feng UNQUALIFIED
Ivar PaprockiFranceIvan Magalhaes UNQUALIFIED
Maria MarrierBrazilIvan Magalhaes NEGOTIATION
Murillo MaletUnited KingdomStephen Shaw UNQUALIFIED
Isabel BowleyGermanyAsiya Javayant UNQUALIFIED
Aruna FigeroaRussiaStephen Shaw NEW
Tony FollerCanadaOnyama Limba PROPOSAL
Arvin AlbaresAustraliaAsiya Javayant PROPOSAL
Aruna FigeroaItalyOnyama Limba UNQUALIFIED
Mujtaba NickaGermanyAnna Fali NEGOTIATION
Ashley DoeIndiaAnna Fali PROPOSAL
Nicolas IturbideRussiaOnyama Limba QUALIFIED
Nicolas IturbideSpainAmy Elsner NEGOTIATION
Jones VocelkaAustraliaElwin Sharvill RENEWAL
Alejandro PerinGermanyAsiya Javayant QUALIFIED
Maria MarrierAustraliaAsiya Javayant NEW
David DarakjySpainAnna Fali NEW
Tony FollerGermanyAnna Fali RENEWAL
Claire TollnerRussiaBernardo Dominic UNQUALIFIED
Octavia MaletAustraliaElwin Sharvill RENEWAL
Maria MarrierRussiaOnyama Limba QUALIFIED
Cody SaylorsBrazilAsiya Javayant NEGOTIATION
Aruna FigeroaUnited KingdomOnyama Limba UNQUALIFIED
Alejandro PerinAustraliaIoni Bowcher NEGOTIATION
Julie StensethAustraliaBernardo Dominic QUALIFIED
Izzy GarufiSpainBernardo Dominic NEW
Jefferson SchemmerItalyAmy Elsner RENEWAL
Johnson SergiGermanyOnyama Limba NEGOTIATION
Salvatore StockhamItalyAnna Fali PROPOSAL
Antonio CaudyGermanyAsiya Javayant RENEWAL
Arvin AlbaresItalyAnna Fali QUALIFIED
Smith GlickRussiaIoni Bowcher NEGOTIATION
Darci PoquetteFranceAmy Elsner RENEWAL
Salvatore StockhamItalyIvan Magalhaes RENEWAL
Silvio SlusarskiArgentinaAmy Elsner NEGOTIATION
Greenwood BologniaJapanBernardo Dominic QUALIFIED
Aruna FigeroaArgentinaAsiya Javayant RENEWAL
Adams MorascaGermanyAnna Fali NEW
Frozen Columns
Name
Aruna Figeroa
Costa Dilliard
Cody Saylors
James Butt
Chavez Briddick
Sinclair Waycott
Jennifer Amigon
Emily Whobrey
Clifford Rim
Leon Oldroyd
David Darakjy
Cody Saylors
Aditya Kusko
Darci Poquette
Leja Caldarera
Morrow Ruta
Morrow Ruta
Aika Inouye
Ricardo Gaucho
Mujtaba Nicka
Rodrigues Campain
Aika Inouye
Sinclair Waycott
Jeanfrancois Venere
David Darakjy
Mayumi Kolmetz
Misaki Royster
Jeanfrancois Venere
Adams Morasca
Ricardo Gaucho
Darci Poquette
Deepesh Chui
Ashley Doe
Ivar Paprocki
Greenwood Bolognia
Mayumi Kolmetz
Jefferson Schemmer
Morrow Ruta
Arvin Albares
Isabel Bowley
Tony Foller
Arvin Albares
Maisha Rulapaugh
Murillo Malet
Darci Poquette
Antonio Caudy
Murillo Malet
Kaitlin Ostrosky
Cody Saylors
Julie Stenseth
IdCountryDate
1000Italy2026-05-20
1001Brazil2026-05-27
1002Australia2026-05-29
1003Italy2026-06-02
1004India2026-05-18
1005Italy2026-05-23
1006France2026-05-15
1007Australia2026-06-06
1008United Kingdom2026-05-15
1009India2026-05-17
1010Australia2026-06-06
1011India2026-05-19
1012Russia2026-06-10
1013Spain2026-06-10
1014Australia2026-05-19
1015Italy2026-05-25
1016Japan2026-05-18
1017France2026-06-09
1018Argentina2026-06-03
1019Germany2026-05-30
1020Canada2026-05-25
1021Argentina2026-06-11
1022Japan2026-06-06
1023Brazil2026-06-07
1024Australia2026-05-28
1025Germany2026-05-23
1026France2026-05-25
1027Spain2026-06-01
1028Australia2026-06-10
1029Australia2026-05-30
1030France2026-06-03
1031United Kingdom2026-06-03
1032India2026-05-18
1033Germany2026-06-12
1034Germany2026-05-29
1035United Kingdom2026-05-17
1036Australia2026-05-31
1037Spain2026-06-03
1038Spain2026-05-25
1039Argentina2026-05-18
1040India2026-05-20
1041Argentina2026-06-11
1042Italy2026-05-21
1043Spain2026-06-13
1044Russia2026-05-20
1045India2026-06-10
1046Germany2026-05-15
1047Spain2026-06-11
1048Italy2026-06-11
1049Australia2026-05-24

On-Demand Data

NameIdCountryDate
Deepesh Chui1000Argentina2026-06-01
Murillo Malet1001India2026-06-05
James Butt1002Australia2026-05-23
Morrow Ruta1003France2026-06-06
Silvio Slusarski1004India2026-06-04
Ashley Doe1005Canada2026-05-27
Smith Glick1006Argentina2026-05-16
Cody Saylors1007Spain2026-06-05
Mujtaba Nicka1008Italy2026-05-29
Izzy Garufi1009Brazil2026-06-02
Silvio Slusarski1010Japan2026-06-09
Chavez Briddick1011Australia2026-05-20
Arvin Albares1012Spain2026-06-09
Smith Glick1013Brazil2026-05-21
Murillo Malet1014Argentina2026-05-26
Adams Morasca1015Japan2026-05-21
Alejandro Perin1016France2026-05-28
Alejandro Perin1017Russia2026-05-23
Leja Caldarera1018Brazil2026-06-11
Clifford Rim1019Spain2026-05-26
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Maria MarrierAustraliaAmy Elsner NEW
Munro FerenczAustraliaAmy Elsner UNQUALIFIED
Morrow RutaIndiaAmy Elsner NEGOTIATION
Aruna FigeroaIndiaOnyama Limba UNQUALIFIED
Maisha RulapaughSpainStephen Shaw PROPOSAL
Mayumi KolmetzIndiaOnyama Limba QUALIFIED
Ivar PaprockiItalyAsiya Javayant NEW
Darci PoquetteSpainAsiya Javayant RENEWAL
Leon OldroydBrazilIvan Magalhaes PROPOSAL
Faith GillianSpainAsiya Javayant NEGOTIATION
Mayumi KolmetzCanadaElwin Sharvill NEGOTIATION
Sinclair WaycottSpainXuxue Feng UNQUALIFIED
Ricardo GauchoAustraliaAmy Elsner RENEWAL
Jeanfrancois VenereUnited KingdomStephen Shaw UNQUALIFIED
Silvio SlusarskiJapanXuxue Feng QUALIFIED
Isabel BowleyFranceXuxue Feng RENEWAL
Francesco ShinkoJapanAsiya Javayant NEGOTIATION
Misaki RoysterItalyAsiya Javayant PROPOSAL
Aruna FigeroaItalyAnna Fali QUALIFIED
Ivar PaprockiAustraliaAnna Fali QUALIFIED
Leon OldroydRussiaAsiya Javayant PROPOSAL
Leja CaldareraJapanAsiya Javayant UNQUALIFIED
Mayumi KolmetzBrazilAnna Fali QUALIFIED
Ricardo GauchoAustraliaBernardo Dominic QUALIFIED
Juan WieserJapanOnyama Limba NEW
Morrow RutaRussiaAnna Fali QUALIFIED
Maria MarrierBrazilOnyama Limba NEGOTIATION
Alejandro PerinJapanOnyama Limba NEW
Emily WhobreyGermanyBernardo Dominic NEGOTIATION
Sinclair WaycottAustraliaStephen Shaw PROPOSAL
James ButtCanadaOnyama Limba QUALIFIED
Smith GlickArgentinaElwin Sharvill UNQUALIFIED
Wickens NestleFranceXuxue Feng NEGOTIATION
Salvatore StockhamFranceAmy Elsner NEW
Adams MorascaRussiaAmy Elsner UNQUALIFIED
Jones VocelkaItalyAmy Elsner NEW
Kadeem FlosiGermanyXuxue Feng NEW
Leja CaldareraRussiaIoni Bowcher NEGOTIATION
Rodrigues CampainUnited KingdomStephen Shaw QUALIFIED
Leon OldroydIndiaElwin Sharvill 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>