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
Tony FollerItalyStephen Shaw NEW
Darci PoquetteBrazilAsiya Javayant NEGOTIATION
Mujtaba NickaBrazilAsiya Javayant PROPOSAL
Kadeem FlosiBrazilXuxue Feng RENEWAL
Darci PoquetteIndiaBernardo Dominic QUALIFIED
Ricardo GauchoRussiaAsiya Javayant QUALIFIED
Arvin AlbaresCanadaStephen Shaw RENEWAL
Greenwood BologniaSpainAnna Fali UNQUALIFIED
Kaitlin OstroskyUnited KingdomOnyama Limba UNQUALIFIED
Ashley DoeSpainIoni Bowcher UNQUALIFIED
Izzy GarufiGermanyAnna Fali PROPOSAL
Julie StensethItalyAnna Fali UNQUALIFIED
Mayumi KolmetzGermanyElwin Sharvill RENEWAL
Julie StensethItalyElwin Sharvill NEGOTIATION
Faith GillianBrazilAmy Elsner PROPOSAL
Maisha RulapaughBrazilIoni Bowcher QUALIFIED
Smith GlickSpainStephen Shaw NEGOTIATION
Jones VocelkaUnited KingdomAnna Fali NEGOTIATION
Claire TollnerGermanyAnna Fali QUALIFIED
James ButtRussiaStephen Shaw UNQUALIFIED
Deepesh ChuiJapanAmy Elsner UNQUALIFIED
Leja CaldareraJapanXuxue Feng PROPOSAL
Murillo MaletGermanyAmy Elsner QUALIFIED
Salvatore StockhamJapanStephen Shaw QUALIFIED
Maisha RulapaughSpainXuxue Feng NEW
Darci PoquetteJapanAnna Fali NEGOTIATION
James ButtCanadaAsiya Javayant QUALIFIED
Stacey MacleadUnited KingdomXuxue Feng NEW
Tony FollerJapanAmy Elsner RENEWAL
Francesco ShinkoIndiaStephen Shaw PROPOSAL
Smith GlickSpainXuxue Feng UNQUALIFIED
Chavez BriddickGermanyAnna Fali NEGOTIATION
Jennifer AmigonCanadaIvan Magalhaes RENEWAL
Cody SaylorsAustraliaBernardo Dominic UNQUALIFIED
Aditya KuskoAustraliaAsiya Javayant RENEWAL
Rodrigues CampainItalyOnyama Limba QUALIFIED
Adams MorascaFranceIvan Magalhaes UNQUALIFIED
Johnson SergiIndiaIoni Bowcher PROPOSAL
Leon OldroydSpainXuxue Feng NEW
Kadeem FlosiUnited KingdomAnna Fali RENEWAL
Maisha RulapaughArgentinaElwin Sharvill NEW
Costa DilliardGermanyAsiya Javayant NEGOTIATION
Sinclair WaycottAustraliaXuxue Feng UNQUALIFIED
Johnson SergiUnited KingdomStephen Shaw NEW
Alejandro PerinBrazilIoni Bowcher PROPOSAL
Francesco ShinkoGermanyXuxue Feng NEW
Aruna FigeroaCanadaOnyama Limba QUALIFIED
Antonio CaudyItalyStephen Shaw PROPOSAL
Murillo MaletGermanyIoni Bowcher NEGOTIATION
Sinclair WaycottJapanAnna Fali QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Mayumi KolmetzItalyAnna Fali QUALIFIED
Jennifer AmigonUnited KingdomAnna Fali NEW
Smith GlickFranceXuxue Feng RENEWAL
Aruna FigeroaRussiaAsiya Javayant NEGOTIATION
Aruna FigeroaCanadaAmy Elsner NEGOTIATION
Rodrigues CampainUnited KingdomStephen Shaw PROPOSAL
Claire TollnerFranceStephen Shaw NEW
Aika InouyeFranceElwin Sharvill RENEWAL
Aika InouyeItalyIvan Magalhaes QUALIFIED
Julie StensethFranceXuxue Feng QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Sinclair WaycottFrance2026-05-29King, Christopher A Esq PROPOSAL60Ioni Bowcher
1001Julie StensethUnited Kingdom2026-06-04Feiner Bros UNQUALIFIED68Ivan Magalhaes
1002Smith GlickUnited Kingdom2026-06-02Dorl, James J Esq NEGOTIATION54Anna Fali
1003Juan WieserBrazil2026-05-12Rangoni Of Florence QUALIFIED92Xuxue Feng
1004Nicolas IturbideJapan2026-05-12Benton, John B Jr RENEWAL71Bernardo Dominic
1005Chavez BriddickSpain2026-05-10King, Christopher A Esq NEW58Xuxue Feng
1006Alejandro PerinItaly2026-06-03Commercial Press QUALIFIED26Elwin Sharvill
1007Jones VocelkaRussia2026-05-31Buckley Miller Wright RENEWAL24Elwin Sharvill
1008Izzy GarufiRussia2026-05-12Benton, John B Jr RENEWAL55Elwin Sharvill
1009Jeanfrancois VenereItaly2026-05-14Rangoni Of Florence PROPOSAL1Onyama Limba
1010Juan WieserAustralia2026-06-05Buckley Miller Wright UNQUALIFIED35Ioni Bowcher
1011James ButtArgentina2026-05-15Chanay, Jeffrey A Esq PROPOSAL43Asiya Javayant
1012Alejandro PerinRussia2026-05-29Chanay, Jeffrey A Esq NEGOTIATION33Amy Elsner
1013Costa DilliardJapan2026-06-04Rangoni Of Florence UNQUALIFIED92Amy Elsner
1014Silvio SlusarskiCanada2026-06-04King, Christopher A Esq RENEWAL31Xuxue Feng
1015Jones VocelkaIndia2026-05-30Morlong Associates PROPOSAL84Amy Elsner
1016Costa DilliardIndia2026-05-17Rangoni Of Florence UNQUALIFIED2Elwin Sharvill
1017Izzy GarufiItaly2026-05-18Feltz Printing Service RENEWAL34Ivan Magalhaes
1018Chavez BriddickUnited Kingdom2026-05-08Chapman, Ross E Esq QUALIFIED18Bernardo Dominic
1019Adams MorascaArgentina2026-05-22Truhlar And Truhlar Attys NEGOTIATION87Amy Elsner
1020Mujtaba NickaAustralia2026-06-05Buckley Miller Wright PROPOSAL3Asiya Javayant
1021Smith GlickJapan2026-05-08Commercial Press PROPOSAL95Stephen Shaw
1022Johnson SergiBrazil2026-05-14King, Christopher A Esq QUALIFIED48Bernardo Dominic
1023Cody SaylorsCanada2026-05-25Chanay, Jeffrey A Esq RENEWAL37Xuxue Feng
1024Kaitlin OstroskyAustralia2026-05-30Feiner Bros NEW15Ioni Bowcher
1025Morrow RutaItaly2026-05-28Buckley Miller Wright PROPOSAL28Amy Elsner
1026Alejandro PerinFrance2026-05-14King, Christopher A Esq RENEWAL5Stephen Shaw
1027Aditya KuskoItaly2026-05-09Printing Dimensions RENEWAL77Ioni Bowcher
1028Mayumi KolmetzGermany2026-05-27Chapman, Ross E Esq PROPOSAL21Ivan Magalhaes
1029Smith GlickSpain2026-05-12Dorl, James J Esq RENEWAL37Amy Elsner
1030Sinclair WaycottSpain2026-05-27Morlong Associates UNQUALIFIED62Stephen Shaw
1031Sinclair WaycottFrance2026-05-10Feltz Printing Service RENEWAL63Onyama Limba
1032Aika InouyeSpain2026-05-12Printing Dimensions QUALIFIED81Asiya Javayant
1033Ashley DoeBrazil2026-06-06Commercial Press PROPOSAL17Onyama Limba
1034Kaitlin OstroskyJapan2026-06-03Commercial Press QUALIFIED12Ioni Bowcher
1035Emily WhobreyItaly2026-05-23King, Christopher A Esq NEW34Anna Fali
1036Ashley DoeArgentina2026-06-05King, Christopher A Esq NEW26Stephen Shaw
1037Maisha RulapaughRussia2026-05-08Benton, John B Jr PROPOSAL99Anna Fali
1038Mujtaba NickaBrazil2026-05-23Feltz Printing Service NEW80Ioni Bowcher
1039Tony FollerFrance2026-05-14King, Christopher A Esq NEW41Ioni Bowcher
1040Octavia MaletUnited Kingdom2026-05-11Benton, John B Jr QUALIFIED68Stephen Shaw
1041Aruna FigeroaAustralia2026-05-14Feiner Bros QUALIFIED58Elwin Sharvill
1042Julie StensethArgentina2026-05-11Chanay, Jeffrey A Esq UNQUALIFIED73Amy Elsner
1043Kadeem FlosiCanada2026-05-27Dorl, James J Esq NEGOTIATION21Amy Elsner
1044Greenwood BologniaAustralia2026-05-14Commercial Press NEGOTIATION12Amy Elsner
1045Munro FerenczJapan2026-05-25Truhlar And Truhlar Attys NEW10Elwin Sharvill
1046Juan WieserSpain2026-05-31Printing Dimensions UNQUALIFIED27Xuxue Feng
1047Ivar PaprockiItaly2026-05-26Feiner Bros NEW58Amy Elsner
1048Salvatore StockhamIndia2026-06-02Feltz Printing Service UNQUALIFIED54Stephen Shaw
1049Tony FollerIndia2026-06-05Dorl, James J Esq NEGOTIATION82Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Nicolas IturbideGermanyAsiya Javayant PROPOSAL
Morrow RutaBrazilElwin Sharvill PROPOSAL
Ivar PaprockiUnited KingdomOnyama Limba NEW
Arvin AlbaresSpainBernardo Dominic QUALIFIED
Maria MarrierUnited KingdomStephen Shaw QUALIFIED
Wickens NestleBrazilStephen Shaw QUALIFIED
Wickens NestleArgentinaIvan Magalhaes NEGOTIATION
Aika InouyeSpainAsiya Javayant NEW
Mayumi KolmetzFranceBernardo Dominic NEGOTIATION
David DarakjyAustraliaIoni Bowcher RENEWAL
Deepesh ChuiGermanyBernardo Dominic PROPOSAL
Julie StensethArgentinaIoni Bowcher NEW
Ivar PaprockiRussiaElwin Sharvill RENEWAL
Arvin AlbaresAustraliaXuxue Feng NEGOTIATION
Smith GlickIndiaAnna Fali QUALIFIED
Morrow RutaRussiaElwin Sharvill NEW
Adams MorascaItalyXuxue Feng QUALIFIED
Maisha RulapaughRussiaIvan Magalhaes UNQUALIFIED
David DarakjyUnited KingdomOnyama Limba QUALIFIED
Salvatore StockhamSpainIvan Magalhaes UNQUALIFIED
Francesco ShinkoArgentinaIoni Bowcher PROPOSAL
Costa DilliardCanadaElwin Sharvill QUALIFIED
Antonio CaudyRussiaIoni Bowcher UNQUALIFIED
Mujtaba NickaSpainStephen Shaw QUALIFIED
Juan WieserGermanyAnna Fali UNQUALIFIED
Aditya KuskoIndiaIoni Bowcher UNQUALIFIED
Ivar PaprockiItalyAmy Elsner RENEWAL
Jennifer AmigonItalyAnna Fali UNQUALIFIED
Stacey MacleadIndiaStephen Shaw PROPOSAL
Octavia MaletArgentinaStephen Shaw NEW
Munro FerenczSpainXuxue Feng NEGOTIATION
Deepesh ChuiCanadaIvan Magalhaes NEGOTIATION
Smith GlickSpainAnna Fali UNQUALIFIED
Aruna FigeroaItalyAmy Elsner PROPOSAL
Octavia MaletGermanyIvan Magalhaes PROPOSAL
David DarakjyUnited KingdomAsiya Javayant NEGOTIATION
Julie StensethAustraliaElwin Sharvill NEW
Jennifer AmigonIndiaAnna Fali UNQUALIFIED
Salvatore StockhamCanadaStephen Shaw PROPOSAL
Jefferson SchemmerArgentinaStephen Shaw NEW
Maria MarrierItalyAmy Elsner NEW
Jones VocelkaFranceElwin Sharvill NEW
Alejandro PerinBrazilStephen Shaw UNQUALIFIED
Aruna FigeroaArgentinaBernardo Dominic NEW
Nicolas IturbideUnited KingdomBernardo Dominic RENEWAL
Leja CaldareraArgentinaAsiya Javayant PROPOSAL
Ricardo GauchoItalyAsiya Javayant PROPOSAL
Smith GlickAustraliaBernardo Dominic UNQUALIFIED
Tony FollerItalyElwin Sharvill NEW
Adams MorascaSpainIvan Magalhaes PROPOSAL
Frozen Columns
Name
Rodrigues Campain
Misaki Royster
Clifford Rim
Wickens Nestle
Aika Inouye
Silvio Slusarski
Leja Caldarera
Aika Inouye
Salvatore Stockham
Wickens Nestle
Faith Gillian
Tony Foller
Alejandro Perin
Antonio Caudy
Mujtaba Nicka
Alejandro Perin
David Darakjy
Claire Tollner
Deepesh Chui
Leja Caldarera
Chavez Briddick
Johnson Sergi
Maisha Rulapaugh
Sinclair Waycott
Jefferson Schemmer
Clifford Rim
Rodrigues Campain
Sinclair Waycott
Izzy Garufi
Jeanfrancois Venere
Maria Marrier
Kaitlin Ostrosky
Adams Morasca
Costa Dilliard
Costa Dilliard
Antonio Caudy
Jennifer Amigon
Morrow Ruta
Juan Wieser
Aika Inouye
Jennifer Amigon
Adams Morasca
Kadeem Flosi
Aditya Kusko
Kadeem Flosi
Isabel Bowley
Isabel Bowley
Stacey Maclead
Jeanfrancois Venere
Morrow Ruta
IdCountryDate
1000Russia2026-06-06
1001Canada2026-05-08
1002Australia2026-05-12
1003Canada2026-05-18
1004Spain2026-05-31
1005Brazil2026-05-20
1006Canada2026-05-30
1007Brazil2026-05-15
1008Brazil2026-05-14
1009Germany2026-05-11
1010Italy2026-05-31
1011Germany2026-05-23
1012France2026-06-02
1013Canada2026-05-23
1014France2026-05-10
1015Russia2026-05-17
1016Russia2026-05-21
1017Japan2026-05-20
1018Spain2026-05-23
1019Russia2026-06-04
1020Japan2026-05-22
1021Spain2026-05-13
1022United Kingdom2026-06-04
1023Russia2026-05-17
1024India2026-05-19
1025Germany2026-06-02
1026India2026-05-28
1027Germany2026-05-31
1028Germany2026-05-29
1029Russia2026-05-29
1030Germany2026-05-25
1031Canada2026-06-03
1032Russia2026-06-03
1033Russia2026-05-30
1034Brazil2026-05-18
1035France2026-05-21
1036Australia2026-05-12
1037India2026-05-19
1038Japan2026-05-13
1039Brazil2026-06-05
1040India2026-05-09
1041Germany2026-05-16
1042France2026-05-25
1043Italy2026-05-31
1044Australia2026-05-30
1045Italy2026-05-28
1046India2026-05-15
1047Russia2026-05-12
1048United Kingdom2026-05-23
1049Canada2026-05-25

