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
Octavia MaletFranceXuxue Feng RENEWAL
Murillo MaletJapanOnyama Limba RENEWAL
Wickens NestleBrazilOnyama Limba NEW
James ButtIndiaXuxue Feng NEGOTIATION
Misaki RoysterCanadaBernardo Dominic RENEWAL
Cody SaylorsSpainXuxue Feng NEGOTIATION
Smith GlickGermanyAmy Elsner NEW
Sinclair WaycottFranceAmy Elsner QUALIFIED
David DarakjyGermanyAmy Elsner QUALIFIED
Maisha RulapaughCanadaIvan Magalhaes NEW
Francesco ShinkoUnited KingdomAsiya Javayant NEGOTIATION
Johnson SergiSpainAnna Fali QUALIFIED
Morrow RutaAustraliaAsiya Javayant NEW
Adams MorascaUnited KingdomOnyama Limba RENEWAL
David DarakjySpainIvan Magalhaes NEW
Kadeem FlosiCanadaElwin Sharvill NEGOTIATION
Costa DilliardIndiaBernardo Dominic UNQUALIFIED
Faith GillianArgentinaAsiya Javayant NEGOTIATION
Ricardo GauchoIndiaElwin Sharvill QUALIFIED
Jennifer AmigonCanadaIvan Magalhaes QUALIFIED
Isabel BowleyItalyElwin Sharvill PROPOSAL
Nicolas IturbideBrazilAmy Elsner QUALIFIED
Aika InouyeBrazilElwin Sharvill QUALIFIED
Aika InouyeRussiaAsiya Javayant RENEWAL
Murillo MaletArgentinaAmy Elsner NEW
Francesco ShinkoArgentinaAnna Fali RENEWAL
Chavez BriddickItalyAsiya Javayant RENEWAL
Arvin AlbaresAustraliaIvan Magalhaes NEW
David DarakjyCanadaIoni Bowcher RENEWAL
Ricardo GauchoSpainIvan Magalhaes UNQUALIFIED
Arvin AlbaresUnited KingdomIoni Bowcher UNQUALIFIED
Adams MorascaUnited KingdomAmy Elsner QUALIFIED
Nicolas IturbideUnited KingdomAmy Elsner NEW
Aruna FigeroaCanadaOnyama Limba NEW
Johnson SergiRussiaAsiya Javayant PROPOSAL
Clifford RimCanadaIvan Magalhaes RENEWAL
Octavia MaletItalyAnna Fali RENEWAL
Rodrigues CampainJapanElwin Sharvill QUALIFIED
Leon OldroydGermanyAmy Elsner PROPOSAL
Deepesh ChuiSpainOnyama Limba RENEWAL
Alejandro PerinJapanAmy Elsner UNQUALIFIED
Jefferson SchemmerBrazilElwin Sharvill RENEWAL
Greenwood BologniaJapanBernardo Dominic NEGOTIATION
Kaitlin OstroskyGermanyIoni Bowcher NEW
Sinclair WaycottAustraliaAsiya Javayant NEW
Darci PoquetteCanadaAnna Fali NEW
Misaki RoysterIndiaAnna Fali UNQUALIFIED
Kaitlin OstroskyGermanyIvan Magalhaes RENEWAL
Greenwood BologniaItalyElwin Sharvill RENEWAL
Chavez BriddickBrazilAmy Elsner NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
David DarakjyIndiaAsiya Javayant RENEWAL
Julie StensethAustraliaAnna Fali NEGOTIATION
Ashley DoeGermanyXuxue Feng NEW
Jones VocelkaCanadaOnyama Limba PROPOSAL
Aruna FigeroaArgentinaAsiya Javayant PROPOSAL
Aditya KuskoIndiaIvan Magalhaes QUALIFIED
Antonio CaudyJapanElwin Sharvill NEGOTIATION
Ashley DoeFranceElwin Sharvill UNQUALIFIED
Misaki RoysterAustraliaAsiya Javayant QUALIFIED
James ButtJapanOnyama Limba RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Sinclair WaycottBrazil2026-04-13Morlong Associates RENEWAL82Stephen Shaw
1001Rodrigues CampainIndia2026-04-20Buckley Miller Wright UNQUALIFIED95Asiya Javayant
1002Leja CaldareraArgentina2026-04-11Chapman, Ross E Esq PROPOSAL74Anna Fali
1003Faith GillianBrazil2026-04-11Rangoni Of Florence QUALIFIED13Elwin Sharvill
1004Smith GlickJapan2026-04-05Chapman, Ross E Esq PROPOSAL59Asiya Javayant
1005Maisha RulapaughFrance2026-04-17Chemel, James L Cpa PROPOSAL6Ivan Magalhaes
1006Smith GlickArgentina2026-04-07Chemel, James L Cpa NEW93Asiya Javayant
1007Juan WieserGermany2026-04-12Rangoni Of Florence PROPOSAL33Stephen Shaw
1008Nicolas IturbideArgentina2026-05-01Rangoni Of Florence NEW88Anna Fali
1009Claire TollnerFrance2026-04-30Feiner Bros PROPOSAL29Ioni Bowcher
1010Clifford RimCanada2026-05-02King, Christopher A Esq QUALIFIED10Asiya Javayant
1011Greenwood BologniaArgentina2026-04-04Morlong Associates NEW41Amy Elsner
1012James ButtArgentina2026-04-05Rousseaux, Michael Esq NEW56Stephen Shaw
1013Claire TollnerCanada2026-05-01Buckley Miller Wright RENEWAL9Stephen Shaw
1014Leja CaldareraArgentina2026-04-21Morlong Associates RENEWAL89Bernardo Dominic
1015Darci PoquetteUnited Kingdom2026-04-06Rousseaux, Michael Esq RENEWAL98Stephen Shaw
1016Murillo MaletItaly2026-04-12Morlong Associates NEGOTIATION76Anna Fali
1017Ivar PaprockiIndia2026-04-20Buckley Miller Wright NEW38Ivan Magalhaes
1018Maisha RulapaughAustralia2026-04-05Printing Dimensions NEGOTIATION93Stephen Shaw
1019Kadeem FlosiAustralia2026-04-23Chemel, James L Cpa QUALIFIED61Asiya Javayant
1020Jeanfrancois VenereItaly2026-04-20Feltz Printing Service PROPOSAL12Ivan Magalhaes
1021Salvatore StockhamItaly2026-04-17Morlong Associates UNQUALIFIED69Stephen Shaw
1022Julie StensethArgentina2026-04-22Morlong Associates UNQUALIFIED91Stephen Shaw
1023Chavez BriddickItaly2026-04-18Chanay, Jeffrey A Esq QUALIFIED51Onyama Limba
1024Aika InouyeFrance2026-04-17Rangoni Of Florence NEW2Asiya Javayant
1025Arvin AlbaresItaly2026-04-26Rousseaux, Michael Esq QUALIFIED12Stephen Shaw
1026Jennifer AmigonBrazil2026-04-10Feltz Printing Service NEW89Anna Fali
1027Adams MorascaAustralia2026-04-28Chemel, James L Cpa QUALIFIED72Elwin Sharvill
1028Leja CaldareraCanada2026-04-29Feltz Printing Service NEGOTIATION18Ioni Bowcher
1029Aika InouyeUnited Kingdom2026-04-27Printing Dimensions QUALIFIED65Ioni Bowcher
1030Maria MarrierGermany2026-04-27Chapman, Ross E Esq UNQUALIFIED52Anna Fali
1031Leon OldroydBrazil2026-04-06Truhlar And Truhlar Attys RENEWAL58Xuxue Feng
1032Julie StensethFrance2026-04-08Chemel, James L Cpa NEGOTIATION10Xuxue Feng
1033Izzy GarufiArgentina2026-04-03Chapman, Ross E Esq NEW36Ioni Bowcher
1034Mayumi KolmetzArgentina2026-04-11Dorl, James J Esq NEW42Amy Elsner
1035Alejandro PerinArgentina2026-04-21Printing Dimensions QUALIFIED32Stephen Shaw
1036Octavia MaletBrazil2026-04-26Chapman, Ross E Esq RENEWAL54Amy Elsner
1037Kaitlin OstroskyUnited Kingdom2026-04-19Feltz Printing Service RENEWAL25Onyama Limba
1038Jefferson SchemmerRussia2026-04-04Chanay, Jeffrey A Esq RENEWAL78Asiya Javayant
1039Costa DilliardCanada2026-04-13Chapman, Ross E Esq QUALIFIED66Bernardo Dominic
1040Clifford RimBrazil2026-04-08Printing Dimensions NEGOTIATION89Asiya Javayant
1041Ricardo GauchoArgentina2026-04-24Printing Dimensions RENEWAL34Onyama Limba
1042Chavez BriddickArgentina2026-04-21King, Christopher A Esq QUALIFIED22Ivan Magalhaes
1043Jennifer AmigonArgentina2026-04-10Feiner Bros UNQUALIFIED46Amy Elsner
1044Kadeem FlosiSpain2026-04-17Truhlar And Truhlar Attys PROPOSAL34Bernardo Dominic
1045Mujtaba NickaArgentina2026-04-07Chemel, James L Cpa NEW47Elwin Sharvill
1046Emily WhobreyAustralia2026-04-26Morlong Associates UNQUALIFIED38Ivan Magalhaes
1047Silvio SlusarskiAustralia2026-04-22Feltz Printing Service RENEWAL22Xuxue Feng
1048Smith GlickIndia2026-05-01Benton, John B Jr UNQUALIFIED40Xuxue Feng
1049James ButtFrance2026-04-13Buckley Miller Wright QUALIFIED52Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Alejandro PerinJapanXuxue Feng NEW
Alejandro PerinItalyIoni Bowcher NEGOTIATION
Jennifer AmigonSpainAnna Fali NEGOTIATION
Aruna FigeroaGermanyAmy Elsner PROPOSAL
Deepesh ChuiAustraliaAmy Elsner UNQUALIFIED
Mayumi KolmetzFranceStephen Shaw PROPOSAL
Deepesh ChuiBrazilAnna Fali UNQUALIFIED
Darci PoquetteBrazilOnyama Limba PROPOSAL
Cody SaylorsBrazilAsiya Javayant NEGOTIATION
Jeanfrancois VenereJapanAnna Fali QUALIFIED
Misaki RoysterArgentinaAnna Fali NEGOTIATION
Cody SaylorsSpainIvan Magalhaes NEW
Nicolas IturbideArgentinaBernardo Dominic UNQUALIFIED
Chavez BriddickBrazilIvan Magalhaes QUALIFIED
Clifford RimArgentinaOnyama Limba UNQUALIFIED
Tony FollerUnited KingdomAsiya Javayant UNQUALIFIED
Wickens NestleSpainAmy Elsner UNQUALIFIED
Munro FerenczBrazilOnyama Limba QUALIFIED
Rodrigues CampainItalyStephen Shaw PROPOSAL
Chavez BriddickItalyBernardo Dominic NEGOTIATION
Kaitlin OstroskyBrazilOnyama Limba UNQUALIFIED
Jeanfrancois VenereFranceAmy Elsner RENEWAL
Adams MorascaJapanXuxue Feng QUALIFIED
Faith GillianRussiaStephen Shaw QUALIFIED
James ButtRussiaAnna Fali QUALIFIED
Jennifer AmigonFranceAnna Fali NEW
Sinclair WaycottBrazilXuxue Feng RENEWAL
Cody SaylorsArgentinaOnyama Limba RENEWAL
Julie StensethUnited KingdomAsiya Javayant QUALIFIED
Alejandro PerinFranceXuxue Feng NEW
Ivar PaprockiJapanAnna Fali UNQUALIFIED
Alejandro PerinIndiaXuxue Feng UNQUALIFIED
Ricardo GauchoJapanAsiya Javayant RENEWAL
Mayumi KolmetzFranceXuxue Feng QUALIFIED
Rodrigues CampainArgentinaAmy Elsner NEGOTIATION
Greenwood BologniaArgentinaAnna Fali NEW
Aruna FigeroaCanadaAsiya Javayant RENEWAL
Antonio CaudyFranceXuxue Feng NEW
Izzy GarufiJapanXuxue Feng QUALIFIED
Greenwood BologniaArgentinaBernardo Dominic UNQUALIFIED
James ButtUnited KingdomIvan Magalhaes UNQUALIFIED
Wickens NestleItalyXuxue Feng NEGOTIATION
Jones VocelkaAustraliaBernardo Dominic RENEWAL
David DarakjyBrazilStephen Shaw QUALIFIED
Costa DilliardJapanBernardo Dominic NEGOTIATION
Julie StensethJapanElwin Sharvill QUALIFIED
Juan WieserIndiaElwin Sharvill PROPOSAL
Emily WhobreyFranceAnna Fali UNQUALIFIED
Wickens NestleSpainOnyama Limba NEW
Cody SaylorsGermanyIoni Bowcher RENEWAL
Frozen Columns
Name
Ashley Doe
Munro Ferencz
Smith Glick
Mujtaba Nicka
James Butt
Juan Wieser
Morrow Ruta
Francesco Shinko
Adams Morasca
Greenwood Bolognia
Stacey Maclead
Misaki Royster
Adams Morasca
Kadeem Flosi
Juan Wieser
Claire Tollner
Costa Dilliard
Wickens Nestle
David Darakjy
Deepesh Chui
Tony Foller
Silvio Slusarski
Jones Vocelka
Jefferson Schemmer
Tony Foller
Julie Stenseth
Darci Poquette
Isabel Bowley
Aika Inouye
Jeanfrancois Venere
Francesco Shinko
Kadeem Flosi
Nicolas Iturbide
Alejandro Perin
Maria Marrier
Salvatore Stockham
Juan Wieser
Claire Tollner
Kaitlin Ostrosky
Clifford Rim
Greenwood Bolognia
Tony Foller
Claire Tollner
Julie Stenseth
Emily Whobrey
Maria Marrier
Ashley Doe
Smith Glick
Murillo Malet
Antonio Caudy
IdCountryDate
1000Italy2026-04-15
1001Argentina2026-05-01
1002India2026-04-18
1003India2026-04-11
1004Italy2026-04-07
1005Spain2026-04-27
1006United Kingdom2026-04-26
1007Canada2026-04-18
1008Canada2026-04-27
1009Spain2026-04-15
1010United Kingdom2026-04-27
1011India2026-04-08
1012Australia2026-04-16
1013Brazil2026-04-05
1014France2026-04-09
1015France2026-04-30
1016Germany2026-04-05
1017Spain2026-04-22
1018Germany2026-04-26
1019India2026-04-19
1020India2026-04-22
1021Italy2026-04-30
1022Brazil2026-04-06
1023Russia2026-04-26
1024Brazil2026-04-15
1025France2026-04-18
1026Brazil2026-04-25
1027Japan2026-04-26
1028Japan2026-05-02
1029Germany2026-04-06
1030United Kingdom2026-04-28
1031Argentina2026-04-03
1032Spain2026-04-14
1033Brazil2026-04-03
1034Italy2026-05-02
1035Spain2026-05-02
1036Australia2026-04-22
1037Australia2026-04-27
1038Germany2026-04-16
1039Canada2026-04-28
1040Argentina2026-05-01
1041Australia2026-04-21
1042United Kingdom2026-04-16
1043Brazil2026-04-22
1044France2026-05-01
1045France2026-05-01
1046Italy2026-04-28
1047Japan2026-05-02
1048France2026-04-19
1049Italy2026-04-03

