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
Silvio SlusarskiBrazilOnyama Limba RENEWAL
Costa DilliardBrazilXuxue Feng RENEWAL
Adams MorascaFranceIoni Bowcher NEW
Silvio SlusarskiCanadaAsiya Javayant QUALIFIED
Smith GlickArgentinaIvan Magalhaes NEGOTIATION
Munro FerenczArgentinaStephen Shaw PROPOSAL
Deepesh ChuiAustraliaIoni Bowcher NEW
Jones VocelkaRussiaIoni Bowcher NEGOTIATION
Sinclair WaycottAustraliaIoni Bowcher QUALIFIED
Leon OldroydItalyIoni Bowcher NEW
Maisha RulapaughAustraliaAmy Elsner QUALIFIED
Maria MarrierUnited KingdomStephen Shaw RENEWAL
Munro FerenczItalyOnyama Limba UNQUALIFIED
Mujtaba NickaRussiaIvan Magalhaes QUALIFIED
Leja CaldareraRussiaElwin Sharvill NEGOTIATION
Antonio CaudyItalyBernardo Dominic UNQUALIFIED
Sinclair WaycottAustraliaElwin Sharvill RENEWAL
Silvio SlusarskiRussiaElwin Sharvill UNQUALIFIED
Stacey MacleadAustraliaAmy Elsner NEGOTIATION
Misaki RoysterUnited KingdomAmy Elsner RENEWAL
Izzy GarufiBrazilOnyama Limba NEGOTIATION
Arvin AlbaresGermanyAmy Elsner UNQUALIFIED
Costa DilliardArgentinaXuxue Feng QUALIFIED
Antonio CaudyUnited KingdomXuxue Feng UNQUALIFIED
Salvatore StockhamSpainAmy Elsner QUALIFIED
Juan WieserSpainBernardo Dominic PROPOSAL
Ivar PaprockiIndiaStephen Shaw PROPOSAL
Jeanfrancois VenereAustraliaElwin Sharvill RENEWAL
Kaitlin OstroskyAustraliaAmy Elsner NEGOTIATION
Clifford RimBrazilElwin Sharvill UNQUALIFIED
Mujtaba NickaRussiaElwin Sharvill PROPOSAL
Murillo MaletJapanStephen Shaw NEW
Costa DilliardCanadaAmy Elsner QUALIFIED
Cody SaylorsUnited KingdomIvan Magalhaes NEGOTIATION
Smith GlickUnited KingdomAsiya Javayant UNQUALIFIED
Julie StensethRussiaAsiya Javayant PROPOSAL
Claire TollnerGermanyAmy Elsner NEGOTIATION
Wickens NestleItalyIvan Magalhaes UNQUALIFIED
Darci PoquetteBrazilBernardo Dominic QUALIFIED
Morrow RutaGermanyIvan Magalhaes NEW
Arvin AlbaresJapanIoni Bowcher PROPOSAL
Sinclair WaycottIndiaStephen Shaw PROPOSAL
Smith GlickAustraliaXuxue Feng PROPOSAL
Darci PoquetteIndiaOnyama Limba PROPOSAL
Nicolas IturbideCanadaIoni Bowcher PROPOSAL
David DarakjyGermanyXuxue Feng PROPOSAL
Chavez BriddickItalyBernardo Dominic RENEWAL
Ashley DoeItalyIvan Magalhaes QUALIFIED
Stacey MacleadArgentinaXuxue Feng PROPOSAL
Arvin AlbaresBrazilAsiya Javayant QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Alejandro PerinJapanIoni Bowcher RENEWAL
Maria MarrierBrazilOnyama Limba NEGOTIATION
Ivar PaprockiUnited KingdomAsiya Javayant NEGOTIATION
Deepesh ChuiJapanAnna Fali NEGOTIATION
Aika InouyeSpainAnna Fali RENEWAL
Tony FollerRussiaAsiya Javayant RENEWAL
Maria MarrierBrazilIoni Bowcher PROPOSAL
Juan WieserAustraliaAnna Fali RENEWAL
Greenwood BologniaAustraliaXuxue Feng NEW
Kaitlin OstroskyIndiaAsiya Javayant RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000James ButtFrance2026-04-05Feltz Printing Service RENEWAL76Ivan Magalhaes
1001Francesco ShinkoFrance2026-04-26Truhlar And Truhlar Attys NEW96Elwin Sharvill
1002Murillo MaletArgentina2026-04-27Dorl, James J Esq NEGOTIATION66Anna Fali
1003James ButtJapan2026-04-24Chanay, Jeffrey A Esq UNQUALIFIED98Elwin Sharvill
1004Greenwood BologniaItaly2026-04-08Chemel, James L Cpa UNQUALIFIED90Anna Fali
1005Faith GillianGermany2026-04-10Feiner Bros UNQUALIFIED11Bernardo Dominic
1006Arvin AlbaresSpain2026-04-18Chemel, James L Cpa RENEWAL99Bernardo Dominic
1007James ButtSpain2026-04-25Chapman, Ross E Esq QUALIFIED37Ivan Magalhaes
1008Morrow RutaGermany2026-04-19Dorl, James J Esq NEGOTIATION86Onyama Limba
1009Morrow RutaIndia2026-04-12Rangoni Of Florence UNQUALIFIED73Bernardo Dominic
1010Tony FollerCanada2026-04-09Feltz Printing Service PROPOSAL71Amy Elsner
1011Nicolas IturbideAustralia2026-04-07King, Christopher A Esq PROPOSAL50Stephen Shaw
1012Jefferson SchemmerBrazil2026-04-14Commercial Press PROPOSAL17Amy Elsner
1013Ashley DoeItaly2026-04-07Truhlar And Truhlar Attys RENEWAL48Elwin Sharvill
1014Tony FollerIndia2026-04-29Rangoni Of Florence NEW8Amy Elsner
1015James ButtUnited Kingdom2026-04-28Truhlar And Truhlar Attys NEGOTIATION68Anna Fali
1016Greenwood BologniaFrance2026-04-01Rousseaux, Michael Esq UNQUALIFIED5Stephen Shaw
1017Julie StensethJapan2026-04-22Buckley Miller Wright NEW24Xuxue Feng
1018Maria MarrierBrazil2026-04-17Chanay, Jeffrey A Esq UNQUALIFIED60Amy Elsner
1019Munro FerenczGermany2026-04-21Feltz Printing Service NEW2Xuxue Feng
1020Maria MarrierFrance2026-04-09Truhlar And Truhlar Attys RENEWAL2Ivan Magalhaes
1021Rodrigues CampainBrazil2026-04-01King, Christopher A Esq NEW11Elwin Sharvill
1022Aditya KuskoSpain2026-04-15Commercial Press UNQUALIFIED86Xuxue Feng
1023James ButtBrazil2026-04-03Chanay, Jeffrey A Esq NEGOTIATION96Ivan Magalhaes
1024Morrow RutaBrazil2026-04-21Morlong Associates NEGOTIATION48Xuxue Feng
1025Mujtaba NickaSpain2026-04-25Feltz Printing Service PROPOSAL81Stephen Shaw
1026Johnson SergiCanada2026-03-31Benton, John B Jr NEW93Amy Elsner
1027Murillo MaletRussia2026-04-15Feiner Bros UNQUALIFIED33Amy Elsner
1028David DarakjyIndia2026-04-02Chanay, Jeffrey A Esq NEGOTIATION55Ioni Bowcher
1029Arvin AlbaresItaly2026-04-11Morlong Associates NEW95Anna Fali
1030Silvio SlusarskiCanada2026-04-06Dorl, James J Esq UNQUALIFIED85Asiya Javayant
1031Alejandro PerinFrance2026-04-23Chapman, Ross E Esq PROPOSAL21Bernardo Dominic
1032Ricardo GauchoUnited Kingdom2026-04-09Chapman, Ross E Esq PROPOSAL75Onyama Limba
1033Morrow RutaRussia2026-04-13Truhlar And Truhlar Attys PROPOSAL71Stephen Shaw
1034Aditya KuskoFrance2026-04-13King, Christopher A Esq RENEWAL86Asiya Javayant
1035Sinclair WaycottCanada2026-04-17Buckley Miller Wright NEGOTIATION31Elwin Sharvill
1036Ivar PaprockiArgentina2026-04-24Truhlar And Truhlar Attys RENEWAL35Xuxue Feng
1037Alejandro PerinAustralia2026-04-23King, Christopher A Esq PROPOSAL45Stephen Shaw
1038Aditya KuskoSpain2026-04-05Chanay, Jeffrey A Esq UNQUALIFIED30Stephen Shaw
1039Emily WhobreyIndia2026-04-17Rousseaux, Michael Esq NEW53Stephen Shaw
1040Faith GillianUnited Kingdom2026-04-27Feltz Printing Service PROPOSAL67Anna Fali
1041Rodrigues CampainFrance2026-04-06Rangoni Of Florence NEGOTIATION82Anna Fali
1042Clifford RimArgentina2026-04-24Chapman, Ross E Esq RENEWAL65Asiya Javayant
1043Emily WhobreyBrazil2026-04-29Commercial Press NEGOTIATION62Ivan Magalhaes
1044Sinclair WaycottUnited Kingdom2026-04-28Rousseaux, Michael Esq PROPOSAL64Ioni Bowcher
1045Faith GillianRussia2026-04-16Chanay, Jeffrey A Esq NEW3Amy Elsner
1046Alejandro PerinCanada2026-04-16Chanay, Jeffrey A Esq NEW6Onyama Limba
1047Ricardo GauchoItaly2026-04-08Morlong Associates RENEWAL13Ivan Magalhaes
1048Antonio CaudyGermany2026-04-04Rousseaux, Michael Esq NEW80Stephen Shaw
1049Jones VocelkaUnited Kingdom2026-04-08Rousseaux, Michael Esq NEW1Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Kaitlin OstroskyAustraliaAmy Elsner UNQUALIFIED
Mujtaba NickaCanadaAsiya Javayant NEW
Nicolas IturbideGermanyXuxue Feng NEGOTIATION
Misaki RoysterJapanElwin Sharvill RENEWAL
Leon OldroydRussiaXuxue Feng QUALIFIED
Leja CaldareraUnited KingdomAnna Fali NEGOTIATION
James ButtCanadaAsiya Javayant QUALIFIED
Darci PoquetteIndiaOnyama Limba NEGOTIATION
Nicolas IturbideRussiaAsiya Javayant QUALIFIED
Jennifer AmigonJapanAnna Fali PROPOSAL
Mayumi KolmetzFranceAnna Fali PROPOSAL
Aditya KuskoAustraliaStephen Shaw NEW
Munro FerenczRussiaAsiya Javayant NEW
Murillo MaletRussiaAnna Fali PROPOSAL
Smith GlickIndiaXuxue Feng QUALIFIED
Johnson SergiArgentinaIvan Magalhaes QUALIFIED
Ivar PaprockiSpainIoni Bowcher NEW
Maria MarrierUnited KingdomAmy Elsner NEGOTIATION
Misaki RoysterBrazilBernardo Dominic UNQUALIFIED
Julie StensethSpainIvan Magalhaes NEGOTIATION
Munro FerenczGermanyIoni Bowcher UNQUALIFIED
Greenwood BologniaJapanAsiya Javayant UNQUALIFIED
Kadeem FlosiBrazilAmy Elsner UNQUALIFIED
Silvio SlusarskiRussiaAmy Elsner PROPOSAL
Tony FollerCanadaOnyama Limba PROPOSAL
Juan WieserRussiaOnyama Limba RENEWAL
Chavez BriddickJapanElwin Sharvill NEGOTIATION
Francesco ShinkoArgentinaAmy Elsner QUALIFIED
Maisha RulapaughItalyXuxue Feng NEGOTIATION
Mujtaba NickaArgentinaStephen Shaw NEW
Mujtaba NickaGermanyStephen Shaw QUALIFIED
Smith GlickJapanElwin Sharvill NEW
Adams MorascaAustraliaXuxue Feng NEW
Francesco ShinkoGermanyBernardo Dominic UNQUALIFIED
Misaki RoysterSpainBernardo Dominic QUALIFIED
Jeanfrancois VenereFranceAsiya Javayant NEGOTIATION
Wickens NestleUnited KingdomIvan Magalhaes RENEWAL
Jefferson SchemmerFranceIoni Bowcher QUALIFIED
Munro FerenczSpainAmy Elsner QUALIFIED
Kadeem FlosiUnited KingdomAsiya Javayant NEGOTIATION
Clifford RimSpainOnyama Limba NEGOTIATION
Deepesh ChuiBrazilAnna Fali NEGOTIATION
Ricardo GauchoGermanyAmy Elsner RENEWAL
Maisha RulapaughUnited KingdomOnyama Limba UNQUALIFIED
Rodrigues CampainIndiaXuxue Feng NEGOTIATION
Octavia MaletJapanOnyama Limba QUALIFIED
Mujtaba NickaJapanIoni Bowcher NEGOTIATION
Jennifer AmigonSpainBernardo Dominic QUALIFIED
Mujtaba NickaGermanyAsiya Javayant PROPOSAL
Nicolas IturbideItalyAmy Elsner UNQUALIFIED
Frozen Columns
Name
Adams Morasca
Stacey Maclead
Alejandro Perin
David Darakjy
Aruna Figeroa
Clifford Rim
Chavez Briddick
Darci Poquette
Mayumi Kolmetz
Octavia Malet
Misaki Royster
David Darakjy
Jefferson Schemmer
Maria Marrier
Sinclair Waycott
Kadeem Flosi
Smith Glick
Salvatore Stockham
David Darakjy
Jeanfrancois Venere
Ricardo Gaucho
Munro Ferencz
Salvatore Stockham
Johnson Sergi
Chavez Briddick
Clifford Rim
Francesco Shinko
Jeanfrancois Venere
Jennifer Amigon
Aditya Kusko
Murillo Malet
Kadeem Flosi
Antonio Caudy
Ashley Doe
Clifford Rim
Izzy Garufi
Jennifer Amigon
Mayumi Kolmetz
Cody Saylors
Silvio Slusarski
Leja Caldarera
Claire Tollner
Jefferson Schemmer
Jones Vocelka
Faith Gillian
Maisha Rulapaugh
Misaki Royster
Julie Stenseth
Jeanfrancois Venere
Murillo Malet
IdCountryDate
1000Canada2026-04-14
1001Japan2026-04-18
1002Russia2026-04-27
1003Russia2026-04-13
1004Italy2026-04-16
1005Canada2026-04-22
1006Australia2026-04-08
1007Australia2026-04-16
1008Argentina2026-04-26
1009Japan2026-04-14
1010Germany2026-04-18
1011Japan2026-04-16
1012Germany2026-04-21
1013Brazil2026-04-15
1014Italy2026-04-17
1015Russia2026-04-06
1016Russia2026-04-28
1017Spain2026-04-06
1018Japan2026-04-14
1019Argentina2026-04-21
1020Brazil2026-04-13
1021United Kingdom2026-04-15
1022Spain2026-04-20
1023United Kingdom2026-04-24
1024Russia2026-04-03
1025Argentina2026-04-16
1026Canada2026-04-10
1027Australia2026-04-26
1028Argentina2026-04-27
1029Japan2026-04-17
1030Italy2026-04-16
1031Spain2026-04-23
1032Germany2026-03-31
1033Australia2026-04-16
1034India2026-04-19
1035Canada2026-03-31
1036India2026-04-28
1037Canada2026-04-27
1038Russia2026-03-31
1039Italy2026-04-28
1040Russia2026-04-23
1041France2026-04-03
1042Brazil2026-04-01
1043Japan2026-04-13
1044Brazil2026-04-29
1045Russia2026-04-20
1046Argentina2026-04-26
1047Australia2026-04-16
1048Japan2026-04-27
1049France2026-04-08

