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
Jones VocelkaGermanyIoni Bowcher PROPOSAL
Darci PoquetteArgentinaAmy Elsner UNQUALIFIED
Juan WieserFranceStephen Shaw NEW
Clifford RimArgentinaOnyama Limba NEGOTIATION
Murillo MaletUnited KingdomElwin Sharvill NEGOTIATION
Alejandro PerinCanadaIoni Bowcher UNQUALIFIED
Ashley DoeCanadaStephen Shaw NEW
Adams MorascaJapanAmy Elsner QUALIFIED
Cody SaylorsRussiaXuxue Feng QUALIFIED
Costa DilliardSpainBernardo Dominic PROPOSAL
Maisha RulapaughIndiaOnyama Limba NEW
Adams MorascaGermanyIvan Magalhaes UNQUALIFIED
Johnson SergiIndiaStephen Shaw RENEWAL
James ButtCanadaAmy Elsner NEGOTIATION
Kaitlin OstroskyFranceAsiya Javayant NEGOTIATION
Ivar PaprockiGermanyXuxue Feng NEGOTIATION
Mayumi KolmetzItalyBernardo Dominic NEGOTIATION
Leon OldroydSpainStephen Shaw PROPOSAL
Tony FollerCanadaXuxue Feng QUALIFIED
Claire TollnerBrazilXuxue Feng NEGOTIATION
Sinclair WaycottItalyBernardo Dominic NEGOTIATION
David DarakjySpainElwin Sharvill NEGOTIATION
Deepesh ChuiCanadaAsiya Javayant NEGOTIATION
Smith GlickGermanyAsiya Javayant UNQUALIFIED
Johnson SergiArgentinaAsiya Javayant NEW
Claire TollnerGermanyStephen Shaw QUALIFIED
Munro FerenczArgentinaAmy Elsner RENEWAL
Murillo MaletFranceAmy Elsner PROPOSAL
James ButtIndiaIoni Bowcher QUALIFIED
Tony FollerAustraliaAsiya Javayant NEW
Claire TollnerGermanyOnyama Limba RENEWAL
Misaki RoysterUnited KingdomIoni Bowcher UNQUALIFIED
Leon OldroydSpainElwin Sharvill QUALIFIED
Costa DilliardSpainBernardo Dominic QUALIFIED
Julie StensethBrazilIoni Bowcher NEGOTIATION
Morrow RutaFranceXuxue Feng RENEWAL
Misaki RoysterBrazilIvan Magalhaes PROPOSAL
Munro FerenczFranceStephen Shaw UNQUALIFIED
Isabel BowleyItalyElwin Sharvill QUALIFIED
Mayumi KolmetzBrazilStephen Shaw QUALIFIED
Rodrigues CampainUnited KingdomAnna Fali NEW
Jeanfrancois VenereGermanyStephen Shaw NEGOTIATION
Smith GlickArgentinaIoni Bowcher UNQUALIFIED
Costa DilliardBrazilXuxue Feng PROPOSAL
Morrow RutaIndiaAnna Fali PROPOSAL
Wickens NestleCanadaAnna Fali QUALIFIED
Kaitlin OstroskyAustraliaOnyama Limba RENEWAL
Mujtaba NickaBrazilIvan Magalhaes NEGOTIATION
Izzy GarufiFranceAnna Fali NEGOTIATION
Costa DilliardJapanOnyama Limba QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Chavez BriddickSpainIvan Magalhaes PROPOSAL
Octavia MaletJapanBernardo Dominic NEGOTIATION
Antonio CaudyBrazilXuxue Feng RENEWAL
Francesco ShinkoFranceIoni Bowcher UNQUALIFIED
Maria MarrierCanadaAsiya Javayant UNQUALIFIED
Maisha RulapaughCanadaBernardo Dominic PROPOSAL
Izzy GarufiIndiaIvan Magalhaes UNQUALIFIED
Aditya KuskoCanadaBernardo Dominic QUALIFIED
Misaki RoysterJapanStephen Shaw QUALIFIED
Greenwood BologniaSpainIvan Magalhaes PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Ricardo GauchoJapan2026-06-09Chapman, Ross E Esq RENEWAL83Amy Elsner
1001Aika InouyeArgentina2026-05-25Printing Dimensions QUALIFIED98Amy Elsner
1002Rodrigues CampainSpain2026-05-31Benton, John B Jr NEW56Ioni Bowcher
1003Leja CaldareraFrance2026-05-31Rangoni Of Florence QUALIFIED89Ivan Magalhaes
1004Tony FollerArgentina2026-05-15Printing Dimensions NEGOTIATION73Bernardo Dominic
1005Leon OldroydRussia2026-06-07Chemel, James L Cpa NEGOTIATION89Bernardo Dominic
1006Kadeem FlosiBrazil2026-05-24Truhlar And Truhlar Attys QUALIFIED76Asiya Javayant
1007Salvatore StockhamRussia2026-05-19Dorl, James J Esq NEW26Amy Elsner
1008Julie StensethRussia2026-05-26Buckley Miller Wright NEGOTIATION79Onyama Limba
1009Sinclair WaycottItaly2026-05-24Benton, John B Jr NEGOTIATION64Ioni Bowcher
1010Misaki RoysterIndia2026-05-24Chapman, Ross E Esq NEGOTIATION5Asiya Javayant
1011Silvio SlusarskiArgentina2026-06-04Buckley Miller Wright UNQUALIFIED78Bernardo Dominic
1012Mujtaba NickaBrazil2026-06-06King, Christopher A Esq UNQUALIFIED25Amy Elsner
1013Darci PoquetteBrazil2026-05-19Chemel, James L Cpa NEW84Xuxue Feng
1014Misaki RoysterItaly2026-06-01Chanay, Jeffrey A Esq UNQUALIFIED1Ioni Bowcher
1015Francesco ShinkoItaly2026-06-09Chapman, Ross E Esq RENEWAL35Amy Elsner
1016Munro FerenczIndia2026-06-13Chapman, Ross E Esq NEW19Asiya Javayant
1017Octavia MaletIndia2026-06-08Chanay, Jeffrey A Esq RENEWAL38Stephen Shaw
1018Sinclair WaycottCanada2026-06-07Buckley Miller Wright UNQUALIFIED90Amy Elsner
1019Ashley DoeRussia2026-05-30Chemel, James L Cpa QUALIFIED16Ivan Magalhaes
1020Rodrigues CampainUnited Kingdom2026-05-26Dorl, James J Esq PROPOSAL10Bernardo Dominic
1021Ashley DoeSpain2026-06-11King, Christopher A Esq RENEWAL23Anna Fali
1022Wickens NestleUnited Kingdom2026-05-22King, Christopher A Esq RENEWAL5Asiya Javayant
1023Aika InouyeCanada2026-05-18Rangoni Of Florence UNQUALIFIED77Elwin Sharvill
1024Morrow RutaArgentina2026-05-30Feiner Bros RENEWAL96Anna Fali
1025Maisha RulapaughArgentina2026-06-13Buckley Miller Wright RENEWAL85Ioni Bowcher
1026Nicolas IturbideRussia2026-05-23Chanay, Jeffrey A Esq PROPOSAL92Ivan Magalhaes
1027Johnson SergiFrance2026-06-07Dorl, James J Esq NEW97Stephen Shaw
1028Jennifer AmigonCanada2026-06-13Feiner Bros NEGOTIATION36Xuxue Feng
1029Darci PoquetteUnited Kingdom2026-05-16Commercial Press UNQUALIFIED24Xuxue Feng
1030Kaitlin OstroskySpain2026-05-31Commercial Press NEGOTIATION37Ioni Bowcher
1031Mujtaba NickaFrance2026-06-01Rangoni Of Florence RENEWAL22Xuxue Feng
1032Clifford RimIndia2026-05-31Commercial Press RENEWAL44Ivan Magalhaes
1033James ButtIndia2026-05-24Morlong Associates QUALIFIED87Stephen Shaw
1034Juan WieserIndia2026-05-18Morlong Associates RENEWAL88Onyama Limba
1035Tony FollerAustralia2026-05-27King, Christopher A Esq RENEWAL68Stephen Shaw
1036Cody SaylorsUnited Kingdom2026-06-03Truhlar And Truhlar Attys PROPOSAL99Xuxue Feng
1037Rodrigues CampainSpain2026-05-24Morlong Associates NEGOTIATION70Ioni Bowcher
1038Ivar PaprockiGermany2026-05-22Rangoni Of Florence NEW17Amy Elsner
1039Maria MarrierJapan2026-06-08Chemel, James L Cpa UNQUALIFIED6Ioni Bowcher
1040Chavez BriddickJapan2026-06-07Rousseaux, Michael Esq RENEWAL17Xuxue Feng
1041Jennifer AmigonGermany2026-06-12Chemel, James L Cpa UNQUALIFIED88Bernardo Dominic
1042Kadeem FlosiUnited Kingdom2026-05-30King, Christopher A Esq PROPOSAL82Anna Fali
1043Clifford RimSpain2026-05-20Feltz Printing Service NEGOTIATION40Xuxue Feng
1044Murillo MaletItaly2026-06-13Printing Dimensions PROPOSAL86Bernardo Dominic
1045Juan WieserUnited Kingdom2026-06-13King, Christopher A Esq NEGOTIATION51Amy Elsner
1046Julie StensethGermany2026-06-08Printing Dimensions PROPOSAL55Anna Fali
1047Murillo MaletSpain2026-06-13Dorl, James J Esq PROPOSAL68Stephen Shaw
1048Murillo MaletGermany2026-06-11Dorl, James J Esq RENEWAL92Amy Elsner
1049Smith GlickSpain2026-05-18Printing Dimensions NEW67Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Nicolas IturbideItalyXuxue Feng QUALIFIED
Cody SaylorsFranceXuxue Feng NEGOTIATION
Jennifer AmigonRussiaAnna Fali NEGOTIATION
Deepesh ChuiRussiaOnyama Limba PROPOSAL
Arvin AlbaresFranceAnna Fali NEGOTIATION
Isabel BowleyUnited KingdomIoni Bowcher RENEWAL
Faith GillianCanadaOnyama Limba NEGOTIATION
Greenwood BologniaIndiaIvan Magalhaes NEW
James ButtJapanBernardo Dominic NEGOTIATION
Stacey MacleadItalyAnna Fali UNQUALIFIED
Maisha RulapaughArgentinaStephen Shaw NEW
Aruna FigeroaAustraliaBernardo Dominic NEW
Octavia MaletJapanAsiya Javayant NEGOTIATION
Alejandro PerinFranceIvan Magalhaes UNQUALIFIED
Munro FerenczIndiaBernardo Dominic UNQUALIFIED
Ashley DoeAustraliaAsiya Javayant NEGOTIATION
Clifford RimItalyStephen Shaw UNQUALIFIED
Sinclair WaycottCanadaAsiya Javayant RENEWAL
Faith GillianIndiaStephen Shaw NEGOTIATION
Isabel BowleyRussiaStephen Shaw UNQUALIFIED
Claire TollnerAustraliaAnna Fali PROPOSAL
Costa DilliardRussiaAmy Elsner PROPOSAL
Mayumi KolmetzItalyElwin Sharvill NEW
Morrow RutaJapanAnna Fali PROPOSAL
Silvio SlusarskiArgentinaXuxue Feng QUALIFIED
Antonio CaudyArgentinaElwin Sharvill PROPOSAL
Salvatore StockhamCanadaBernardo Dominic NEGOTIATION
Jefferson SchemmerItalyElwin Sharvill UNQUALIFIED
Morrow RutaRussiaElwin Sharvill NEGOTIATION
Mujtaba NickaBrazilAnna Fali PROPOSAL
Alejandro PerinSpainBernardo Dominic QUALIFIED
Misaki RoysterArgentinaStephen Shaw NEGOTIATION
Jeanfrancois VenereBrazilIoni Bowcher NEGOTIATION
Leja CaldareraUnited KingdomAmy Elsner UNQUALIFIED
Silvio SlusarskiIndiaAmy Elsner NEGOTIATION
Isabel BowleyFranceAsiya Javayant QUALIFIED
Izzy GarufiItalyElwin Sharvill NEGOTIATION
Francesco ShinkoGermanyElwin Sharvill NEGOTIATION
Smith GlickUnited KingdomAnna Fali RENEWAL
Isabel BowleyCanadaStephen Shaw UNQUALIFIED
Clifford RimCanadaOnyama Limba NEGOTIATION
Faith GillianJapanIvan Magalhaes RENEWAL
Emily WhobreyItalyIvan Magalhaes RENEWAL
Stacey MacleadItalyIvan Magalhaes NEW
Costa DilliardSpainXuxue Feng PROPOSAL
Aika InouyeJapanAsiya Javayant UNQUALIFIED
Leja CaldareraAustraliaStephen Shaw UNQUALIFIED
Faith GillianFranceXuxue Feng NEGOTIATION
Greenwood BologniaRussiaAmy Elsner RENEWAL
Darci PoquetteItalyIoni Bowcher QUALIFIED
Frozen Columns
Name
Deepesh Chui
Nicolas Iturbide
Munro Ferencz
Wickens Nestle
Adams Morasca
Murillo Malet
Greenwood Bolognia
Maisha Rulapaugh
Adams Morasca
Kadeem Flosi
Nicolas Iturbide
Aika Inouye
Smith Glick
Leja Caldarera
Claire Tollner
Aruna Figeroa
Smith Glick
Aika Inouye
Alejandro Perin
Alejandro Perin
Leja Caldarera
Faith Gillian
Emily Whobrey
Aruna Figeroa
Arvin Albares
Francesco Shinko
Cody Saylors
Johnson Sergi
Salvatore Stockham
Ashley Doe
Jones Vocelka
Morrow Ruta
Mujtaba Nicka
Silvio Slusarski
Morrow Ruta
Silvio Slusarski
Francesco Shinko
Julie Stenseth
Mujtaba Nicka
Aruna Figeroa
Kadeem Flosi
Stacey Maclead
Jefferson Schemmer
Jefferson Schemmer
Maria Marrier
Darci Poquette
Misaki Royster
Aruna Figeroa
Antonio Caudy
Ivar Paprocki
IdCountryDate
1000Spain2026-06-09
1001Brazil2026-06-03
1002India2026-06-08
1003Argentina2026-05-21
1004Japan2026-06-06
1005Italy2026-05-16
1006Spain2026-05-21
1007Japan2026-06-10
1008Australia2026-05-17
1009France2026-06-06
1010Japan2026-06-04
1011Spain2026-05-22
1012Russia2026-06-05
1013Spain2026-05-29
1014India2026-05-30
1015Germany2026-05-29
1016Spain2026-06-06
1017Brazil2026-05-16
1018Russia2026-06-11
1019Spain2026-06-05
1020Australia2026-05-27
1021United Kingdom2026-06-04
1022Russia2026-05-19
1023Italy2026-05-30
1024Canada2026-06-01
1025United Kingdom2026-06-03
1026Argentina2026-05-16
1027France2026-06-02
1028Spain2026-06-03
1029Canada2026-05-17
1030Russia2026-06-08
1031Japan2026-05-26
1032United Kingdom2026-05-24
1033Russia2026-05-26
1034France2026-05-29
1035Germany2026-06-07
1036Argentina2026-06-05
1037Argentina2026-06-04
1038United Kingdom2026-05-15
1039India2026-06-05
1040Russia2026-05-25
1041Australia2026-05-22
1042France2026-05-25
1043Japan2026-05-17
1044Japan2026-06-10
1045Spain2026-05-26
1046United Kingdom2026-06-10
1047Spain2026-06-09
1048India2026-05-25
1049Japan2026-05-20