On-Demand Data

NameIdCountryDate
Francesco Shinko1000India2026-05-09
Maisha Rulapaugh1001Australia2026-06-05
Deepesh Chui1002France2026-05-16
Jones Vocelka1003Australia2026-05-20
Tony Foller1004Australia2026-06-06
James Butt1005Germany2026-05-22
Faith Gillian1006Canada2026-05-21
Jones Vocelka1007Argentina2026-06-01
James Butt1008Japan2026-05-21
Francesco Shinko1009Japan2026-05-26
Leon Oldroyd1010France2026-05-11
Nicolas Iturbide1011India2026-05-23
Cody Saylors1012France2026-06-04
Jennifer Amigon1013France2026-05-31
Aditya Kusko1014Spain2026-05-11
Darci Poquette1015Japan2026-05-16
Mujtaba Nicka1016Italy2026-05-27
Faith Gillian1017Japan2026-05-12
Clifford Rim1018Italy2026-05-09
Faith Gillian1019Spain2026-05-29
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
James ButtSpainStephen Shaw RENEWAL
Isabel BowleySpainElwin Sharvill UNQUALIFIED
Mujtaba NickaJapanStephen Shaw NEGOTIATION
Adams MorascaSpainIvan Magalhaes NEGOTIATION
Deepesh ChuiItalyIoni Bowcher NEGOTIATION
Francesco ShinkoFranceAmy Elsner QUALIFIED
Maisha RulapaughJapanIvan Magalhaes RENEWAL
Mayumi KolmetzFranceBernardo Dominic NEGOTIATION
Kadeem FlosiIndiaAnna Fali NEW
Johnson SergiIndiaIoni Bowcher PROPOSAL
Silvio SlusarskiSpainAsiya Javayant NEW
Greenwood BologniaGermanyAsiya Javayant NEW
Ricardo GauchoAustraliaOnyama Limba PROPOSAL
Maisha RulapaughGermanyAsiya Javayant QUALIFIED
Julie StensethGermanyBernardo Dominic NEW
Deepesh ChuiCanadaStephen Shaw UNQUALIFIED
Leja CaldareraBrazilElwin Sharvill NEW
Antonio CaudyJapanOnyama Limba NEW
Francesco ShinkoIndiaIoni Bowcher NEGOTIATION
Smith GlickSpainAsiya Javayant NEGOTIATION
Francesco ShinkoSpainAsiya Javayant RENEWAL
Cody SaylorsBrazilAnna Fali PROPOSAL
Aruna FigeroaFranceOnyama Limba UNQUALIFIED
Sinclair WaycottRussiaStephen Shaw NEGOTIATION
Sinclair WaycottIndiaAnna Fali UNQUALIFIED
Munro FerenczArgentinaAmy Elsner UNQUALIFIED
Silvio SlusarskiSpainBernardo Dominic NEGOTIATION
Clifford RimAustraliaAmy Elsner QUALIFIED
Ricardo GauchoBrazilBernardo Dominic NEGOTIATION
Rodrigues CampainGermanyAmy Elsner NEW
Izzy GarufiJapanOnyama Limba NEGOTIATION
Jones VocelkaBrazilAmy Elsner NEW
Wickens NestleFranceOnyama Limba NEGOTIATION
Mujtaba NickaSpainBernardo Dominic UNQUALIFIED
Juan WieserFranceIoni Bowcher RENEWAL
Francesco ShinkoSpainXuxue Feng UNQUALIFIED
Maisha RulapaughCanadaElwin Sharvill NEGOTIATION
Chavez BriddickBrazilAnna Fali QUALIFIED
Deepesh ChuiGermanyXuxue Feng NEGOTIATION
Ashley DoeAustraliaXuxue Feng UNQUALIFIED

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