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
Smith GlickJapanIoni Bowcher RENEWAL
Morrow RutaJapanAsiya Javayant RENEWAL
Francesco ShinkoRussiaIvan Magalhaes PROPOSAL
Munro FerenczUnited KingdomStephen Shaw NEW
Silvio SlusarskiCanadaIoni Bowcher NEGOTIATION
Wickens NestleRussiaIvan Magalhaes QUALIFIED
Munro FerenczSpainAmy Elsner RENEWAL
Ashley DoeGermanyBernardo Dominic PROPOSAL
Julie StensethSpainAnna Fali NEGOTIATION
Ashley DoeFranceElwin Sharvill NEW
Ricardo GauchoCanadaAsiya Javayant RENEWAL
Mayumi KolmetzAustraliaIoni Bowcher PROPOSAL
Emily WhobreyAustraliaAnna Fali UNQUALIFIED
Deepesh ChuiCanadaOnyama Limba PROPOSAL
Alejandro PerinRussiaElwin Sharvill NEGOTIATION
Rodrigues CampainSpainIoni Bowcher QUALIFIED
Leja CaldareraAustraliaXuxue Feng NEW
Emily WhobreyGermanyIoni Bowcher UNQUALIFIED
Jeanfrancois VenereSpainStephen Shaw NEGOTIATION
Darci PoquetteArgentinaAnna Fali NEW
Claire TollnerJapanElwin Sharvill PROPOSAL
David DarakjyGermanyXuxue Feng PROPOSAL
Costa DilliardUnited KingdomIvan Magalhaes NEGOTIATION
Ricardo GauchoIndiaIvan Magalhaes NEGOTIATION
Aika InouyeItalyIvan Magalhaes NEGOTIATION
Morrow RutaArgentinaAmy Elsner NEGOTIATION
Aditya KuskoIndiaElwin Sharvill RENEWAL
Francesco ShinkoRussiaStephen Shaw PROPOSAL
Antonio CaudyFranceIoni Bowcher QUALIFIED
Jeanfrancois VenereBrazilOnyama Limba PROPOSAL
Smith GlickItalyIvan Magalhaes PROPOSAL
Juan WieserItalyAnna Fali NEGOTIATION
Adams MorascaCanadaXuxue Feng PROPOSAL
Aruna FigeroaSpainXuxue Feng NEW
Isabel BowleyArgentinaIvan Magalhaes UNQUALIFIED
Arvin AlbaresItalyXuxue Feng NEGOTIATION
Wickens NestleJapanIvan Magalhaes NEW
Chavez BriddickItalyIvan Magalhaes NEGOTIATION
Cody SaylorsGermanyElwin Sharvill PROPOSAL
Izzy GarufiSpainElwin Sharvill QUALIFIED
Murillo MaletArgentinaOnyama Limba NEW
Tony FollerJapanAsiya Javayant NEW
Faith GillianAustraliaStephen Shaw QUALIFIED
Octavia MaletBrazilAnna Fali QUALIFIED
Costa DilliardSpainIoni Bowcher RENEWAL
Maisha RulapaughGermanyBernardo Dominic NEGOTIATION
James ButtBrazilXuxue Feng UNQUALIFIED
Mayumi KolmetzCanadaAmy Elsner UNQUALIFIED
Wickens NestleAustraliaStephen Shaw RENEWAL
Arvin AlbaresCanadaIvan Magalhaes PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Costa DilliardJapanIoni Bowcher PROPOSAL
Rodrigues CampainGermanyAnna Fali NEW
Murillo MaletUnited KingdomXuxue Feng QUALIFIED
Deepesh ChuiUnited KingdomBernardo Dominic QUALIFIED
Jefferson SchemmerItalyStephen Shaw UNQUALIFIED
Claire TollnerRussiaIvan Magalhaes UNQUALIFIED
Francesco ShinkoJapanOnyama Limba UNQUALIFIED
Octavia MaletBrazilAnna Fali RENEWAL
Jefferson SchemmerAustraliaElwin Sharvill NEW
Smith GlickJapanAmy Elsner PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Cody SaylorsJapan2026-06-07Truhlar And Truhlar Attys UNQUALIFIED28Anna Fali
1001Salvatore StockhamArgentina2026-05-27Feiner Bros QUALIFIED78Xuxue Feng
1002Izzy GarufiBrazil2026-06-03Printing Dimensions NEGOTIATION52Ioni Bowcher
1003Jeanfrancois VenereItaly2026-05-31Morlong Associates PROPOSAL93Stephen Shaw
1004Morrow RutaBrazil2026-06-11Morlong Associates NEW42Amy Elsner
1005Claire TollnerRussia2026-06-05Morlong Associates UNQUALIFIED86Onyama Limba
1006Clifford RimAustralia2026-06-03Chapman, Ross E Esq UNQUALIFIED64Stephen Shaw
1007Mujtaba NickaBrazil2026-05-20Truhlar And Truhlar Attys UNQUALIFIED8Onyama Limba
1008Juan WieserAustralia2026-06-10Morlong Associates PROPOSAL61Anna Fali
1009Jennifer AmigonItaly2026-06-09Rousseaux, Michael Esq QUALIFIED55Ioni Bowcher
1010Ashley DoeArgentina2026-05-21Morlong Associates UNQUALIFIED3Ivan Magalhaes
1011Maisha RulapaughUnited Kingdom2026-06-15Rousseaux, Michael Esq UNQUALIFIED86Stephen Shaw
1012Costa DilliardAustralia2026-05-21Feltz Printing Service UNQUALIFIED73Asiya Javayant
1013Leja CaldareraRussia2026-05-25Chanay, Jeffrey A Esq QUALIFIED22Ivan Magalhaes
1014David DarakjyRussia2026-05-23Chapman, Ross E Esq UNQUALIFIED23Asiya Javayant
1015Smith GlickCanada2026-06-17King, Christopher A Esq RENEWAL76Xuxue Feng
1016Francesco ShinkoJapan2026-05-25Commercial Press PROPOSAL81Anna Fali
1017Ricardo GauchoSpain2026-06-07Dorl, James J Esq NEW51Xuxue Feng
1018Murillo MaletGermany2026-06-07King, Christopher A Esq NEGOTIATION85Bernardo Dominic
1019Jeanfrancois VenereArgentina2026-05-21Rousseaux, Michael Esq RENEWAL73Bernardo Dominic
1020Ricardo GauchoFrance2026-06-11Dorl, James J Esq UNQUALIFIED97Bernardo Dominic
1021Kadeem FlosiBrazil2026-05-29Printing Dimensions UNQUALIFIED87Amy Elsner
1022Emily WhobreyUnited Kingdom2026-05-24Commercial Press RENEWAL37Ioni Bowcher
1023Adams MorascaSpain2026-05-21Rousseaux, Michael Esq QUALIFIED72Onyama Limba
1024David DarakjyJapan2026-06-13Printing Dimensions NEW70Asiya Javayant
1025Salvatore StockhamArgentina2026-05-20Truhlar And Truhlar Attys UNQUALIFIED73Ivan Magalhaes
1026Claire TollnerItaly2026-05-26Chapman, Ross E Esq NEW29Stephen Shaw
1027Nicolas IturbideArgentina2026-05-19Buckley Miller Wright PROPOSAL90Ivan Magalhaes
1028Mayumi KolmetzItaly2026-05-22Commercial Press NEGOTIATION61Elwin Sharvill
1029Greenwood BologniaSpain2026-06-02Printing Dimensions QUALIFIED69Stephen Shaw
1030Adams MorascaItaly2026-05-30Feiner Bros NEW7Bernardo Dominic
1031Greenwood BologniaArgentina2026-06-11Buckley Miller Wright UNQUALIFIED92Xuxue Feng
1032Antonio CaudyItaly2026-05-29Chapman, Ross E Esq NEW40Onyama Limba
1033Mayumi KolmetzItaly2026-06-04Printing Dimensions NEGOTIATION35Onyama Limba
1034Salvatore StockhamFrance2026-05-27Chapman, Ross E Esq UNQUALIFIED72Anna Fali
1035Jennifer AmigonSpain2026-05-24Feiner Bros UNQUALIFIED30Elwin Sharvill
1036Mujtaba NickaArgentina2026-05-19Truhlar And Truhlar Attys RENEWAL84Anna Fali
1037Jennifer AmigonFrance2026-05-19Rangoni Of Florence UNQUALIFIED16Elwin Sharvill
1038Stacey MacleadIndia2026-06-15Printing Dimensions PROPOSAL50Amy Elsner
1039Juan WieserRussia2026-05-27Morlong Associates PROPOSAL89Asiya Javayant
1040Jennifer AmigonBrazil2026-05-23Dorl, James J Esq UNQUALIFIED62Asiya Javayant
1041Faith GillianIndia2026-05-24Commercial Press NEGOTIATION69Amy Elsner
1042Francesco ShinkoSpain2026-06-02Buckley Miller Wright NEW65Stephen Shaw
1043Sinclair WaycottItaly2026-06-07Dorl, James J Esq PROPOSAL78Asiya Javayant
1044Aditya KuskoJapan2026-05-23Benton, John B Jr QUALIFIED37Ioni Bowcher
1045Francesco ShinkoGermany2026-06-08Dorl, James J Esq RENEWAL82Anna Fali
1046Isabel BowleyFrance2026-05-26Buckley Miller Wright UNQUALIFIED75Elwin Sharvill
1047Munro FerenczJapan2026-05-26Truhlar And Truhlar Attys UNQUALIFIED30Amy Elsner
1048Salvatore StockhamBrazil2026-05-21Printing Dimensions PROPOSAL96Onyama Limba
1049Tony FollerCanada2026-06-16Morlong Associates UNQUALIFIED10Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Salvatore StockhamUnited KingdomIvan Magalhaes QUALIFIED
Mayumi KolmetzFranceXuxue Feng PROPOSAL
Francesco ShinkoGermanyAmy Elsner UNQUALIFIED
Juan WieserArgentinaAnna Fali QUALIFIED
Munro FerenczRussiaStephen Shaw NEW
Arvin AlbaresJapanAnna Fali UNQUALIFIED
Rodrigues CampainSpainAsiya Javayant PROPOSAL
James ButtItalyElwin Sharvill UNQUALIFIED
Aruna FigeroaCanadaAsiya Javayant NEW
Alejandro PerinUnited KingdomIvan Magalhaes PROPOSAL
Aika InouyeGermanyStephen Shaw UNQUALIFIED
Francesco ShinkoJapanStephen Shaw NEW
James ButtSpainOnyama Limba UNQUALIFIED
Jennifer AmigonUnited KingdomStephen Shaw UNQUALIFIED
Wickens NestleIndiaIoni Bowcher NEGOTIATION
Julie StensethFranceElwin Sharvill RENEWAL
Mayumi KolmetzGermanyIvan Magalhaes RENEWAL
Jennifer AmigonFranceIoni Bowcher NEW
Claire TollnerGermanyIoni Bowcher NEGOTIATION
Sinclair WaycottCanadaElwin Sharvill UNQUALIFIED
Sinclair WaycottBrazilAmy Elsner NEW
Leon OldroydAustraliaIoni Bowcher RENEWAL
Mayumi KolmetzGermanyStephen Shaw PROPOSAL
Ivar PaprockiFranceIoni Bowcher NEW
Ivar PaprockiArgentinaXuxue Feng QUALIFIED
Wickens NestleUnited KingdomIoni Bowcher PROPOSAL
Jefferson SchemmerIndiaStephen Shaw RENEWAL
Ivar PaprockiUnited KingdomElwin Sharvill NEW
Misaki RoysterGermanyStephen Shaw UNQUALIFIED
Aditya KuskoFranceIoni Bowcher NEGOTIATION
Isabel BowleyFranceXuxue Feng QUALIFIED
Aruna FigeroaIndiaStephen Shaw RENEWAL
Jones VocelkaJapanElwin Sharvill NEW
Munro FerenczItalyBernardo Dominic QUALIFIED
Julie StensethItalyElwin Sharvill NEGOTIATION
Maisha RulapaughFranceIvan Magalhaes QUALIFIED
Salvatore StockhamGermanyIoni Bowcher RENEWAL
Juan WieserGermanyElwin Sharvill PROPOSAL
Rodrigues CampainFranceAnna Fali NEW
Aditya KuskoItalyAmy Elsner NEGOTIATION
Silvio SlusarskiArgentinaXuxue Feng QUALIFIED
Kaitlin OstroskyItalyXuxue Feng NEW
Arvin AlbaresAustraliaXuxue Feng NEGOTIATION
Antonio CaudyJapanAmy Elsner RENEWAL
Silvio SlusarskiJapanAmy Elsner RENEWAL
Silvio SlusarskiGermanyXuxue Feng NEGOTIATION
Emily WhobreyIndiaIvan Magalhaes PROPOSAL
Smith GlickFranceAmy Elsner QUALIFIED
Alejandro PerinSpainIvan Magalhaes NEW
James ButtIndiaXuxue Feng RENEWAL
Frozen Columns
Name
Nicolas Iturbide
Jones Vocelka
Wickens Nestle
Johnson Sergi
Francesco Shinko
Francesco Shinko
Maria Marrier
Sinclair Waycott
Juan Wieser
Murillo Malet
Cody Saylors
Jennifer Amigon
Smith Glick
Jones Vocelka
Izzy Garufi
Aika Inouye
Maisha Rulapaugh
Chavez Briddick
Chavez Briddick
Jeanfrancois Venere
Kaitlin Ostrosky
Ivar Paprocki
Munro Ferencz
Silvio Slusarski
Johnson Sergi
Ivar Paprocki
Maria Marrier
David Darakjy
Francesco Shinko
Stacey Maclead
Silvio Slusarski
Costa Dilliard
Mayumi Kolmetz
Antonio Caudy
Maisha Rulapaugh
Francesco Shinko
Kaitlin Ostrosky
Salvatore Stockham
Francesco Shinko
Tony Foller
Rodrigues Campain
Isabel Bowley
Sinclair Waycott
Jefferson Schemmer
Faith Gillian
Maria Marrier
Stacey Maclead
Mayumi Kolmetz
Jefferson Schemmer
Stacey Maclead
IdCountryDate
1000India2026-05-31
1001Australia2026-06-02
1002Italy2026-06-02
1003Russia2026-05-20
1004France2026-05-22
1005Russia2026-06-15
1006Russia2026-05-23
1007United Kingdom2026-06-05
1008Spain2026-06-14
1009India2026-06-11
1010United Kingdom2026-05-19
1011United Kingdom2026-06-12
1012Brazil2026-05-23
1013Spain2026-06-11
1014France2026-05-28
1015Australia2026-05-31
1016India2026-06-12
1017Germany2026-05-22
1018India2026-05-20
1019Japan2026-06-06
1020Italy2026-06-16
1021Spain2026-06-12
1022India2026-05-23
1023Russia2026-06-14
1024Germany2026-06-17
1025United Kingdom2026-06-01
1026Canada2026-05-29
1027France2026-06-03
1028France2026-06-11
1029India2026-05-22
1030United Kingdom2026-05-24
1031India2026-06-13
1032Canada2026-05-27
1033France2026-06-15
1034India2026-06-14
1035Japan2026-06-13
1036India2026-06-05
1037India2026-05-21
1038Japan2026-05-24
1039United Kingdom2026-06-12
1040Italy2026-06-11
1041Germany2026-06-16
1042Brazil2026-05-23
1043Italy2026-05-22
1044Australia2026-06-03
1045India2026-05-29
1046Russia2026-05-27
1047Canada2026-05-20
1048Russia2026-05-26
1049United Kingdom2026-06-01