On-Demand Data

NameIdCountryDate
Aika Inouye1000Argentina2026-04-04
Munro Ferencz1001Spain2026-04-15
Izzy Garufi1002India2026-04-13
Francesco Shinko1003Spain2026-04-28
Juan Wieser1004France2026-04-19
Aika Inouye1005India2026-04-19
Alejandro Perin1006India2026-04-09
Mujtaba Nicka1007India2026-04-27
Isabel Bowley1008France2026-04-15
Izzy Garufi1009Brazil2026-04-14
Aruna Figeroa1010United Kingdom2026-04-22
Rodrigues Campain1011Brazil2026-04-15
Salvatore Stockham1012Brazil2026-04-27
Smith Glick1013India2026-04-26
Julie Stenseth1014Japan2026-04-22
Jennifer Amigon1015Spain2026-04-10
Francesco Shinko1016Australia2026-05-02
Julie Stenseth1017Brazil2026-04-11
Wickens Nestle1018Russia2026-04-18
Wickens Nestle1019Japan2026-04-10
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Arvin AlbaresRussiaIoni Bowcher NEGOTIATION
Smith GlickCanadaXuxue Feng NEW
Jefferson SchemmerUnited KingdomOnyama Limba PROPOSAL
Octavia MaletJapanAsiya Javayant NEW
Munro FerenczFranceBernardo Dominic RENEWAL
Chavez BriddickJapanStephen Shaw PROPOSAL
Maria MarrierRussiaBernardo Dominic NEW
Costa DilliardFranceIoni Bowcher RENEWAL
Adams MorascaBrazilXuxue Feng NEGOTIATION
Johnson SergiFranceIoni Bowcher RENEWAL
Nicolas IturbideGermanyXuxue Feng QUALIFIED
Mayumi KolmetzAustraliaStephen Shaw UNQUALIFIED
James ButtRussiaAsiya Javayant NEW
Murillo MaletUnited KingdomIvan Magalhaes NEW
Wickens NestleIndiaAmy Elsner NEW
Mayumi KolmetzArgentinaElwin Sharvill RENEWAL
Antonio CaudyGermanyIoni Bowcher NEW
Nicolas IturbideSpainBernardo Dominic PROPOSAL
Johnson SergiIndiaXuxue Feng PROPOSAL
Wickens NestleRussiaBernardo Dominic NEW
Jeanfrancois VenereBrazilIvan Magalhaes NEGOTIATION
Smith GlickFranceElwin Sharvill UNQUALIFIED
Costa DilliardItalyAsiya Javayant UNQUALIFIED
David DarakjyArgentinaIoni Bowcher RENEWAL
Tony FollerRussiaIvan Magalhaes RENEWAL
Deepesh ChuiUnited KingdomElwin Sharvill UNQUALIFIED
Cody SaylorsUnited KingdomXuxue Feng UNQUALIFIED
Jefferson SchemmerSpainAmy Elsner NEGOTIATION
Maisha RulapaughRussiaXuxue Feng QUALIFIED
Faith GillianUnited KingdomElwin Sharvill NEGOTIATION
Aditya KuskoJapanOnyama Limba RENEWAL
Chavez BriddickArgentinaAmy Elsner QUALIFIED
Salvatore StockhamCanadaAsiya Javayant PROPOSAL
Chavez BriddickArgentinaXuxue Feng NEGOTIATION
Emily WhobreyJapanBernardo Dominic NEGOTIATION
Leon OldroydJapanXuxue Feng PROPOSAL
Munro FerenczAustraliaStephen Shaw QUALIFIED
Aika InouyeIndiaAsiya Javayant NEW
Smith GlickUnited KingdomElwin Sharvill NEW
Aika InouyeUnited KingdomXuxue Feng 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>