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
Misaki RoysterFranceBernardo Dominic NEGOTIATION
Rodrigues CampainJapanStephen Shaw PROPOSAL
Ricardo GauchoBrazilOnyama Limba NEGOTIATION
Leja CaldareraRussiaAnna Fali NEGOTIATION
Johnson SergiGermanyElwin Sharvill PROPOSAL
Munro FerenczItalyBernardo Dominic PROPOSAL
Darci PoquetteArgentinaAnna Fali NEGOTIATION
Chavez BriddickAustraliaAsiya Javayant UNQUALIFIED
Misaki RoysterFranceStephen Shaw QUALIFIED
Maria MarrierItalyElwin Sharvill UNQUALIFIED
Jones VocelkaArgentinaXuxue Feng PROPOSAL
Ivar PaprockiFranceAnna Fali QUALIFIED
Aditya KuskoCanadaElwin Sharvill RENEWAL
Antonio CaudyArgentinaAsiya Javayant PROPOSAL
Isabel BowleyIndiaXuxue Feng QUALIFIED
David DarakjyGermanyAsiya Javayant NEW
Maria MarrierBrazilElwin Sharvill RENEWAL
Aika InouyeItalyAmy Elsner NEW
Chavez BriddickAustraliaBernardo Dominic PROPOSAL
Leja CaldareraUnited KingdomBernardo Dominic RENEWAL
Jeanfrancois VenereBrazilAsiya Javayant RENEWAL
Alejandro PerinSpainXuxue Feng QUALIFIED
Mujtaba NickaArgentinaAsiya Javayant PROPOSAL
Izzy GarufiIndiaAsiya Javayant PROPOSAL
Antonio CaudyBrazilStephen Shaw NEW
Smith GlickIndiaBernardo Dominic UNQUALIFIED
Smith GlickCanadaStephen Shaw QUALIFIED
Kadeem FlosiIndiaIvan Magalhaes NEGOTIATION
Nicolas IturbideBrazilOnyama Limba NEGOTIATION
Wickens NestleIndiaOnyama Limba RENEWAL
David DarakjyItalyXuxue Feng NEW
Maria MarrierCanadaXuxue Feng NEW
Wickens NestleJapanIoni Bowcher PROPOSAL
Kaitlin OstroskyUnited KingdomXuxue Feng NEW
Costa DilliardJapanOnyama Limba PROPOSAL
Johnson SergiIndiaAnna Fali UNQUALIFIED
Kaitlin OstroskyCanadaIvan Magalhaes PROPOSAL
Nicolas IturbideCanadaStephen Shaw NEGOTIATION
Greenwood BologniaSpainStephen Shaw PROPOSAL
James ButtAustraliaIoni Bowcher NEGOTIATION
Maisha RulapaughRussiaIoni Bowcher NEGOTIATION
Faith GillianRussiaIvan Magalhaes PROPOSAL
Izzy GarufiFranceStephen Shaw NEGOTIATION
Francesco ShinkoCanadaAsiya Javayant RENEWAL
Smith GlickGermanyAsiya Javayant RENEWAL
Greenwood BologniaSpainAsiya Javayant UNQUALIFIED
Juan WieserCanadaIvan Magalhaes RENEWAL
Leon OldroydRussiaStephen Shaw UNQUALIFIED
Greenwood BologniaBrazilElwin Sharvill QUALIFIED
Jeanfrancois VenereFranceElwin Sharvill NEW
Horizontal
NameCountryRepresentativeStatus
Costa DilliardGermanyOnyama Limba PROPOSAL
Ivar PaprockiBrazilIvan Magalhaes RENEWAL
Arvin AlbaresCanadaIvan Magalhaes RENEWAL
Julie StensethUnited KingdomOnyama Limba RENEWAL
Maisha RulapaughArgentinaAmy Elsner QUALIFIED
Clifford RimItalyStephen Shaw RENEWAL
Mayumi KolmetzArgentinaAsiya Javayant PROPOSAL
Stacey MacleadAustraliaAsiya Javayant RENEWAL
Emily WhobreyCanadaAnna Fali QUALIFIED
Stacey MacleadItalyAsiya Javayant UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Smith GlickFrance2026-05-22Truhlar And Truhlar Attys PROPOSAL65Anna Fali
1001Francesco ShinkoAustralia2026-05-19Rousseaux, Michael Esq NEW26Elwin Sharvill
1002Jeanfrancois VenereGermany2026-06-02Commercial Press NEW52Onyama Limba
1003Morrow RutaFrance2026-05-18Rousseaux, Michael Esq QUALIFIED85Bernardo Dominic
1004Silvio SlusarskiSpain2026-05-22Commercial Press QUALIFIED28Onyama Limba
1005Greenwood BologniaCanada2026-05-29Dorl, James J Esq UNQUALIFIED54Ivan Magalhaes
1006Mayumi KolmetzCanada2026-05-19Rousseaux, Michael Esq NEW46Amy Elsner
1007Silvio SlusarskiFrance2026-06-01Benton, John B Jr NEGOTIATION32Asiya Javayant
1008James ButtSpain2026-06-13Truhlar And Truhlar Attys NEGOTIATION39Stephen Shaw
1009Sinclair WaycottIndia2026-06-02Feiner Bros PROPOSAL60Bernardo Dominic
1010Adams MorascaSpain2026-05-18Benton, John B Jr NEW55Xuxue Feng
1011James ButtArgentina2026-06-13King, Christopher A Esq NEGOTIATION37Ivan Magalhaes
1012Mayumi KolmetzJapan2026-05-21Morlong Associates PROPOSAL74Elwin Sharvill
1013Faith GillianSpain2026-06-10Buckley Miller Wright PROPOSAL62Ioni Bowcher
1014Izzy GarufiItaly2026-06-12Chemel, James L Cpa RENEWAL1Anna Fali
1015Costa DilliardItaly2026-05-25Benton, John B Jr NEW60Xuxue Feng
1016Octavia MaletCanada2026-06-07Chanay, Jeffrey A Esq NEW30Xuxue Feng
1017Murillo MaletIndia2026-06-03Chemel, James L Cpa UNQUALIFIED12Ivan Magalhaes
1018Greenwood BologniaArgentina2026-05-31Feiner Bros PROPOSAL38Onyama Limba
1019Munro FerenczUnited Kingdom2026-06-11Benton, John B Jr NEGOTIATION26Elwin Sharvill
1020Adams MorascaSpain2026-06-06Printing Dimensions UNQUALIFIED47Ioni Bowcher
1021Murillo MaletCanada2026-05-19Rangoni Of Florence PROPOSAL10Bernardo Dominic
1022Juan WieserArgentina2026-06-12Feltz Printing Service NEGOTIATION34Asiya Javayant
1023James ButtAustralia2026-05-18Benton, John B Jr NEGOTIATION97Asiya Javayant
1024Leja CaldareraIndia2026-05-22Feltz Printing Service QUALIFIED10Stephen Shaw
1025Alejandro PerinArgentina2026-05-30Dorl, James J Esq NEGOTIATION16Ioni Bowcher
1026Cody SaylorsBrazil2026-05-19Buckley Miller Wright PROPOSAL88Ivan Magalhaes
1027Maria MarrierRussia2026-05-20King, Christopher A Esq NEW16Bernardo Dominic
1028Leja CaldareraSpain2026-05-20Chanay, Jeffrey A Esq QUALIFIED82Onyama Limba
1029Deepesh ChuiFrance2026-06-09King, Christopher A Esq PROPOSAL3Anna Fali
1030Wickens NestleAustralia2026-05-30Truhlar And Truhlar Attys NEW29Stephen Shaw
1031Wickens NestleRussia2026-06-06Morlong Associates PROPOSAL70Onyama Limba
1032Faith GillianIndia2026-06-11Benton, John B Jr NEW69Onyama Limba
1033James ButtAustralia2026-05-26Chanay, Jeffrey A Esq QUALIFIED26Ivan Magalhaes
1034Alejandro PerinGermany2026-05-25Morlong Associates UNQUALIFIED71Ioni Bowcher
1035Mujtaba NickaIndia2026-05-16Commercial Press RENEWAL78Elwin Sharvill
1036Rodrigues CampainGermany2026-05-23Chemel, James L Cpa RENEWAL51Asiya Javayant
1037Aruna FigeroaBrazil2026-06-03Chanay, Jeffrey A Esq PROPOSAL5Asiya Javayant
1038Leja CaldareraJapan2026-06-13Printing Dimensions NEGOTIATION18Anna Fali
1039Aika InouyeFrance2026-05-26Feiner Bros NEGOTIATION25Anna Fali
1040Sinclair WaycottAustralia2026-06-12Feltz Printing Service RENEWAL18Bernardo Dominic
1041Antonio CaudyUnited Kingdom2026-06-14Chanay, Jeffrey A Esq PROPOSAL57Anna Fali
1042Nicolas IturbideIndia2026-05-29King, Christopher A Esq RENEWAL58Onyama Limba
1043Deepesh ChuiBrazil2026-05-30Morlong Associates UNQUALIFIED28Stephen Shaw
1044Misaki RoysterGermany2026-05-19Dorl, James J Esq NEGOTIATION34Onyama Limba
1045Tony FollerUnited Kingdom2026-06-08Rangoni Of Florence PROPOSAL37Elwin Sharvill
1046Salvatore StockhamRussia2026-06-11Buckley Miller Wright QUALIFIED29Xuxue Feng
1047Costa DilliardArgentina2026-06-11Feltz Printing Service UNQUALIFIED54Stephen Shaw
1048Julie StensethJapan2026-06-10Commercial Press PROPOSAL34Onyama Limba
1049Faith GillianGermany2026-06-11Rangoni Of Florence QUALIFIED85Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Cody SaylorsSpainXuxue Feng QUALIFIED
Alejandro PerinIndiaOnyama Limba PROPOSAL
Sinclair WaycottUnited KingdomAnna Fali RENEWAL
Ricardo GauchoGermanyAnna Fali NEGOTIATION
Nicolas IturbideJapanIvan Magalhaes RENEWAL
Octavia MaletRussiaElwin Sharvill UNQUALIFIED
Ricardo GauchoIndiaBernardo Dominic RENEWAL
Aruna FigeroaSpainIoni Bowcher RENEWAL
Aruna FigeroaSpainIvan Magalhaes RENEWAL
Maisha RulapaughRussiaXuxue Feng QUALIFIED
Misaki RoysterSpainAsiya Javayant UNQUALIFIED
Leja CaldareraBrazilAnna Fali QUALIFIED
Mayumi KolmetzJapanAsiya Javayant NEGOTIATION
Morrow RutaIndiaElwin Sharvill UNQUALIFIED
Misaki RoysterArgentinaOnyama Limba NEGOTIATION
Ashley DoeRussiaIvan Magalhaes QUALIFIED
Smith GlickSpainBernardo Dominic NEGOTIATION
Jones VocelkaGermanyOnyama Limba RENEWAL
Deepesh ChuiBrazilAmy Elsner UNQUALIFIED
Deepesh ChuiCanadaXuxue Feng RENEWAL
Claire TollnerRussiaXuxue Feng NEGOTIATION
Faith GillianIndiaIoni Bowcher RENEWAL
Misaki RoysterArgentinaXuxue Feng QUALIFIED
Claire TollnerFranceBernardo Dominic RENEWAL
Emily WhobreyJapanAsiya Javayant NEW
Faith GillianGermanyStephen Shaw QUALIFIED
Jones VocelkaAustraliaIoni Bowcher NEW
Jeanfrancois VenereRussiaBernardo Dominic QUALIFIED
Cody SaylorsCanadaStephen Shaw RENEWAL
Ivar PaprockiUnited KingdomIvan Magalhaes QUALIFIED
Alejandro PerinUnited KingdomIvan Magalhaes NEGOTIATION
Cody SaylorsItalyOnyama Limba NEGOTIATION
Faith GillianIndiaAsiya Javayant NEGOTIATION
Ashley DoeJapanStephen Shaw PROPOSAL
Salvatore StockhamFranceAmy Elsner QUALIFIED
Jeanfrancois VenereSpainAmy Elsner UNQUALIFIED
Juan WieserArgentinaBernardo Dominic NEGOTIATION
Munro FerenczRussiaBernardo Dominic UNQUALIFIED
Smith GlickUnited KingdomElwin Sharvill QUALIFIED
Isabel BowleyItalyIvan Magalhaes RENEWAL
Leon OldroydAustraliaAmy Elsner UNQUALIFIED
Aika InouyeItalyXuxue Feng NEW
Leja CaldareraIndiaAmy Elsner QUALIFIED
Aruna FigeroaFranceBernardo Dominic NEGOTIATION
James ButtIndiaAsiya Javayant QUALIFIED
Leja CaldareraSpainIvan Magalhaes NEGOTIATION
Francesco ShinkoItalyIvan Magalhaes RENEWAL
Emily WhobreyFranceAmy Elsner PROPOSAL
Francesco ShinkoSpainBernardo Dominic UNQUALIFIED
Aditya KuskoGermanyStephen Shaw RENEWAL
Frozen Columns
Name
Smith Glick
Morrow Ruta
Ashley Doe
Kaitlin Ostrosky
Juan Wieser
Mujtaba Nicka
Nicolas Iturbide
Kadeem Flosi
Jefferson Schemmer
David Darakjy
Costa Dilliard
Greenwood Bolognia
Faith Gillian
Kadeem Flosi
Kaitlin Ostrosky
Munro Ferencz
Claire Tollner
Smith Glick
Costa Dilliard
David Darakjy
Rodrigues Campain
Adams Morasca
Darci Poquette
Alejandro Perin
Juan Wieser
Murillo Malet
Arvin Albares
Juan Wieser
James Butt
Arvin Albares
Julie Stenseth
Chavez Briddick
Greenwood Bolognia
Deepesh Chui
Jeanfrancois Venere
Antonio Caudy
Darci Poquette
Sinclair Waycott
Faith Gillian
Misaki Royster
Aditya Kusko
Alejandro Perin
Aditya Kusko
Francesco Shinko
Jeanfrancois Venere
Adams Morasca
Misaki Royster
Francesco Shinko
Ricardo Gaucho
Alejandro Perin
IdCountryDate
1000Italy2026-05-22
1001Australia2026-05-20
1002Germany2026-06-07
1003Brazil2026-05-22
1004Argentina2026-05-27
1005France2026-06-05
1006Argentina2026-06-04
1007Spain2026-06-13
1008Italy2026-05-17
1009Germany2026-06-11
1010Brazil2026-06-11
1011Japan2026-06-14
1012Spain2026-06-13
1013Spain2026-06-14
1014Canada2026-06-04
1015Australia2026-06-12
1016Spain2026-05-22
1017Spain2026-06-04
1018Germany2026-05-28
1019Spain2026-05-20
1020Brazil2026-05-19
1021Germany2026-06-13
1022Argentina2026-06-01
1023Brazil2026-05-26
1024France2026-05-28
1025United Kingdom2026-05-31
1026India2026-06-01
1027France2026-05-19
1028Brazil2026-06-10
1029Japan2026-05-23
1030Australia2026-05-20
1031Australia2026-06-13
1032Argentina2026-06-09
1033Russia2026-05-29
1034Germany2026-05-23
1035Germany2026-06-09
1036Spain2026-05-22
1037Canada2026-06-08
1038United Kingdom2026-05-31
1039Australia2026-06-14
1040Spain2026-05-25
1041United Kingdom2026-05-30
1042Argentina2026-06-04
1043Japan2026-05-20
1044Spain2026-05-23
1045Brazil2026-05-27
1046Canada2026-06-09
1047Russia2026-05-16
1048Australia2026-06-04
1049Russia2026-05-16

