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
Julie StensethBrazilStephen Shaw RENEWAL
Jeanfrancois VenereBrazilAmy Elsner PROPOSAL
Jeanfrancois VenereCanadaAsiya Javayant PROPOSAL
Julie StensethGermanyAnna Fali PROPOSAL
Izzy GarufiSpainIvan Magalhaes NEW
Costa DilliardSpainIvan Magalhaes RENEWAL
Antonio CaudyJapanIvan Magalhaes QUALIFIED
Jeanfrancois VenereFranceOnyama Limba NEW
Claire TollnerAustraliaBernardo Dominic PROPOSAL
Clifford RimBrazilElwin Sharvill QUALIFIED
Clifford RimJapanAmy Elsner NEW
Emily WhobreyCanadaXuxue Feng PROPOSAL
Ricardo GauchoItalyAmy Elsner QUALIFIED
Francesco ShinkoIndiaAnna Fali NEGOTIATION
David DarakjyArgentinaIoni Bowcher NEGOTIATION
Munro FerenczItalyOnyama Limba QUALIFIED
Silvio SlusarskiAustraliaAsiya Javayant NEGOTIATION
Aruna FigeroaJapanElwin Sharvill RENEWAL
Maisha RulapaughItalyXuxue Feng NEGOTIATION
Leja CaldareraUnited KingdomAnna Fali NEW
Claire TollnerRussiaIvan Magalhaes RENEWAL
Silvio SlusarskiJapanBernardo Dominic PROPOSAL
Chavez BriddickFranceStephen Shaw NEW
Jeanfrancois VenereSpainStephen Shaw NEGOTIATION
Antonio CaudyIndiaIvan Magalhaes UNQUALIFIED
Wickens NestleIndiaAmy Elsner QUALIFIED
Costa DilliardArgentinaBernardo Dominic NEW
Jennifer AmigonSpainIvan Magalhaes PROPOSAL
David DarakjyFranceOnyama Limba PROPOSAL
Silvio SlusarskiIndiaXuxue Feng RENEWAL
Antonio CaudyArgentinaElwin Sharvill NEGOTIATION
Claire TollnerCanadaBernardo Dominic NEGOTIATION
Deepesh ChuiIndiaAmy Elsner NEW
Sinclair WaycottSpainOnyama Limba PROPOSAL
Murillo MaletItalyStephen Shaw UNQUALIFIED
Adams MorascaBrazilBernardo Dominic NEGOTIATION
Aditya KuskoArgentinaElwin Sharvill NEW
Emily WhobreySpainStephen Shaw NEGOTIATION
Clifford RimCanadaAmy Elsner QUALIFIED
Arvin AlbaresRussiaStephen Shaw QUALIFIED
Kadeem FlosiArgentinaElwin Sharvill NEGOTIATION
Mujtaba NickaArgentinaIvan Magalhaes QUALIFIED
Darci PoquetteBrazilIvan Magalhaes NEGOTIATION
Costa DilliardSpainOnyama Limba NEW
Aruna FigeroaIndiaBernardo Dominic NEW
Jones VocelkaAustraliaAmy Elsner RENEWAL
Octavia MaletArgentinaOnyama Limba NEW
Munro FerenczItalyElwin Sharvill UNQUALIFIED
Claire TollnerJapanIoni Bowcher PROPOSAL
Misaki RoysterIndiaIvan Magalhaes UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Juan WieserItalyStephen Shaw NEW
Nicolas IturbideFranceAsiya Javayant NEGOTIATION
Tony FollerCanadaAnna Fali UNQUALIFIED
Wickens NestleSpainElwin Sharvill NEGOTIATION
Ricardo GauchoRussiaAnna Fali NEGOTIATION
Antonio CaudyUnited KingdomBernardo Dominic NEGOTIATION
Salvatore StockhamCanadaAmy Elsner NEGOTIATION
Ivar PaprockiIndiaAmy Elsner NEGOTIATION
Munro FerenczRussiaIvan Magalhaes PROPOSAL
Mujtaba NickaRussiaXuxue Feng UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000James ButtArgentina2026-06-13Chapman, Ross E Esq RENEWAL30Bernardo Dominic
1001Greenwood BologniaGermany2026-06-14Dorl, James J Esq QUALIFIED38Amy Elsner
1002Mujtaba NickaArgentina2026-06-02Feiner Bros RENEWAL83Ivan Magalhaes
1003Stacey MacleadGermany2026-06-05Rangoni Of Florence RENEWAL37Bernardo Dominic
1004Leon OldroydItaly2026-06-05Commercial Press NEGOTIATION39Bernardo Dominic
1005Murillo MaletCanada2026-06-15Chapman, Ross E Esq QUALIFIED80Anna Fali
1006Clifford RimFrance2026-05-27King, Christopher A Esq RENEWAL70Xuxue Feng
1007Cody SaylorsBrazil2026-06-05Buckley Miller Wright PROPOSAL28Ivan Magalhaes
1008Tony FollerAustralia2026-05-31Buckley Miller Wright PROPOSAL93Onyama Limba
1009Johnson SergiItaly2026-06-06Chanay, Jeffrey A Esq NEW27Ioni Bowcher
1010Mujtaba NickaSpain2026-06-07Commercial Press RENEWAL66Elwin Sharvill
1011Alejandro PerinBrazil2026-06-14Feltz Printing Service NEGOTIATION35Onyama Limba
1012Aruna FigeroaAustralia2026-06-17Commercial Press PROPOSAL38Anna Fali
1013Octavia MaletAustralia2026-06-15Truhlar And Truhlar Attys RENEWAL71Ioni Bowcher
1014Wickens NestleItaly2026-06-17Feltz Printing Service QUALIFIED95Amy Elsner
1015Octavia MaletArgentina2026-06-11Printing Dimensions RENEWAL72Bernardo Dominic
1016Jennifer AmigonRussia2026-06-10Commercial Press UNQUALIFIED86Onyama Limba
1017Deepesh ChuiGermany2026-06-02Chemel, James L Cpa QUALIFIED86Asiya Javayant
1018Nicolas IturbideSpain2026-05-29Printing Dimensions NEGOTIATION56Asiya Javayant
1019Aditya KuskoItaly2026-05-25Feltz Printing Service PROPOSAL79Xuxue Feng
1020Ashley DoeSpain2026-06-11Buckley Miller Wright NEW75Asiya Javayant
1021Jefferson SchemmerAustralia2026-06-03Commercial Press UNQUALIFIED57Ivan Magalhaes
1022Aruna FigeroaJapan2026-06-09Commercial Press NEW60Amy Elsner
1023Misaki RoysterAustralia2026-06-15Truhlar And Truhlar Attys PROPOSAL45Amy Elsner
1024Misaki RoysterUnited Kingdom2026-06-08Commercial Press NEW68Anna Fali
1025Ivar PaprockiItaly2026-05-30King, Christopher A Esq NEGOTIATION99Ivan Magalhaes
1026Rodrigues CampainJapan2026-05-22Feltz Printing Service RENEWAL17Ivan Magalhaes
1027Jones VocelkaJapan2026-06-09Buckley Miller Wright NEW61Anna Fali
1028David DarakjyCanada2026-06-04Printing Dimensions RENEWAL3Xuxue Feng
1029Costa DilliardAustralia2026-05-26Chanay, Jeffrey A Esq UNQUALIFIED68Ivan Magalhaes
1030Maisha RulapaughFrance2026-06-15Feltz Printing Service NEW29Stephen Shaw
1031Clifford RimIndia2026-06-11Rousseaux, Michael Esq NEW98Amy Elsner
1032Sinclair WaycottRussia2026-05-20Dorl, James J Esq RENEWAL34Amy Elsner
1033Salvatore StockhamCanada2026-06-01Feltz Printing Service QUALIFIED94Elwin Sharvill
1034Jennifer AmigonFrance2026-06-14Rangoni Of Florence NEW38Asiya Javayant
1035Silvio SlusarskiItaly2026-06-04Rangoni Of Florence NEGOTIATION2Onyama Limba
1036Leon OldroydFrance2026-06-07Chanay, Jeffrey A Esq NEW10Xuxue Feng
1037Maria MarrierSpain2026-06-06Commercial Press QUALIFIED56Onyama Limba
1038Kaitlin OstroskyRussia2026-06-07Feiner Bros NEW61Elwin Sharvill
1039Greenwood BologniaGermany2026-06-05Truhlar And Truhlar Attys RENEWAL75Bernardo Dominic
1040Nicolas IturbideItaly2026-06-07Chemel, James L Cpa PROPOSAL92Ioni Bowcher
1041Ashley DoeJapan2026-06-11Truhlar And Truhlar Attys RENEWAL44Stephen Shaw
1042Jeanfrancois VenereJapan2026-05-29King, Christopher A Esq QUALIFIED72Onyama Limba
1043Smith GlickFrance2026-05-29Chapman, Ross E Esq RENEWAL27Asiya Javayant
1044Julie StensethIndia2026-06-16Chanay, Jeffrey A Esq PROPOSAL55Ivan Magalhaes
1045Aruna FigeroaUnited Kingdom2026-05-28Commercial Press UNQUALIFIED34Anna Fali
1046Maisha RulapaughFrance2026-06-11Rousseaux, Michael Esq QUALIFIED44Elwin Sharvill
1047Juan WieserFrance2026-06-14Feltz Printing Service RENEWAL72Ioni Bowcher
1048Morrow RutaFrance2026-06-16King, Christopher A Esq PROPOSAL78Anna Fali
1049Juan WieserAustralia2026-06-08Benton, John B Jr NEGOTIATION49Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Darci PoquetteSpainAmy Elsner NEW
Octavia MaletArgentinaOnyama Limba PROPOSAL
Aruna FigeroaFranceIvan Magalhaes RENEWAL
Juan WieserSpainElwin Sharvill UNQUALIFIED
Kadeem FlosiItalyAsiya Javayant RENEWAL
Stacey MacleadGermanyXuxue Feng PROPOSAL
Adams MorascaArgentinaAmy Elsner NEW
Maisha RulapaughBrazilBernardo Dominic RENEWAL
David DarakjyArgentinaOnyama Limba UNQUALIFIED
Julie StensethItalyElwin Sharvill NEW
Kaitlin OstroskyCanadaXuxue Feng UNQUALIFIED
Octavia MaletJapanBernardo Dominic NEW
Francesco ShinkoRussiaElwin Sharvill NEGOTIATION
Emily WhobreyArgentinaXuxue Feng NEGOTIATION
Jeanfrancois VenereSpainIoni Bowcher NEW
Clifford RimUnited KingdomAnna Fali NEGOTIATION
Morrow RutaCanadaIoni Bowcher RENEWAL
Clifford RimIndiaElwin Sharvill NEGOTIATION
Costa DilliardArgentinaElwin Sharvill UNQUALIFIED
Stacey MacleadBrazilAnna Fali NEW
Maria MarrierBrazilOnyama Limba NEW
Murillo MaletJapanOnyama Limba QUALIFIED
David DarakjyItalyStephen Shaw UNQUALIFIED
Maria MarrierItalyOnyama Limba NEW
Stacey MacleadRussiaOnyama Limba NEW
Jones VocelkaArgentinaStephen Shaw NEW
David DarakjySpainBernardo Dominic QUALIFIED
Munro FerenczGermanyAsiya Javayant NEW
Isabel BowleyArgentinaXuxue Feng NEW
Arvin AlbaresUnited KingdomAsiya Javayant UNQUALIFIED
Ashley DoeFranceAmy Elsner QUALIFIED
Jeanfrancois VenereItalyOnyama Limba QUALIFIED
Isabel BowleyFranceOnyama Limba QUALIFIED
Silvio SlusarskiFranceIoni Bowcher NEW
Faith GillianCanadaAmy Elsner QUALIFIED
Misaki RoysterItalyStephen Shaw RENEWAL
Munro FerenczUnited KingdomIoni Bowcher UNQUALIFIED
Jefferson SchemmerJapanAsiya Javayant UNQUALIFIED
Aruna FigeroaJapanIoni Bowcher UNQUALIFIED
Deepesh ChuiSpainAmy Elsner QUALIFIED
Mujtaba NickaJapanAnna Fali RENEWAL
Isabel BowleyItalyAsiya Javayant QUALIFIED
Salvatore StockhamBrazilAnna Fali UNQUALIFIED
Aruna FigeroaIndiaBernardo Dominic NEGOTIATION
Chavez BriddickBrazilBernardo Dominic QUALIFIED
Sinclair WaycottFranceOnyama Limba UNQUALIFIED
Wickens NestleIndiaStephen Shaw RENEWAL
Mayumi KolmetzIndiaAsiya Javayant NEW
Ricardo GauchoSpainStephen Shaw QUALIFIED
Julie StensethItalyXuxue Feng PROPOSAL
Frozen Columns
Name
Ivar Paprocki
Nicolas Iturbide
Faith Gillian
Ashley Doe
Clifford Rim
Smith Glick
Emily Whobrey
Jeanfrancois Venere
Jennifer Amigon
Deepesh Chui
Antonio Caudy
Darci Poquette
Mayumi Kolmetz
Leon Oldroyd
Julie Stenseth
Adams Morasca
Chavez Briddick
Emily Whobrey
Jones Vocelka
Octavia Malet
Mayumi Kolmetz
Wickens Nestle
Mujtaba Nicka
James Butt
Deepesh Chui
Faith Gillian
Silvio Slusarski
Maisha Rulapaugh
Misaki Royster
James Butt
Murillo Malet
Leon Oldroyd
Ashley Doe
Francesco Shinko
Stacey Maclead
Francesco Shinko
Smith Glick
Mujtaba Nicka
Antonio Caudy
Aruna Figeroa
Faith Gillian
Deepesh Chui
Aika Inouye
Maisha Rulapaugh
Stacey Maclead
Izzy Garufi
Izzy Garufi
Costa Dilliard
Juan Wieser
Aika Inouye
IdCountryDate
1000Japan2026-06-08
1001Russia2026-05-27
1002Brazil2026-05-28
1003United Kingdom2026-05-20
1004India2026-05-27
1005Spain2026-06-16
1006Italy2026-06-11
1007Japan2026-05-30
1008Russia2026-05-22
1009Russia2026-06-18
1010Germany2026-06-04
1011Germany2026-05-27
1012Canada2026-05-26
1013Argentina2026-05-27
1014France2026-06-18
1015United Kingdom2026-05-26
1016Spain2026-06-03
1017Australia2026-06-04
1018Russia2026-05-22
1019Brazil2026-06-05
1020Italy2026-05-27
1021Italy2026-05-27
1022Germany2026-05-30
1023United Kingdom2026-06-16
1024Argentina2026-06-11
1025Japan2026-05-27
1026India2026-05-29
1027Australia2026-05-24
1028France2026-06-18
1029Argentina2026-06-04
1030Russia2026-06-13
1031Australia2026-05-20
1032Australia2026-06-14
1033Russia2026-06-10
1034France2026-05-23
1035Germany2026-06-03
1036Italy2026-05-25
1037France2026-05-29
1038France2026-05-26
1039Australia2026-06-15
1040Japan2026-05-31
1041Brazil2026-05-20
1042Italy2026-06-07
1043United Kingdom2026-06-02
1044Japan2026-05-20
1045Russia2026-06-14
1046Italy2026-05-31
1047Japan2026-05-27
1048Spain2026-06-16
1049United Kingdom2026-06-11