On-Demand Data

NameIdCountryDate
Antonio Caudy1000Germany2026-04-18
Arvin Albares1001Argentina2026-04-14
Jennifer Amigon1002Russia2026-04-26
Ashley Doe1003Germany2026-04-08
Ashley Doe1004Australia2026-04-27
Claire Tollner1005Brazil2026-04-11
Mayumi Kolmetz1006Spain2026-04-08
Clifford Rim1007France2026-04-07
Mayumi Kolmetz1008Argentina2026-04-24
Aditya Kusko1009Australia2026-04-26
Kadeem Flosi1010Italy2026-04-10
Darci Poquette1011Russia2026-04-03
Tony Foller1012Russia2026-04-03
Emily Whobrey1013India2026-04-08
Arvin Albares1014United Kingdom2026-04-08
Kadeem Flosi1015Australia2026-04-09
Misaki Royster1016Spain2026-04-09
Maisha Rulapaugh1017Japan2026-04-28
Antonio Caudy1018Italy2026-04-15
Salvatore Stockham1019France2026-04-14
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jefferson SchemmerCanadaElwin Sharvill QUALIFIED
James ButtArgentinaBernardo Dominic NEW
Leon OldroydRussiaOnyama Limba PROPOSAL
David DarakjyUnited KingdomIvan Magalhaes NEW
Jeanfrancois VenereUnited KingdomAmy Elsner UNQUALIFIED
Claire TollnerArgentinaIvan Magalhaes RENEWAL
Jones VocelkaUnited KingdomBernardo Dominic NEGOTIATION
Julie StensethBrazilAsiya Javayant RENEWAL
Faith GillianBrazilOnyama Limba UNQUALIFIED
Izzy GarufiFranceStephen Shaw NEW
Antonio CaudyJapanIoni Bowcher PROPOSAL
Jones VocelkaJapanElwin Sharvill RENEWAL
Adams MorascaFranceAnna Fali PROPOSAL
Claire TollnerCanadaIoni Bowcher PROPOSAL
Smith GlickIndiaIvan Magalhaes PROPOSAL
Tony FollerSpainAsiya Javayant PROPOSAL
Isabel BowleySpainBernardo Dominic NEW
Murillo MaletGermanyAnna Fali NEW
Silvio SlusarskiJapanStephen Shaw PROPOSAL
Salvatore StockhamSpainAmy Elsner PROPOSAL
Mayumi KolmetzItalyElwin Sharvill UNQUALIFIED
Izzy GarufiJapanIvan Magalhaes UNQUALIFIED
Aruna FigeroaSpainBernardo Dominic RENEWAL
Costa DilliardRussiaElwin Sharvill NEGOTIATION
Sinclair WaycottFranceOnyama Limba UNQUALIFIED
Sinclair WaycottJapanStephen Shaw QUALIFIED
Stacey MacleadFranceAnna Fali RENEWAL
Claire TollnerIndiaAnna Fali UNQUALIFIED
Ricardo GauchoIndiaAnna Fali RENEWAL
David DarakjyBrazilBernardo Dominic NEGOTIATION
Stacey MacleadSpainIoni Bowcher RENEWAL
Smith GlickAustraliaOnyama Limba PROPOSAL
Ivar PaprockiItalyAmy Elsner QUALIFIED
Jeanfrancois VenereFranceOnyama Limba NEW
Costa DilliardSpainIoni Bowcher PROPOSAL
Jefferson SchemmerFranceElwin Sharvill NEW
Clifford RimAustraliaAmy Elsner UNQUALIFIED
Jennifer AmigonJapanAnna Fali NEW
Darci PoquetteArgentinaAsiya Javayant QUALIFIED
Nicolas IturbideUnited KingdomIvan Magalhaes 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>