On-Demand Data

NameIdCountryDate
Wickens Nestle1000Argentina2026-05-26
Julie Stenseth1001Russia2026-06-01
Kadeem Flosi1002France2026-06-12
Clifford Rim1003Australia2026-06-09
Chavez Briddick1004Argentina2026-05-21
Chavez Briddick1005Japan2026-06-12
Silvio Slusarski1006Russia2026-06-12
Julie Stenseth1007Japan2026-06-09
Salvatore Stockham1008Brazil2026-05-16
James Butt1009Russia2026-05-26
Juan Wieser1010Argentina2026-06-11
Stacey Maclead1011India2026-05-25
Silvio Slusarski1012Russia2026-05-26
Mujtaba Nicka1013Brazil2026-06-08
Ricardo Gaucho1014Germany2026-05-26
Nicolas Iturbide1015Italy2026-06-04
Adams Morasca1016Russia2026-05-25
Arvin Albares1017Japan2026-06-04
Rodrigues Campain1018Spain2026-06-09
Ricardo Gaucho1019Italy2026-05-30
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Mayumi KolmetzBrazilElwin Sharvill RENEWAL
Rodrigues CampainCanadaAmy Elsner PROPOSAL
Deepesh ChuiArgentinaIvan Magalhaes NEW
Clifford RimCanadaElwin Sharvill NEGOTIATION
Faith GillianAustraliaIoni Bowcher PROPOSAL
Maisha RulapaughAustraliaAnna Fali RENEWAL
Cody SaylorsFranceElwin Sharvill NEW
Alejandro PerinGermanyStephen Shaw NEW
Jefferson SchemmerFranceXuxue Feng PROPOSAL
Jones VocelkaRussiaAnna Fali RENEWAL
Deepesh ChuiCanadaOnyama Limba NEW
Jennifer AmigonCanadaIvan Magalhaes PROPOSAL
Kaitlin OstroskyIndiaAsiya Javayant NEGOTIATION
Antonio CaudyArgentinaXuxue Feng QUALIFIED
Morrow RutaItalyIvan Magalhaes NEW
Morrow RutaRussiaAsiya Javayant NEW
Cody SaylorsGermanyOnyama Limba NEW
Leja CaldareraSpainBernardo Dominic PROPOSAL
Mayumi KolmetzFranceIoni Bowcher RENEWAL
Claire TollnerRussiaStephen Shaw PROPOSAL
Chavez BriddickBrazilAmy Elsner PROPOSAL
Julie StensethArgentinaAsiya Javayant RENEWAL
Johnson SergiUnited KingdomAmy Elsner NEW
Ivar PaprockiIndiaAsiya Javayant QUALIFIED
Sinclair WaycottAustraliaBernardo Dominic QUALIFIED
Antonio CaudyItalyOnyama Limba NEGOTIATION
Smith GlickUnited KingdomIoni Bowcher PROPOSAL
Salvatore StockhamFranceOnyama Limba NEW
Aruna FigeroaArgentinaAsiya Javayant NEW
Sinclair WaycottUnited KingdomXuxue Feng UNQUALIFIED
Jennifer AmigonRussiaAsiya Javayant NEGOTIATION
Isabel BowleyGermanyBernardo Dominic UNQUALIFIED
Smith GlickFranceOnyama Limba NEGOTIATION
Jefferson SchemmerUnited KingdomAmy Elsner RENEWAL
Ashley DoeJapanAnna Fali PROPOSAL
Jones VocelkaAustraliaElwin Sharvill UNQUALIFIED
Arvin AlbaresCanadaStephen Shaw RENEWAL
Misaki RoysterAustraliaAsiya Javayant PROPOSAL
Munro FerenczItalyOnyama Limba RENEWAL
Mayumi KolmetzBrazilIoni Bowcher PROPOSAL

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