On-Demand Data

NameIdCountryDate
Julie Stenseth1000Australia2026-06-17
Smith Glick1001United Kingdom2026-06-08
Jeanfrancois Venere1002Australia2026-06-11
Izzy Garufi1003Canada2026-06-11
Aika Inouye1004Argentina2026-06-08
James Butt1005France2026-06-03
Aruna Figeroa1006Australia2026-05-24
Sinclair Waycott1007Spain2026-05-27
Tony Foller1008Germany2026-06-16
Maisha Rulapaugh1009Brazil2026-05-30
Jeanfrancois Venere1010Russia2026-05-28
Julie Stenseth1011United Kingdom2026-06-14
Octavia Malet1012France2026-06-03
Munro Ferencz1013Australia2026-05-29
Aika Inouye1014Japan2026-05-24
Morrow Ruta1015Japan2026-06-04
Ashley Doe1016Japan2026-06-12
Julie Stenseth1017Australia2026-06-09
Chavez Briddick1018Italy2026-06-13
Jones Vocelka1019Spain2026-06-02
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ricardo GauchoFranceBernardo Dominic UNQUALIFIED
Kaitlin OstroskySpainIoni Bowcher RENEWAL
Salvatore StockhamArgentinaIoni Bowcher NEGOTIATION
Mayumi KolmetzFranceXuxue Feng PROPOSAL
Claire TollnerFranceIoni Bowcher UNQUALIFIED
Jones VocelkaBrazilIvan Magalhaes NEGOTIATION
Costa DilliardFranceXuxue Feng UNQUALIFIED
Murillo MaletIndiaIvan Magalhaes NEW
Jennifer AmigonGermanyBernardo Dominic QUALIFIED
Sinclair WaycottCanadaBernardo Dominic NEGOTIATION
Kaitlin OstroskyAustraliaOnyama Limba QUALIFIED
Smith GlickGermanyAnna Fali PROPOSAL
Mujtaba NickaCanadaStephen Shaw NEW
Maisha RulapaughCanadaXuxue Feng NEGOTIATION
Wickens NestleJapanIoni Bowcher UNQUALIFIED
Adams MorascaAustraliaXuxue Feng PROPOSAL
Morrow RutaAustraliaStephen Shaw QUALIFIED
Mujtaba NickaRussiaStephen Shaw RENEWAL
Cody SaylorsIndiaOnyama Limba NEGOTIATION
James ButtItalyAmy Elsner PROPOSAL
Aditya KuskoRussiaAnna Fali QUALIFIED
Isabel BowleyIndiaElwin Sharvill RENEWAL
Chavez BriddickFranceStephen Shaw PROPOSAL
Jennifer AmigonRussiaIoni Bowcher QUALIFIED
Wickens NestleCanadaXuxue Feng PROPOSAL
Aditya KuskoUnited KingdomAmy Elsner UNQUALIFIED
Ivar PaprockiSpainOnyama Limba NEW
Maisha RulapaughJapanIoni Bowcher RENEWAL
Salvatore StockhamGermanyElwin Sharvill RENEWAL
Aruna FigeroaCanadaAsiya Javayant RENEWAL
Kaitlin OstroskyCanadaAmy Elsner UNQUALIFIED
Aruna FigeroaArgentinaAnna Fali RENEWAL
Chavez BriddickFranceAnna Fali NEGOTIATION
Misaki RoysterItalyAnna Fali UNQUALIFIED
Ivar PaprockiItalyBernardo Dominic PROPOSAL
Aditya KuskoSpainOnyama Limba PROPOSAL
Morrow RutaJapanAmy Elsner NEW
Jones VocelkaGermanyAnna Fali RENEWAL
Ricardo GauchoBrazilBernardo Dominic UNQUALIFIED
Stacey MacleadIndiaOnyama Limba 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>