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
Isabel BowleyRussiaAsiya Javayant NEGOTIATION
Mayumi KolmetzCanadaIoni Bowcher PROPOSAL
Maisha RulapaughJapanStephen Shaw RENEWAL
Wickens NestleBrazilAnna Fali NEGOTIATION
Silvio SlusarskiBrazilXuxue Feng UNQUALIFIED
Darci PoquetteItalyAsiya Javayant QUALIFIED
Tony FollerUnited KingdomStephen Shaw RENEWAL
Misaki RoysterSpainAsiya Javayant PROPOSAL
Arvin AlbaresGermanyStephen Shaw PROPOSAL
Morrow RutaGermanyIvan Magalhaes PROPOSAL
Faith GillianBrazilIvan Magalhaes UNQUALIFIED
Johnson SergiBrazilAmy Elsner NEGOTIATION
Jeanfrancois VenereArgentinaStephen Shaw NEGOTIATION
Jones VocelkaCanadaStephen Shaw NEGOTIATION
Ricardo GauchoUnited KingdomAsiya Javayant NEGOTIATION
Smith GlickCanadaAsiya Javayant PROPOSAL
Wickens NestleUnited KingdomOnyama Limba NEGOTIATION
Nicolas IturbideSpainIvan Magalhaes PROPOSAL
Alejandro PerinRussiaAmy Elsner NEW
Clifford RimArgentinaIvan Magalhaes RENEWAL
Ricardo GauchoJapanIoni Bowcher UNQUALIFIED
Morrow RutaSpainAsiya Javayant NEW
Jones VocelkaRussiaBernardo Dominic UNQUALIFIED
Adams MorascaRussiaIvan Magalhaes NEW
Kadeem FlosiBrazilOnyama Limba QUALIFIED
Jeanfrancois VenereItalyAnna Fali RENEWAL
Aditya KuskoArgentinaStephen Shaw PROPOSAL
Cody SaylorsAustraliaStephen Shaw NEW
Leon OldroydUnited KingdomAmy Elsner NEGOTIATION
Emily WhobreyItalyIvan Magalhaes RENEWAL
Ivar PaprockiBrazilAnna Fali PROPOSAL
Sinclair WaycottIndiaIoni Bowcher QUALIFIED
Leja CaldareraItalyAnna Fali QUALIFIED
Leja CaldareraRussiaOnyama Limba QUALIFIED
Morrow RutaItalyOnyama Limba UNQUALIFIED
Kadeem FlosiGermanyBernardo Dominic QUALIFIED
Smith GlickUnited KingdomBernardo Dominic PROPOSAL
Aruna FigeroaAustraliaAsiya Javayant UNQUALIFIED
James ButtSpainXuxue Feng NEGOTIATION
Greenwood BologniaSpainStephen Shaw QUALIFIED
Isabel BowleyBrazilStephen Shaw RENEWAL
Deepesh ChuiFranceElwin Sharvill RENEWAL
Clifford RimIndiaElwin Sharvill RENEWAL
Emily WhobreyUnited KingdomAsiya Javayant NEGOTIATION
Maisha RulapaughIndiaAsiya Javayant PROPOSAL
Juan WieserBrazilElwin Sharvill QUALIFIED
Francesco ShinkoIndiaIvan Magalhaes NEGOTIATION
Aika InouyeRussiaOnyama Limba QUALIFIED
Leja CaldareraItalyOnyama Limba QUALIFIED
Misaki RoysterBrazilAmy Elsner UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Leja CaldareraSpainAsiya Javayant PROPOSAL
David DarakjyJapanXuxue Feng UNQUALIFIED
Clifford RimFranceIvan Magalhaes RENEWAL
Murillo MaletGermanyElwin Sharvill PROPOSAL
Smith GlickBrazilAsiya Javayant NEGOTIATION
Costa DilliardCanadaXuxue Feng QUALIFIED
Silvio SlusarskiGermanyAnna Fali NEW
Leja CaldareraJapanElwin Sharvill RENEWAL
Jefferson SchemmerJapanOnyama Limba PROPOSAL
Smith GlickAustraliaOnyama Limba NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Maisha RulapaughAustralia2026-06-02Printing Dimensions QUALIFIED50Ioni Bowcher
1001Murillo MaletBrazil2026-05-17Commercial Press QUALIFIED6Elwin Sharvill
1002Ricardo GauchoUnited Kingdom2026-05-11Rousseaux, Michael Esq NEW90Ioni Bowcher
1003Cody SaylorsFrance2026-05-26Buckley Miller Wright NEGOTIATION91Anna Fali
1004Maisha RulapaughFrance2026-05-21Rangoni Of Florence QUALIFIED68Ioni Bowcher
1005Aruna FigeroaBrazil2026-05-30Chanay, Jeffrey A Esq PROPOSAL70Asiya Javayant
1006Jones VocelkaCanada2026-05-11Benton, John B Jr NEW59Asiya Javayant
1007Adams MorascaAustralia2026-05-10Commercial Press QUALIFIED60Asiya Javayant
1008David DarakjyUnited Kingdom2026-05-21Commercial Press UNQUALIFIED56Onyama Limba
1009Tony FollerBrazil2026-06-06Buckley Miller Wright PROPOSAL44Bernardo Dominic
1010Rodrigues CampainBrazil2026-05-19Dorl, James J Esq NEW83Onyama Limba
1011Aditya KuskoCanada2026-05-17Commercial Press NEGOTIATION55Ioni Bowcher
1012Isabel BowleyArgentina2026-05-27Dorl, James J Esq QUALIFIED47Asiya Javayant
1013Aditya KuskoGermany2026-05-21Buckley Miller Wright RENEWAL37Anna Fali
1014Clifford RimFrance2026-05-23Printing Dimensions RENEWAL44Onyama Limba
1015Izzy GarufiCanada2026-05-28Morlong Associates NEW52Amy Elsner
1016Mujtaba NickaFrance2026-05-09Commercial Press NEGOTIATION7Amy Elsner
1017Mujtaba NickaIndia2026-05-23King, Christopher A Esq NEGOTIATION99Stephen Shaw
1018Deepesh ChuiSpain2026-05-08Feltz Printing Service NEW45Xuxue Feng
1019Jones VocelkaJapan2026-05-08Feiner Bros UNQUALIFIED68Ioni Bowcher
1020Murillo MaletGermany2026-05-31Truhlar And Truhlar Attys PROPOSAL39Bernardo Dominic
1021Munro FerenczUnited Kingdom2026-05-15Rousseaux, Michael Esq QUALIFIED92Ivan Magalhaes
1022Jeanfrancois VenereAustralia2026-05-15Printing Dimensions NEGOTIATION30Onyama Limba
1023Aika InouyeGermany2026-06-04Dorl, James J Esq UNQUALIFIED60Elwin Sharvill
1024Jones VocelkaJapan2026-06-02Feltz Printing Service PROPOSAL87Bernardo Dominic
1025Izzy GarufiRussia2026-05-09Chanay, Jeffrey A Esq NEGOTIATION90Anna Fali
1026Jones VocelkaIndia2026-06-01Commercial Press QUALIFIED14Asiya Javayant
1027Wickens NestleJapan2026-06-04Truhlar And Truhlar Attys QUALIFIED28Onyama Limba
1028Jeanfrancois VenereCanada2026-06-06Benton, John B Jr PROPOSAL22Bernardo Dominic
1029Maria MarrierRussia2026-05-24King, Christopher A Esq NEGOTIATION74Ivan Magalhaes
1030Izzy GarufiIndia2026-05-22Dorl, James J Esq PROPOSAL89Amy Elsner
1031Leon OldroydAustralia2026-05-24Chapman, Ross E Esq PROPOSAL42Elwin Sharvill
1032Smith GlickFrance2026-05-15Benton, John B Jr PROPOSAL21Bernardo Dominic
1033Arvin AlbaresUnited Kingdom2026-05-27Commercial Press NEW15Bernardo Dominic
1034David DarakjySpain2026-05-13Morlong Associates UNQUALIFIED79Anna Fali
1035Salvatore StockhamRussia2026-06-03Morlong Associates QUALIFIED61Amy Elsner
1036Juan WieserSpain2026-06-06Morlong Associates NEW31Ioni Bowcher
1037Darci PoquetteJapan2026-05-09Commercial Press QUALIFIED76Amy Elsner
1038Nicolas IturbideGermany2026-05-09Rangoni Of Florence UNQUALIFIED64Anna Fali
1039Jones VocelkaGermany2026-05-24Feiner Bros RENEWAL72Asiya Javayant
1040Salvatore StockhamUnited Kingdom2026-05-14Morlong Associates NEGOTIATION47Xuxue Feng
1041Francesco ShinkoAustralia2026-06-06King, Christopher A Esq PROPOSAL30Elwin Sharvill
1042Darci PoquetteRussia2026-05-17Commercial Press QUALIFIED94Anna Fali
1043Murillo MaletJapan2026-05-22Feiner Bros NEW61Elwin Sharvill
1044Silvio SlusarskiFrance2026-06-05Feiner Bros UNQUALIFIED33Elwin Sharvill
1045Antonio CaudyIndia2026-05-23Chapman, Ross E Esq RENEWAL67Onyama Limba
1046Misaki RoysterUnited Kingdom2026-05-30Morlong Associates QUALIFIED47Elwin Sharvill
1047Stacey MacleadItaly2026-06-05Rangoni Of Florence UNQUALIFIED58Elwin Sharvill
1048Ashley DoeArgentina2026-05-11Rousseaux, Michael Esq PROPOSAL36Onyama Limba
1049Julie StensethCanada2026-06-05Rangoni Of Florence PROPOSAL25Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Stacey MacleadArgentinaXuxue Feng UNQUALIFIED
Chavez BriddickGermanyElwin Sharvill PROPOSAL
Misaki RoysterSpainXuxue Feng RENEWAL
Kaitlin OstroskyItalyAsiya Javayant NEGOTIATION
Munro FerenczFranceAnna Fali PROPOSAL
Munro FerenczItalyIoni Bowcher RENEWAL
Adams MorascaAustraliaXuxue Feng UNQUALIFIED
Mayumi KolmetzUnited KingdomElwin Sharvill PROPOSAL
Faith GillianBrazilStephen Shaw RENEWAL
Murillo MaletIndiaAmy Elsner PROPOSAL
Juan WieserFranceIoni Bowcher NEGOTIATION
Mujtaba NickaBrazilStephen Shaw UNQUALIFIED
Octavia MaletJapanBernardo Dominic NEGOTIATION
Deepesh ChuiItalyAsiya Javayant UNQUALIFIED
Misaki RoysterJapanStephen Shaw PROPOSAL
Jones VocelkaRussiaAsiya Javayant RENEWAL
Kadeem FlosiItalyStephen Shaw PROPOSAL
Tony FollerUnited KingdomElwin Sharvill NEW
Leon OldroydCanadaElwin Sharvill PROPOSAL
Maria MarrierGermanyStephen Shaw RENEWAL
Kaitlin OstroskyGermanyAsiya Javayant NEGOTIATION
Kaitlin OstroskyAustraliaIoni Bowcher RENEWAL
Sinclair WaycottItalyBernardo Dominic QUALIFIED
Aika InouyeAustraliaOnyama Limba UNQUALIFIED
Deepesh ChuiGermanyXuxue Feng UNQUALIFIED
Aika InouyeFranceAsiya Javayant RENEWAL
Ivar PaprockiAustraliaOnyama Limba NEW
Faith GillianGermanyAmy Elsner QUALIFIED
Jennifer AmigonJapanXuxue Feng NEW
Munro FerenczItalyStephen Shaw NEW
Rodrigues CampainArgentinaAmy Elsner PROPOSAL
Leja CaldareraSpainElwin Sharvill QUALIFIED
Clifford RimItalyBernardo Dominic NEGOTIATION
Ashley DoeJapanIoni Bowcher NEGOTIATION
Sinclair WaycottCanadaBernardo Dominic NEGOTIATION
Sinclair WaycottUnited KingdomXuxue Feng RENEWAL
Cody SaylorsJapanAsiya Javayant QUALIFIED
Isabel BowleyJapanStephen Shaw PROPOSAL
Kadeem FlosiRussiaIvan Magalhaes PROPOSAL
Morrow RutaBrazilAnna Fali NEGOTIATION
Izzy GarufiBrazilAmy Elsner QUALIFIED
Ashley DoeUnited KingdomElwin Sharvill QUALIFIED
Cody SaylorsUnited KingdomAsiya Javayant PROPOSAL
Leja CaldareraAustraliaAnna Fali RENEWAL
Octavia MaletGermanyBernardo Dominic UNQUALIFIED
Julie StensethAustraliaBernardo Dominic NEW
Misaki RoysterBrazilIvan Magalhaes RENEWAL
Johnson SergiGermanyBernardo Dominic RENEWAL
Wickens NestleAustraliaIoni Bowcher QUALIFIED
Juan WieserBrazilAmy Elsner RENEWAL
Frozen Columns
Name
James Butt
Arvin Albares
Antonio Caudy
Smith Glick
James Butt
Johnson Sergi
Jefferson Schemmer
Johnson Sergi
Stacey Maclead
Jones Vocelka
Munro Ferencz
Salvatore Stockham
Ricardo Gaucho
Izzy Garufi
Leja Caldarera
Leja Caldarera
Jennifer Amigon
Faith Gillian
Jennifer Amigon
Izzy Garufi
Greenwood Bolognia
Alejandro Perin
Silvio Slusarski
David Darakjy
Salvatore Stockham
Kadeem Flosi
Salvatore Stockham
Jones Vocelka
Salvatore Stockham
Rodrigues Campain
Murillo Malet
Johnson Sergi
Izzy Garufi
Emily Whobrey
Salvatore Stockham
Murillo Malet
Julie Stenseth
Smith Glick
David Darakjy
Faith Gillian
Rodrigues Campain
Jennifer Amigon
Izzy Garufi
David Darakjy
Greenwood Bolognia
Mujtaba Nicka
Murillo Malet
Kadeem Flosi
Munro Ferencz
Mayumi Kolmetz
IdCountryDate
1000Spain2026-05-16
1001India2026-06-03
1002Argentina2026-06-04
1003Spain2026-06-05
1004Germany2026-05-28
1005United Kingdom2026-05-15
1006France2026-05-17
1007France2026-05-10
1008Australia2026-05-14
1009Australia2026-05-19
1010Canada2026-05-10
1011United Kingdom2026-05-15
1012Argentina2026-05-27
1013Argentina2026-05-31
1014Argentina2026-06-01
1015India2026-05-26
1016United Kingdom2026-05-27
1017Russia2026-06-03
1018India2026-05-18
1019Spain2026-05-21
1020Canada2026-06-06
1021Spain2026-05-27
1022Argentina2026-05-16
1023Brazil2026-05-12
1024Russia2026-06-03
1025Japan2026-05-09
1026Spain2026-05-13
1027Argentina2026-05-11
1028Japan2026-05-18
1029Brazil2026-05-22
1030Argentina2026-06-02
1031Italy2026-05-23
1032Australia2026-05-12
1033Canada2026-05-17
1034India2026-05-16
1035United Kingdom2026-06-01
1036Argentina2026-06-04
1037Argentina2026-05-18
1038Italy2026-05-13
1039Spain2026-05-22
1040France2026-05-13
1041Japan2026-05-22
1042Canada2026-05-15
1043Japan2026-06-02
1044Brazil2026-05-26
1045France2026-05-26
1046Brazil2026-05-27
1047Canada2026-06-04
1048Argentina2026-05-08
1049Argentina2026-06-06