On-Demand Data

NameIdCountryDate
Juan Wieser1000Russia2026-05-25
Nicolas Iturbide1001Italy2026-05-27
Nicolas Iturbide1002France2026-05-28
Wickens Nestle1003France2026-06-03
Cody Saylors1004Russia2026-06-05
Greenwood Bolognia1005Spain2026-05-29
Smith Glick1006Brazil2026-05-21
Murillo Malet1007Italy2026-05-19
Sinclair Waycott1008Canada2026-05-29
Chavez Briddick1009India2026-06-12
Emily Whobrey1010Japan2026-06-10
Murillo Malet1011Argentina2026-05-19
Mujtaba Nicka1012Japan2026-06-03
Izzy Garufi1013Germany2026-06-09
Misaki Royster1014Australia2026-06-07
Francesco Shinko1015Italy2026-05-31
Alejandro Perin1016Germany2026-06-13
Aditya Kusko1017Russia2026-05-25
Emily Whobrey1018Russia2026-06-09
Kadeem Flosi1019Argentina2026-06-16
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Mujtaba NickaAustraliaXuxue Feng QUALIFIED
Clifford RimJapanAnna Fali NEGOTIATION
Aika InouyeUnited KingdomAsiya Javayant UNQUALIFIED
Kadeem FlosiGermanyStephen Shaw PROPOSAL
Kaitlin OstroskyItalyAnna Fali NEW
Ashley DoeBrazilXuxue Feng NEGOTIATION
Francesco ShinkoGermanyIvan Magalhaes RENEWAL
Tony FollerIndiaAsiya Javayant UNQUALIFIED
Nicolas IturbideArgentinaBernardo Dominic QUALIFIED
Silvio SlusarskiGermanyBernardo Dominic QUALIFIED
Ivar PaprockiAustraliaBernardo Dominic RENEWAL
Sinclair WaycottCanadaBernardo Dominic NEW
Chavez BriddickRussiaOnyama Limba NEGOTIATION
Arvin AlbaresGermanyBernardo Dominic UNQUALIFIED
Tony FollerUnited KingdomIoni Bowcher RENEWAL
Leja CaldareraCanadaElwin Sharvill RENEWAL
James ButtRussiaXuxue Feng RENEWAL
Aruna FigeroaUnited KingdomBernardo Dominic NEGOTIATION
Francesco ShinkoJapanOnyama Limba NEW
Faith GillianGermanyStephen Shaw RENEWAL
Aruna FigeroaSpainElwin Sharvill UNQUALIFIED
Kaitlin OstroskyAustraliaOnyama Limba UNQUALIFIED
Isabel BowleyIndiaAmy Elsner NEW
Faith GillianAustraliaStephen Shaw PROPOSAL
Nicolas IturbideBrazilOnyama Limba NEW
Tony FollerFranceIoni Bowcher UNQUALIFIED
Deepesh ChuiIndiaElwin Sharvill NEW
Ricardo GauchoAustraliaStephen Shaw NEW
Maisha RulapaughUnited KingdomOnyama Limba PROPOSAL
Deepesh ChuiItalyIvan Magalhaes UNQUALIFIED
Deepesh ChuiFranceIvan Magalhaes NEW
Stacey MacleadArgentinaAmy Elsner RENEWAL
Costa DilliardJapanAnna Fali NEW
Emily WhobreyItalyBernardo Dominic UNQUALIFIED
Ashley DoeFranceXuxue Feng UNQUALIFIED
Jeanfrancois VenereSpainXuxue Feng UNQUALIFIED
Juan WieserItalyAmy Elsner NEW
James ButtFranceIvan Magalhaes NEGOTIATION
Deepesh ChuiFranceOnyama Limba RENEWAL
Wickens NestleGermanyXuxue 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>