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
Faith GillianAustraliaBernardo Dominic NEGOTIATION
Johnson SergiSpainIoni Bowcher NEW
Misaki RoysterSpainIoni Bowcher UNQUALIFIED
Leon OldroydFranceXuxue Feng QUALIFIED
James ButtSpainStephen Shaw RENEWAL
Maisha RulapaughSpainXuxue Feng UNQUALIFIED
Darci PoquetteRussiaAsiya Javayant UNQUALIFIED
Cody SaylorsJapanXuxue Feng RENEWAL
Greenwood BologniaIndiaBernardo Dominic PROPOSAL
Jeanfrancois VenereCanadaBernardo Dominic NEGOTIATION
David DarakjyArgentinaIvan Magalhaes UNQUALIFIED
Mayumi KolmetzSpainXuxue Feng UNQUALIFIED
Smith GlickItalyXuxue Feng NEGOTIATION
Kadeem FlosiItalyOnyama Limba NEW
Nicolas IturbideAustraliaXuxue Feng UNQUALIFIED
Ricardo GauchoGermanyElwin Sharvill QUALIFIED
Octavia MaletCanadaBernardo Dominic NEGOTIATION
Jones VocelkaCanadaAmy Elsner QUALIFIED
Ricardo GauchoSpainStephen Shaw NEW
Stacey MacleadCanadaAnna Fali PROPOSAL
Claire TollnerRussiaAsiya Javayant UNQUALIFIED
Julie StensethArgentinaStephen Shaw UNQUALIFIED
Rodrigues CampainAustraliaStephen Shaw QUALIFIED
Jones VocelkaUnited KingdomBernardo Dominic UNQUALIFIED
Murillo MaletRussiaIvan Magalhaes NEW
Costa DilliardArgentinaBernardo Dominic RENEWAL
Misaki RoysterArgentinaElwin Sharvill NEW
Isabel BowleyItalyAnna Fali QUALIFIED
Silvio SlusarskiArgentinaElwin Sharvill NEW
Izzy GarufiGermanyIvan Magalhaes NEW
Arvin AlbaresCanadaAmy Elsner UNQUALIFIED
Alejandro PerinAustraliaStephen Shaw NEGOTIATION
Murillo MaletUnited KingdomXuxue Feng UNQUALIFIED
Ivar PaprockiCanadaBernardo Dominic RENEWAL
Murillo MaletBrazilStephen Shaw PROPOSAL
David DarakjyItalyAmy Elsner UNQUALIFIED
Munro FerenczGermanyAmy Elsner PROPOSAL
Antonio CaudyUnited KingdomElwin Sharvill QUALIFIED
Isabel BowleyItalyAmy Elsner NEGOTIATION
Maria MarrierJapanBernardo Dominic QUALIFIED
Alejandro PerinGermanyAnna Fali PROPOSAL
Kadeem FlosiCanadaBernardo Dominic PROPOSAL
Cody SaylorsSpainOnyama Limba NEW
Alejandro PerinArgentinaAsiya Javayant PROPOSAL
Greenwood BologniaAustraliaXuxue Feng RENEWAL
Juan WieserRussiaXuxue Feng NEW
Jefferson SchemmerJapanIoni Bowcher QUALIFIED
Jeanfrancois VenereGermanyIoni Bowcher QUALIFIED
Cody SaylorsAustraliaXuxue Feng NEGOTIATION
Aditya KuskoBrazilElwin Sharvill NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Juan WieserItalyIvan Magalhaes PROPOSAL
Morrow RutaBrazilAmy Elsner UNQUALIFIED
Mujtaba NickaIndiaIoni Bowcher UNQUALIFIED
Arvin AlbaresCanadaAmy Elsner UNQUALIFIED
Johnson SergiBrazilXuxue Feng QUALIFIED
James ButtArgentinaOnyama Limba UNQUALIFIED
Alejandro PerinItalyBernardo Dominic QUALIFIED
Maria MarrierItalyOnyama Limba NEW
Murillo MaletRussiaIoni Bowcher QUALIFIED
Misaki RoysterSpainStephen Shaw NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Cody SaylorsJapan2025-07-26Feiner Bros NEW67Anna Fali
1001Cody SaylorsUnited Kingdom2025-08-12Chapman, Ross E Esq PROPOSAL75Ioni Bowcher
1002Claire TollnerSpain2025-08-05Chapman, Ross E Esq PROPOSAL74Ivan Magalhaes
1003David DarakjyGermany2025-08-23Buckley Miller Wright NEGOTIATION20Ivan Magalhaes
1004Jefferson SchemmerFrance2025-08-15Commercial Press RENEWAL92Xuxue Feng
1005Aditya KuskoBrazil2025-08-20Morlong Associates QUALIFIED89Bernardo Dominic
1006Jones VocelkaFrance2025-08-11Truhlar And Truhlar Attys QUALIFIED67Ioni Bowcher
1007Mayumi KolmetzRussia2025-07-26Chemel, James L Cpa QUALIFIED56Onyama Limba
1008Arvin AlbaresBrazil2025-08-03Rousseaux, Michael Esq RENEWAL11Asiya Javayant
1009Silvio SlusarskiRussia2025-08-12King, Christopher A Esq QUALIFIED74Stephen Shaw
1010Arvin AlbaresSpain2025-07-28Truhlar And Truhlar Attys RENEWAL8Xuxue Feng
1011Octavia MaletItaly2025-08-19Morlong Associates UNQUALIFIED92Elwin Sharvill
1012Johnson SergiGermany2025-07-29Printing Dimensions NEGOTIATION36Xuxue Feng
1013Aruna FigeroaSpain2025-08-13Feltz Printing Service UNQUALIFIED76Bernardo Dominic
1014Arvin AlbaresSpain2025-08-22Buckley Miller Wright NEW11Ioni Bowcher
1015Salvatore StockhamBrazil2025-08-11Feiner Bros NEW58Bernardo Dominic
1016Leon OldroydIndia2025-08-19Chapman, Ross E Esq NEGOTIATION99Ioni Bowcher
1017Mayumi KolmetzAustralia2025-07-26Rousseaux, Michael Esq NEGOTIATION26Ioni Bowcher
1018Emily WhobreyJapan2025-08-03Chapman, Ross E Esq UNQUALIFIED80Elwin Sharvill
1019Octavia MaletGermany2025-08-08Commercial Press NEW62Ioni Bowcher
1020Faith GillianAustralia2025-07-25Buckley Miller Wright NEW79Elwin Sharvill
1021Julie StensethAustralia2025-08-01King, Christopher A Esq QUALIFIED46Xuxue Feng
1022Nicolas IturbideJapan2025-07-28Feiner Bros PROPOSAL9Amy Elsner
1023Johnson SergiFrance2025-08-01Feiner Bros NEW80Onyama Limba
1024Maria MarrierCanada2025-07-25Feiner Bros NEW82Amy Elsner
1025Isabel BowleyGermany2025-07-28Chemel, James L Cpa RENEWAL31Ioni Bowcher
1026Mujtaba NickaFrance2025-08-05Feiner Bros UNQUALIFIED6Stephen Shaw
1027Claire TollnerArgentina2025-07-26Feltz Printing Service PROPOSAL40Asiya Javayant
1028Rodrigues CampainAustralia2025-08-10Truhlar And Truhlar Attys RENEWAL10Elwin Sharvill
1029Misaki RoysterSpain2025-08-13Chapman, Ross E Esq QUALIFIED16Anna Fali
1030Adams MorascaBrazil2025-08-14Buckley Miller Wright NEGOTIATION25Bernardo Dominic
1031Julie StensethUnited Kingdom2025-07-31Buckley Miller Wright PROPOSAL78Asiya Javayant
1032David DarakjySpain2025-08-11Buckley Miller Wright NEGOTIATION24Ioni Bowcher
1033Antonio CaudyCanada2025-07-31Truhlar And Truhlar Attys UNQUALIFIED70Anna Fali
1034Aditya KuskoJapan2025-08-21Morlong Associates QUALIFIED50Ivan Magalhaes
1035Alejandro PerinSpain2025-08-19Rousseaux, Michael Esq NEGOTIATION97Stephen Shaw
1036Maria MarrierGermany2025-08-10Printing Dimensions NEW76Bernardo Dominic
1037Leja CaldareraUnited Kingdom2025-08-10King, Christopher A Esq QUALIFIED91Ivan Magalhaes
1038Clifford RimRussia2025-07-26Rousseaux, Michael Esq NEW44Bernardo Dominic
1039Kaitlin OstroskyIndia2025-07-25Benton, John B Jr PROPOSAL97Elwin Sharvill
1040Clifford RimRussia2025-08-02King, Christopher A Esq UNQUALIFIED93Ioni Bowcher
1041Kadeem FlosiJapan2025-08-02Benton, John B Jr UNQUALIFIED20Stephen Shaw
1042Maria MarrierItaly2025-07-29Chemel, James L Cpa NEGOTIATION49Anna Fali
1043Leja CaldareraJapan2025-07-29Benton, John B Jr NEW98Bernardo Dominic
1044Alejandro PerinGermany2025-07-27Chapman, Ross E Esq UNQUALIFIED83Bernardo Dominic
1045Greenwood BologniaSpain2025-08-21Morlong Associates UNQUALIFIED78Elwin Sharvill
1046David DarakjySpain2025-08-08Printing Dimensions NEW69Ioni Bowcher
1047Adams MorascaGermany2025-08-05Feiner Bros RENEWAL65Elwin Sharvill
1048Claire TollnerFrance2025-08-20Dorl, James J Esq NEGOTIATION78Stephen Shaw
1049Emily WhobreyIndia2025-08-01King, Christopher A Esq QUALIFIED64Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Salvatore StockhamGermanyAsiya Javayant PROPOSAL
Kadeem FlosiBrazilIvan Magalhaes NEW
Faith GillianGermanyOnyama Limba NEW
Darci PoquetteSpainAsiya Javayant UNQUALIFIED
Arvin AlbaresFranceIvan Magalhaes QUALIFIED
Silvio SlusarskiJapanAnna Fali UNQUALIFIED
Munro FerenczGermanyBernardo Dominic QUALIFIED
James ButtUnited KingdomXuxue Feng UNQUALIFIED
Maria MarrierSpainOnyama Limba NEGOTIATION
Antonio CaudyFranceStephen Shaw NEGOTIATION
Adams MorascaRussiaBernardo Dominic RENEWAL
Nicolas IturbideItalyIoni Bowcher NEW
David DarakjySpainBernardo Dominic PROPOSAL
Emily WhobreyUnited KingdomAsiya Javayant QUALIFIED
Jennifer AmigonBrazilElwin Sharvill NEW
Francesco ShinkoSpainStephen Shaw PROPOSAL
Emily WhobreyAustraliaAnna Fali RENEWAL
Smith GlickJapanOnyama Limba NEW
Antonio CaudyFranceOnyama Limba QUALIFIED
Deepesh ChuiIndiaAmy Elsner UNQUALIFIED
Tony FollerItalyIoni Bowcher UNQUALIFIED
Jennifer AmigonCanadaStephen Shaw RENEWAL
Isabel BowleyFranceAmy Elsner NEGOTIATION
Faith GillianFranceOnyama Limba NEW
Aruna FigeroaAustraliaStephen Shaw RENEWAL
Arvin AlbaresArgentinaIoni Bowcher RENEWAL
Rodrigues CampainIndiaBernardo Dominic UNQUALIFIED
Jennifer AmigonIndiaBernardo Dominic RENEWAL
Costa DilliardRussiaElwin Sharvill QUALIFIED
Munro FerenczCanadaIoni Bowcher NEGOTIATION
Stacey MacleadIndiaStephen Shaw PROPOSAL
Maisha RulapaughArgentinaXuxue Feng UNQUALIFIED
Leon OldroydIndiaOnyama Limba NEGOTIATION
Emily WhobreyBrazilXuxue Feng QUALIFIED
Jeanfrancois VenereRussiaElwin Sharvill QUALIFIED
Mayumi KolmetzAustraliaElwin Sharvill QUALIFIED
Kadeem FlosiGermanyIoni Bowcher PROPOSAL
Munro FerenczArgentinaAsiya Javayant NEW
Deepesh ChuiUnited KingdomAsiya Javayant RENEWAL
Juan WieserBrazilOnyama Limba PROPOSAL
Maisha RulapaughRussiaAmy Elsner PROPOSAL
Jones VocelkaArgentinaBernardo Dominic UNQUALIFIED
Leon OldroydUnited KingdomAsiya Javayant QUALIFIED
Tony FollerRussiaAmy Elsner UNQUALIFIED
Antonio CaudyBrazilAmy Elsner PROPOSAL
Emily WhobreyIndiaAmy Elsner NEGOTIATION
Izzy GarufiCanadaElwin Sharvill UNQUALIFIED
Julie StensethIndiaBernardo Dominic NEGOTIATION
Alejandro PerinRussiaAsiya Javayant UNQUALIFIED
Munro FerenczBrazilIoni Bowcher QUALIFIED
Frozen Columns
Name
Antonio Caudy
Stacey Maclead
Maria Marrier
Francesco Shinko
Tony Foller
Leja Caldarera
Jennifer Amigon
Octavia Malet
Claire Tollner
Emily Whobrey
Leja Caldarera
James Butt
Aika Inouye
Aditya Kusko
Emily Whobrey
Claire Tollner
Aika Inouye
Izzy Garufi
Misaki Royster
Smith Glick
Sinclair Waycott
Aruna Figeroa
Juan Wieser
Kadeem Flosi
Julie Stenseth
Smith Glick
Mujtaba Nicka
Johnson Sergi
Mayumi Kolmetz
Darci Poquette
Faith Gillian
Aruna Figeroa
Murillo Malet
Faith Gillian
Antonio Caudy
Juan Wieser
Claire Tollner
Chavez Briddick
Morrow Ruta
Faith Gillian
Aika Inouye
Leja Caldarera
Jeanfrancois Venere
Clifford Rim
Aruna Figeroa
Murillo Malet
Morrow Ruta
Stacey Maclead
Antonio Caudy
Claire Tollner
IdCountryDate
1000Canada2025-08-08
1001Japan2025-08-22
1002France2025-08-14
1003Argentina2025-07-27
1004Canada2025-08-12
1005Brazil2025-07-30
1006Japan2025-08-19
1007Germany2025-07-30
1008Canada2025-08-19
1009Germany2025-08-09
1010India2025-07-30
1011Italy2025-08-16
1012Japan2025-07-25
1013Canada2025-08-04
1014Brazil2025-08-18
1015France2025-08-16
1016Australia2025-08-12
1017Argentina2025-08-13
1018Russia2025-08-01
1019Brazil2025-08-04
1020Spain2025-08-17
1021France2025-08-04
1022Italy2025-08-04
1023Brazil2025-08-15
1024Australia2025-08-02
1025India2025-08-12
1026Germany2025-08-06
1027Brazil2025-08-15
1028Germany2025-07-29
1029Japan2025-08-08
1030Australia2025-08-10
1031Argentina2025-08-19
1032Brazil2025-08-08
1033Russia2025-08-21
1034Brazil2025-08-07
1035Germany2025-08-05
1036Russia2025-08-16
1037India2025-07-29
1038Canada2025-07-29
1039Australia2025-07-25
1040India2025-08-05
1041Australia2025-08-10
1042Argentina2025-08-14
1043United Kingdom2025-08-07
1044Japan2025-08-18
1045India2025-08-08
1046United Kingdom2025-07-26
1047Canada2025-08-04
1048Germany2025-07-26
1049United Kingdom2025-07-25

