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
Mujtaba NickaGermanyStephen Shaw NEGOTIATION
Rodrigues CampainUnited KingdomElwin Sharvill PROPOSAL
Greenwood BologniaJapanBernardo Dominic NEGOTIATION
Salvatore StockhamItalyAsiya Javayant NEW
Izzy GarufiArgentinaAmy Elsner RENEWAL
Leon OldroydItalyStephen Shaw NEGOTIATION
Sinclair WaycottSpainIvan Magalhaes QUALIFIED
Costa DilliardCanadaOnyama Limba NEGOTIATION
Smith GlickJapanAsiya Javayant QUALIFIED
Stacey MacleadCanadaStephen Shaw NEGOTIATION
Isabel BowleyIndiaElwin Sharvill UNQUALIFIED
Jones VocelkaRussiaAmy Elsner UNQUALIFIED
Rodrigues CampainRussiaIoni Bowcher NEGOTIATION
Chavez BriddickJapanIvan Magalhaes RENEWAL
Isabel BowleyArgentinaAnna Fali PROPOSAL
Darci PoquetteAustraliaElwin Sharvill NEGOTIATION
Chavez BriddickFranceOnyama Limba QUALIFIED
Adams MorascaItalyBernardo Dominic NEGOTIATION
Silvio SlusarskiItalyIoni Bowcher NEGOTIATION
Clifford RimArgentinaBernardo Dominic NEW
Faith GillianArgentinaIoni Bowcher NEGOTIATION
Leja CaldareraAustraliaBernardo Dominic NEGOTIATION
Aruna FigeroaItalyBernardo Dominic UNQUALIFIED
Costa DilliardArgentinaAmy Elsner PROPOSAL
Maria MarrierUnited KingdomIoni Bowcher RENEWAL
Sinclair WaycottUnited KingdomAnna Fali UNQUALIFIED
Greenwood BologniaUnited KingdomElwin Sharvill RENEWAL
Maisha RulapaughIndiaAmy Elsner UNQUALIFIED
Adams MorascaRussiaBernardo Dominic NEGOTIATION
Wickens NestleItalyXuxue Feng PROPOSAL
James ButtSpainIoni Bowcher PROPOSAL
Ivar PaprockiBrazilIvan Magalhaes QUALIFIED
Antonio CaudyArgentinaIoni Bowcher UNQUALIFIED
Jefferson SchemmerFranceAmy Elsner QUALIFIED
Octavia MaletSpainIoni Bowcher PROPOSAL
Alejandro PerinUnited KingdomAsiya Javayant NEGOTIATION
Wickens NestleBrazilXuxue Feng PROPOSAL
Greenwood BologniaRussiaAnna Fali NEGOTIATION
Wickens NestleItalyAsiya Javayant QUALIFIED
Arvin AlbaresBrazilIvan Magalhaes PROPOSAL
Emily WhobreyArgentinaIvan Magalhaes UNQUALIFIED
Ashley DoeSpainBernardo Dominic QUALIFIED
Emily WhobreyUnited KingdomStephen Shaw NEW
Greenwood BologniaFranceAmy Elsner UNQUALIFIED
Murillo MaletItalyAnna Fali NEGOTIATION
Costa DilliardJapanIvan Magalhaes NEGOTIATION
Emily WhobreyIndiaStephen Shaw NEGOTIATION
Smith GlickItalyOnyama Limba QUALIFIED
Mayumi KolmetzBrazilAmy Elsner UNQUALIFIED
Antonio CaudyJapanIoni Bowcher NEW
Horizontal
NameCountryRepresentativeStatus
Smith GlickGermanyElwin Sharvill RENEWAL
Tony FollerSpainStephen Shaw NEW
Maria MarrierJapanBernardo Dominic NEGOTIATION
Maria MarrierCanadaIoni Bowcher UNQUALIFIED
Octavia MaletFranceIvan Magalhaes UNQUALIFIED
Sinclair WaycottFranceAsiya Javayant NEW
Rodrigues CampainIndiaIvan Magalhaes NEW
Misaki RoysterCanadaBernardo Dominic NEGOTIATION
Mujtaba NickaItalyAnna Fali UNQUALIFIED
Arvin AlbaresBrazilBernardo Dominic QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Emily WhobreyGermany2026-05-21Benton, John B Jr QUALIFIED35Ioni Bowcher
1001Faith GillianBrazil2026-05-11Rangoni Of Florence RENEWAL99Xuxue Feng
1002Smith GlickAustralia2026-05-10Feltz Printing Service NEW12Amy Elsner
1003Salvatore StockhamBrazil2026-05-22Feltz Printing Service UNQUALIFIED96Bernardo Dominic
1004Jennifer AmigonIndia2026-05-14Truhlar And Truhlar Attys PROPOSAL74Anna Fali
1005Emily WhobreyRussia2026-05-05Chapman, Ross E Esq QUALIFIED11Onyama Limba
1006Clifford RimCanada2026-05-07Morlong Associates NEW70Ivan Magalhaes
1007Julie StensethFrance2026-05-24Feltz Printing Service PROPOSAL36Amy Elsner
1008Izzy GarufiUnited Kingdom2026-05-31Feltz Printing Service PROPOSAL54Xuxue Feng
1009Alejandro PerinFrance2026-05-11Benton, John B Jr QUALIFIED99Anna Fali
1010Julie StensethSpain2026-05-22Truhlar And Truhlar Attys QUALIFIED23Onyama Limba
1011Ricardo GauchoBrazil2026-05-29Rousseaux, Michael Esq PROPOSAL36Ivan Magalhaes
1012Faith GillianRussia2026-05-28King, Christopher A Esq UNQUALIFIED46Stephen Shaw
1013Tony FollerCanada2026-05-09Morlong Associates UNQUALIFIED35Asiya Javayant
1014Clifford RimIndia2026-05-19Rousseaux, Michael Esq RENEWAL63Elwin Sharvill
1015Cody SaylorsAustralia2026-05-02Chapman, Ross E Esq NEGOTIATION32Asiya Javayant
1016Smith GlickItaly2026-05-28Printing Dimensions UNQUALIFIED29Onyama Limba
1017Wickens NestleJapan2026-05-11Feiner Bros QUALIFIED40Asiya Javayant
1018Kadeem FlosiAustralia2026-05-17Commercial Press NEGOTIATION65Xuxue Feng
1019Murillo MaletAustralia2026-05-12Dorl, James J Esq UNQUALIFIED55Anna Fali
1020Cody SaylorsAustralia2026-05-05Commercial Press UNQUALIFIED40Anna Fali
1021Rodrigues CampainUnited Kingdom2026-05-28Feltz Printing Service NEW99Ivan Magalhaes
1022Juan WieserArgentina2026-05-06Feiner Bros NEGOTIATION70Bernardo Dominic
1023Jennifer AmigonItaly2026-05-13Benton, John B Jr RENEWAL91Bernardo Dominic
1024Munro FerenczJapan2026-05-10King, Christopher A Esq RENEWAL49Onyama Limba
1025Chavez BriddickFrance2026-05-17Chemel, James L Cpa UNQUALIFIED72Anna Fali
1026Jones VocelkaUnited Kingdom2026-05-11Chapman, Ross E Esq PROPOSAL70Elwin Sharvill
1027Julie StensethRussia2026-05-16Chanay, Jeffrey A Esq UNQUALIFIED49Asiya Javayant
1028Nicolas IturbideItaly2026-05-24Dorl, James J Esq QUALIFIED34Onyama Limba
1029Kadeem FlosiArgentina2026-05-31Rangoni Of Florence NEW97Asiya Javayant
1030Ivar PaprockiRussia2026-05-02Truhlar And Truhlar Attys PROPOSAL98Xuxue Feng
1031Izzy GarufiUnited Kingdom2026-05-22Truhlar And Truhlar Attys NEGOTIATION94Onyama Limba
1032Maria MarrierArgentina2026-05-23Truhlar And Truhlar Attys UNQUALIFIED93Stephen Shaw
1033Munro FerenczIndia2026-05-29Feiner Bros UNQUALIFIED97Ivan Magalhaes
1034Octavia MaletBrazil2026-05-10Rangoni Of Florence NEW55Ioni Bowcher
1035Aruna FigeroaCanada2026-05-02Chanay, Jeffrey A Esq NEGOTIATION74Onyama Limba
1036Isabel BowleyIndia2026-05-24Feltz Printing Service NEW1Ioni Bowcher
1037Misaki RoysterFrance2026-05-18Dorl, James J Esq QUALIFIED56Xuxue Feng
1038Chavez BriddickSpain2026-05-16Truhlar And Truhlar Attys NEGOTIATION78Ivan Magalhaes
1039Nicolas IturbideUnited Kingdom2026-05-11Truhlar And Truhlar Attys PROPOSAL49Xuxue Feng
1040Aruna FigeroaCanada2026-05-22Dorl, James J Esq UNQUALIFIED84Xuxue Feng
1041Deepesh ChuiBrazil2026-05-05Feltz Printing Service UNQUALIFIED50Anna Fali
1042Aika InouyeFrance2026-05-13Chanay, Jeffrey A Esq NEGOTIATION40Stephen Shaw
1043Johnson SergiUnited Kingdom2026-05-07Morlong Associates UNQUALIFIED79Stephen Shaw
1044Costa DilliardGermany2026-05-03Feltz Printing Service UNQUALIFIED76Onyama Limba
1045Emily WhobreyRussia2026-05-04Buckley Miller Wright QUALIFIED64Ivan Magalhaes
1046Morrow RutaSpain2026-05-22Buckley Miller Wright QUALIFIED74Xuxue Feng
1047Aditya KuskoJapan2026-05-07Commercial Press NEW95Anna Fali
1048Leja CaldareraArgentina2026-05-18Buckley Miller Wright PROPOSAL79Anna Fali
1049Deepesh ChuiFrance2026-05-13Truhlar And Truhlar Attys RENEWAL97Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Munro FerenczBrazilIvan Magalhaes NEW
Misaki RoysterUnited KingdomOnyama Limba UNQUALIFIED
Jefferson SchemmerGermanyOnyama Limba NEGOTIATION
Costa DilliardGermanyIvan Magalhaes UNQUALIFIED
Emily WhobreyUnited KingdomElwin Sharvill NEW
Jones VocelkaFranceAsiya Javayant QUALIFIED
Murillo MaletUnited KingdomIvan Magalhaes PROPOSAL
Antonio CaudyAustraliaIoni Bowcher PROPOSAL
Darci PoquetteBrazilIoni Bowcher RENEWAL
Octavia MaletAustraliaOnyama Limba PROPOSAL
Salvatore StockhamBrazilAmy Elsner RENEWAL
Aruna FigeroaFranceOnyama Limba NEW
Tony FollerRussiaOnyama Limba UNQUALIFIED
Juan WieserFranceAmy Elsner UNQUALIFIED
Wickens NestleCanadaIoni Bowcher NEW
Francesco ShinkoBrazilIvan Magalhaes QUALIFIED
Munro FerenczFranceIoni Bowcher NEGOTIATION
Morrow RutaSpainOnyama Limba NEGOTIATION
Rodrigues CampainGermanyAsiya Javayant UNQUALIFIED
Adams MorascaItalyAmy Elsner PROPOSAL
Antonio CaudyItalyBernardo Dominic NEGOTIATION
Maria MarrierSpainBernardo Dominic PROPOSAL
Stacey MacleadIndiaAsiya Javayant NEGOTIATION
James ButtCanadaXuxue Feng PROPOSAL
Darci PoquetteJapanStephen Shaw NEW
Faith GillianIndiaStephen Shaw RENEWAL
Ricardo GauchoBrazilIoni Bowcher PROPOSAL
Wickens NestleAustraliaAsiya Javayant RENEWAL
Aika InouyeBrazilIvan Magalhaes RENEWAL
Julie StensethRussiaAsiya Javayant PROPOSAL
Wickens NestleIndiaIvan Magalhaes PROPOSAL
Stacey MacleadCanadaStephen Shaw NEGOTIATION
Smith GlickCanadaXuxue Feng UNQUALIFIED
Juan WieserIndiaStephen Shaw NEGOTIATION
Costa DilliardSpainBernardo Dominic RENEWAL
Misaki RoysterSpainStephen Shaw NEGOTIATION
Chavez BriddickBrazilAnna Fali NEGOTIATION
Greenwood BologniaCanadaXuxue Feng PROPOSAL
Emily WhobreyItalyAsiya Javayant NEGOTIATION
Chavez BriddickArgentinaOnyama Limba QUALIFIED
Cody SaylorsAustraliaElwin Sharvill UNQUALIFIED
Jefferson SchemmerGermanyAmy Elsner QUALIFIED
Kaitlin OstroskyIndiaIvan Magalhaes QUALIFIED
Jeanfrancois VenereSpainOnyama Limba NEW
Maria MarrierRussiaElwin Sharvill NEW
Munro FerenczRussiaOnyama Limba PROPOSAL
Aditya KuskoJapanElwin Sharvill RENEWAL
James ButtJapanBernardo Dominic UNQUALIFIED
Murillo MaletSpainAsiya Javayant NEGOTIATION
Morrow RutaFranceIoni Bowcher NEW
Frozen Columns
Name
Costa Dilliard
Jennifer Amigon
Murillo Malet
Misaki Royster
Octavia Malet
Ricardo Gaucho
Aruna Figeroa
Mayumi Kolmetz
Cody Saylors
Leon Oldroyd
Francesco Shinko
Julie Stenseth
Morrow Ruta
James Butt
Emily Whobrey
Octavia Malet
Darci Poquette
Darci Poquette
Mayumi Kolmetz
Leja Caldarera
Arvin Albares
Juan Wieser
Morrow Ruta
Emily Whobrey
Costa Dilliard
Chavez Briddick
Maisha Rulapaugh
Clifford Rim
Costa Dilliard
Tony Foller
Maisha Rulapaugh
Smith Glick
David Darakjy
Juan Wieser
Munro Ferencz
Clifford Rim
David Darakjy
Arvin Albares
Jones Vocelka
Julie Stenseth
Jennifer Amigon
Munro Ferencz
Ashley Doe
Chavez Briddick
Mujtaba Nicka
Leon Oldroyd
Adams Morasca
Jefferson Schemmer
Jeanfrancois Venere
Mujtaba Nicka
IdCountryDate
1000United Kingdom2026-05-24
1001Brazil2026-05-09
1002Argentina2026-05-31
1003France2026-05-30
1004Brazil2026-05-22
1005Canada2026-05-12
1006Spain2026-05-18
1007France2026-05-23
1008Russia2026-05-08
1009Australia2026-05-19
1010India2026-05-20
1011Brazil2026-05-19
1012Germany2026-05-07
1013Brazil2026-05-11
1014United Kingdom2026-05-09
1015Spain2026-05-02
1016India2026-05-06
1017Australia2026-05-19
1018Argentina2026-05-27
1019Germany2026-05-10
1020India2026-05-06
1021Canada2026-05-22
1022Brazil2026-05-24
1023India2026-05-10
1024Australia2026-05-07
1025Argentina2026-05-19
1026Canada2026-05-03
1027Australia2026-05-31
1028Germany2026-05-19
1029Brazil2026-05-02
1030Germany2026-05-18
1031Japan2026-05-07
1032Germany2026-05-27
1033Italy2026-05-17
1034Argentina2026-05-27
1035India2026-05-16
1036Russia2026-05-25
1037Brazil2026-05-10
1038Italy2026-05-18
1039Canada2026-05-29
1040Spain2026-05-24
1041Russia2026-05-02
1042Brazil2026-05-15
1043Brazil2026-05-20
1044Brazil2026-05-03
1045Brazil2026-05-26
1046United Kingdom2026-05-09
1047India2026-05-21
1048Italy2026-05-12
1049Italy2026-05-05