On-Demand Data

NameIdCountryDate
Clifford Rim1000Australia2026-05-15
Morrow Ruta1001Spain2026-06-02
Aika Inouye1002Argentina2026-06-08
Murillo Malet1003Brazil2026-05-29
Antonio Caudy1004Spain2026-05-26
Morrow Ruta1005Japan2026-05-22
Nicolas Iturbide1006United Kingdom2026-06-09
Arvin Albares1007Argentina2026-05-28
Jeanfrancois Venere1008Japan2026-06-07
Tony Foller1009Italy2026-06-09
Adams Morasca1010Canada2026-06-09
Ashley Doe1011Germany2026-06-11
Misaki Royster1012Italy2026-06-07
Munro Ferencz1013France2026-05-21
Jennifer Amigon1014Argentina2026-06-10
Izzy Garufi1015Australia2026-05-16
Faith Gillian1016Spain2026-06-03
Deepesh Chui1017Italy2026-06-12
Emily Whobrey1018Italy2026-05-30
Faith Gillian1019France2026-06-05
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Chavez BriddickArgentinaOnyama Limba PROPOSAL
Leja CaldareraArgentinaElwin Sharvill QUALIFIED
Nicolas IturbideCanadaAnna Fali NEW
Izzy GarufiGermanyOnyama Limba PROPOSAL
Clifford RimGermanyXuxue Feng QUALIFIED
Antonio CaudyJapanIoni Bowcher NEW
Darci PoquetteItalyIvan Magalhaes NEW
Leja CaldareraAustraliaBernardo Dominic RENEWAL
Aika InouyeGermanyAnna Fali UNQUALIFIED
Salvatore StockhamSpainBernardo Dominic NEGOTIATION
Nicolas IturbideFranceStephen Shaw NEW
Emily WhobreyBrazilStephen Shaw UNQUALIFIED
Juan WieserJapanAmy Elsner UNQUALIFIED
Claire TollnerGermanyAmy Elsner RENEWAL
Darci PoquetteJapanOnyama Limba NEW
Nicolas IturbideRussiaStephen Shaw NEW
Salvatore StockhamAustraliaOnyama Limba NEW
Jones VocelkaFranceXuxue Feng PROPOSAL
Kadeem FlosiJapanXuxue Feng NEGOTIATION
Wickens NestleBrazilAmy Elsner RENEWAL
Kaitlin OstroskyAustraliaElwin Sharvill PROPOSAL
Ivar PaprockiUnited KingdomIoni Bowcher NEW
Tony FollerArgentinaIoni Bowcher PROPOSAL
Munro FerenczFranceStephen Shaw RENEWAL
Jones VocelkaItalyStephen Shaw UNQUALIFIED
Cody SaylorsIndiaAsiya Javayant PROPOSAL
Nicolas IturbideAustraliaAnna Fali RENEWAL
Ashley DoeGermanyIoni Bowcher NEGOTIATION
Misaki RoysterAustraliaAmy Elsner NEGOTIATION
Johnson SergiRussiaAmy Elsner PROPOSAL
Leja CaldareraCanadaElwin Sharvill PROPOSAL
Mayumi KolmetzCanadaXuxue Feng UNQUALIFIED
Jennifer AmigonAustraliaXuxue Feng RENEWAL
Ivar PaprockiJapanAnna Fali NEGOTIATION
Kadeem FlosiArgentinaElwin Sharvill UNQUALIFIED
Munro FerenczIndiaElwin Sharvill QUALIFIED
Ivar PaprockiCanadaBernardo Dominic NEW
Stacey MacleadItalyOnyama Limba UNQUALIFIED
Maisha RulapaughBrazilXuxue Feng UNQUALIFIED
Maria MarrierGermanyElwin Sharvill NEW

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