On-Demand Data

NameIdCountryDate
Izzy Garufi1000Italy2026-05-14
Silvio Slusarski1001Argentina2026-05-21
Murillo Malet1002Spain2026-06-01
Wickens Nestle1003Japan2026-05-12
Misaki Royster1004Japan2026-05-13
Salvatore Stockham1005United Kingdom2026-05-17
Salvatore Stockham1006Russia2026-05-29
Adams Morasca1007Japan2026-05-20
Silvio Slusarski1008Russia2026-05-20
Antonio Caudy1009Germany2026-05-20
Jeanfrancois Venere1010Argentina2026-05-08
Silvio Slusarski1011Brazil2026-05-15
Mujtaba Nicka1012Canada2026-06-03
Emily Whobrey1013Italy2026-05-19
Arvin Albares1014Spain2026-05-14
Isabel Bowley1015Australia2026-05-24
Silvio Slusarski1016Australia2026-06-02
Adams Morasca1017Brazil2026-05-27
Julie Stenseth1018India2026-05-11
Wickens Nestle1019France2026-06-02
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Antonio CaudySpainIoni Bowcher NEGOTIATION
Kaitlin OstroskyBrazilElwin Sharvill NEW
Maisha RulapaughRussiaBernardo Dominic NEGOTIATION
Juan WieserIndiaBernardo Dominic QUALIFIED
Jennifer AmigonUnited KingdomAnna Fali PROPOSAL
Salvatore StockhamUnited KingdomOnyama Limba NEGOTIATION
Greenwood BologniaSpainXuxue Feng PROPOSAL
Leon OldroydArgentinaXuxue Feng NEGOTIATION
Ashley DoeGermanyAmy Elsner UNQUALIFIED
Claire TollnerFranceStephen Shaw NEW
Sinclair WaycottSpainAsiya Javayant UNQUALIFIED
Julie StensethIndiaOnyama Limba RENEWAL
Leja CaldareraIndiaAsiya Javayant QUALIFIED
Maria MarrierUnited KingdomStephen Shaw PROPOSAL
Sinclair WaycottFranceAmy Elsner UNQUALIFIED
Juan WieserSpainElwin Sharvill NEW
Costa DilliardJapanElwin Sharvill UNQUALIFIED
David DarakjyJapanAnna Fali RENEWAL
Jennifer AmigonArgentinaElwin Sharvill RENEWAL
Izzy GarufiGermanyBernardo Dominic NEW
Stacey MacleadBrazilStephen Shaw RENEWAL
James ButtSpainAmy Elsner UNQUALIFIED
Octavia MaletCanadaAsiya Javayant RENEWAL
Jennifer AmigonIndiaAsiya Javayant NEGOTIATION
Munro FerenczFranceOnyama Limba RENEWAL
Kadeem FlosiGermanyAnna Fali NEW
Ashley DoeUnited KingdomXuxue Feng NEW
Claire TollnerUnited KingdomStephen Shaw PROPOSAL
Alejandro PerinSpainAmy Elsner QUALIFIED
Aruna FigeroaRussiaAsiya Javayant QUALIFIED
Johnson SergiCanadaIoni Bowcher PROPOSAL
Leja CaldareraAustraliaElwin Sharvill PROPOSAL
Clifford RimCanadaAsiya Javayant UNQUALIFIED
Rodrigues CampainArgentinaIoni Bowcher PROPOSAL
Maria MarrierAustraliaAmy Elsner PROPOSAL
Wickens NestleCanadaXuxue Feng RENEWAL
Jennifer AmigonIndiaXuxue Feng UNQUALIFIED
Ashley DoeAustraliaElwin Sharvill RENEWAL
Murillo MaletSpainOnyama Limba UNQUALIFIED
Arvin AlbaresItalyIoni Bowcher QUALIFIED

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