On-Demand Data

NameIdCountryDate
David Darakjy1000Germany2026-05-04
Izzy Garufi1001Russia2026-05-10
Ashley Doe1002Russia2026-05-25
Aruna Figeroa1003Russia2026-05-22
Maisha Rulapaugh1004Argentina2026-05-06
Morrow Ruta1005United Kingdom2026-05-12
Silvio Slusarski1006India2026-05-25
Ricardo Gaucho1007India2026-05-09
David Darakjy1008Japan2026-05-29
Leja Caldarera1009Argentina2026-05-28
Smith Glick1010Canada2026-05-05
Aika Inouye1011Germany2026-05-23
Claire Tollner1012Spain2026-05-11
Octavia Malet1013Spain2026-05-18
Darci Poquette1014Brazil2026-05-03
Murillo Malet1015Brazil2026-05-10
Mayumi Kolmetz1016Australia2026-05-23
Ricardo Gaucho1017Canada2026-05-03
James Butt1018United Kingdom2026-05-30
Misaki Royster1019Canada2026-05-20
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aruna FigeroaIndiaXuxue Feng QUALIFIED
Ashley DoeAustraliaIvan Magalhaes QUALIFIED
Leja CaldareraCanadaBernardo Dominic QUALIFIED
Ivar PaprockiJapanIoni Bowcher RENEWAL
Silvio SlusarskiCanadaOnyama Limba UNQUALIFIED
Stacey MacleadAustraliaAmy Elsner NEGOTIATION
Juan WieserItalyAmy Elsner QUALIFIED
Jones VocelkaJapanOnyama Limba UNQUALIFIED
Ashley DoeBrazilAnna Fali RENEWAL
Leja CaldareraGermanyStephen Shaw QUALIFIED
Alejandro PerinIndiaAnna Fali NEW
Leja CaldareraCanadaIvan Magalhaes QUALIFIED
Aika InouyeGermanyIvan Magalhaes UNQUALIFIED
Sinclair WaycottArgentinaBernardo Dominic RENEWAL
Cody SaylorsBrazilAsiya Javayant UNQUALIFIED
Deepesh ChuiUnited KingdomIvan Magalhaes NEGOTIATION
Aditya KuskoItalyIvan Magalhaes UNQUALIFIED
Kaitlin OstroskyIndiaAmy Elsner NEW
Emily WhobreyGermanyIvan Magalhaes NEW
Murillo MaletCanadaXuxue Feng NEW
Jones VocelkaUnited KingdomOnyama Limba QUALIFIED
Claire TollnerRussiaIoni Bowcher RENEWAL
Stacey MacleadGermanyStephen Shaw PROPOSAL
Ricardo GauchoAustraliaAnna Fali QUALIFIED
Rodrigues CampainArgentinaStephen Shaw PROPOSAL
Misaki RoysterBrazilIvan Magalhaes NEGOTIATION
Greenwood BologniaUnited KingdomIvan Magalhaes QUALIFIED
Jones VocelkaItalyXuxue Feng UNQUALIFIED
Ivar PaprockiUnited KingdomAmy Elsner QUALIFIED
James ButtRussiaIoni Bowcher NEW
Cody SaylorsGermanyXuxue Feng RENEWAL
Julie StensethUnited KingdomOnyama Limba NEW
Costa DilliardSpainBernardo Dominic QUALIFIED
Aditya KuskoRussiaElwin Sharvill NEGOTIATION
Kadeem FlosiUnited KingdomIvan Magalhaes NEW
Ricardo GauchoRussiaAsiya Javayant PROPOSAL
Jennifer AmigonItalyStephen Shaw UNQUALIFIED
Antonio CaudyCanadaBernardo Dominic UNQUALIFIED
Maria MarrierJapanStephen Shaw NEGOTIATION
Julie StensethItalyStephen Shaw 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>