On-Demand Data

NameIdCountryDate
Ashley Doe1000Argentina2025-07-31
Francesco Shinko1001Japan2025-08-03
Maisha Rulapaugh1002France2025-08-22
Costa Dilliard1003Spain2025-07-28
Alejandro Perin1004Russia2025-08-20
Leon Oldroyd1005Japan2025-08-04
Arvin Albares1006Brazil2025-08-13
Deepesh Chui1007United Kingdom2025-07-28
Arvin Albares1008Germany2025-08-01
Munro Ferencz1009India2025-08-06
Claire Tollner1010Spain2025-08-01
Kadeem Flosi1011Russia2025-07-28
James Butt1012India2025-08-04
Greenwood Bolognia1013Germany2025-08-07
Juan Wieser1014Brazil2025-07-29
Salvatore Stockham1015France2025-07-26
Alejandro Perin1016India2025-08-10
Emily Whobrey1017India2025-07-28
Clifford Rim1018Italy2025-08-23
Rodrigues Campain1019Australia2025-08-06
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Julie StensethItalyStephen Shaw UNQUALIFIED
Mayumi KolmetzCanadaStephen Shaw UNQUALIFIED
Chavez BriddickCanadaAnna Fali NEW
Antonio CaudyGermanyAsiya Javayant NEGOTIATION
Francesco ShinkoJapanElwin Sharvill QUALIFIED
Izzy GarufiUnited KingdomOnyama Limba RENEWAL
Jefferson SchemmerBrazilAsiya Javayant NEW
Aditya KuskoFranceIoni Bowcher NEW
Aditya KuskoArgentinaElwin Sharvill UNQUALIFIED
Stacey MacleadCanadaAmy Elsner NEW
Silvio SlusarskiJapanStephen Shaw UNQUALIFIED
David DarakjyRussiaAnna Fali QUALIFIED
Faith GillianIndiaElwin Sharvill UNQUALIFIED
Kaitlin OstroskySpainStephen Shaw UNQUALIFIED
Julie StensethUnited KingdomAnna Fali PROPOSAL
Rodrigues CampainSpainIoni Bowcher RENEWAL
Nicolas IturbideUnited KingdomOnyama Limba QUALIFIED
Antonio CaudyItalyAmy Elsner NEW
Francesco ShinkoGermanyAnna Fali UNQUALIFIED
Misaki RoysterArgentinaBernardo Dominic QUALIFIED
Darci PoquetteFranceAsiya Javayant UNQUALIFIED
Wickens NestleGermanyAnna Fali QUALIFIED
Tony FollerRussiaBernardo Dominic RENEWAL
Johnson SergiFranceIoni Bowcher NEGOTIATION
Leon OldroydSpainIvan Magalhaes NEW
Adams MorascaUnited KingdomXuxue Feng UNQUALIFIED
Kadeem FlosiItalyAmy Elsner RENEWAL
Mujtaba NickaArgentinaBernardo Dominic RENEWAL
Maria MarrierSpainXuxue Feng NEW
Antonio CaudyJapanAnna Fali RENEWAL
Misaki RoysterJapanBernardo Dominic PROPOSAL
Johnson SergiAustraliaAmy Elsner PROPOSAL
Leja CaldareraBrazilAmy Elsner NEGOTIATION
Jeanfrancois VenereBrazilBernardo Dominic NEW
Chavez BriddickItalyIvan Magalhaes QUALIFIED
Tony FollerCanadaIoni Bowcher RENEWAL
Izzy GarufiGermanyAmy Elsner QUALIFIED
Octavia MaletItalyIvan Magalhaes NEGOTIATION
Maria MarrierRussiaBernardo Dominic NEGOTIATION
Julie StensethBrazilAmy Elsner RENEWAL

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