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
Nicolas IturbideJapanAsiya Javayant UNQUALIFIED
Arvin AlbaresCanadaBernardo Dominic UNQUALIFIED
Wickens NestleJapanStephen Shaw QUALIFIED
Octavia MaletUnited KingdomOnyama Limba RENEWAL
Isabel BowleyUnited KingdomAnna Fali UNQUALIFIED
Jeanfrancois VenereUnited KingdomOnyama Limba UNQUALIFIED
Murillo MaletFranceBernardo Dominic NEW
Julie StensethRussiaIvan Magalhaes NEGOTIATION
Octavia MaletSpainStephen Shaw QUALIFIED
Ivar PaprockiCanadaAnna Fali UNQUALIFIED
Antonio CaudyBrazilStephen Shaw RENEWAL
Ashley DoeFranceXuxue Feng RENEWAL
Costa DilliardGermanyAmy Elsner QUALIFIED
Misaki RoysterArgentinaOnyama Limba QUALIFIED
Mayumi KolmetzJapanAnna Fali QUALIFIED
Kaitlin OstroskyRussiaAsiya Javayant QUALIFIED
Arvin AlbaresCanadaBernardo Dominic UNQUALIFIED
Juan WieserBrazilOnyama Limba NEW
James ButtCanadaAnna Fali NEGOTIATION
Julie StensethIndiaIoni Bowcher RENEWAL
Rodrigues CampainRussiaXuxue Feng PROPOSAL
Ivar PaprockiUnited KingdomIoni Bowcher NEGOTIATION
Misaki RoysterFranceAsiya Javayant NEW
Aika InouyeCanadaIvan Magalhaes NEW
Nicolas IturbideCanadaElwin Sharvill PROPOSAL
Johnson SergiBrazilOnyama Limba NEGOTIATION
Aika InouyeRussiaOnyama Limba PROPOSAL
Aika InouyeAustraliaBernardo Dominic QUALIFIED
Maisha RulapaughRussiaStephen Shaw PROPOSAL
Misaki RoysterAustraliaXuxue Feng UNQUALIFIED
Aruna FigeroaJapanElwin Sharvill RENEWAL
Costa DilliardAustraliaIoni Bowcher PROPOSAL
Juan WieserFranceAmy Elsner UNQUALIFIED
Ivar PaprockiBrazilAsiya Javayant PROPOSAL
Salvatore StockhamArgentinaAsiya Javayant PROPOSAL
Jeanfrancois VenereArgentinaOnyama Limba UNQUALIFIED
Arvin AlbaresCanadaOnyama Limba QUALIFIED
Jeanfrancois VenereIndiaAmy Elsner QUALIFIED
Aditya KuskoFranceXuxue Feng QUALIFIED
Ivar PaprockiRussiaIvan Magalhaes RENEWAL
Aruna FigeroaArgentinaAmy Elsner PROPOSAL
Munro FerenczGermanyIoni Bowcher QUALIFIED
Costa DilliardUnited KingdomXuxue Feng PROPOSAL
Emily WhobreySpainElwin Sharvill QUALIFIED
Clifford RimUnited KingdomAmy Elsner QUALIFIED
Chavez BriddickArgentinaAmy Elsner PROPOSAL
Darci PoquetteRussiaIvan Magalhaes UNQUALIFIED
Octavia MaletAustraliaIvan Magalhaes QUALIFIED
Cody SaylorsFranceElwin Sharvill PROPOSAL
Greenwood BologniaRussiaElwin Sharvill RENEWAL
Horizontal
NameCountryRepresentativeStatus
Deepesh ChuiRussiaIoni Bowcher RENEWAL
Aika InouyeGermanyAnna Fali NEGOTIATION
Julie StensethFranceAsiya Javayant NEW
Sinclair WaycottBrazilIvan Magalhaes UNQUALIFIED
Salvatore StockhamRussiaElwin Sharvill NEGOTIATION
Cody SaylorsGermanyOnyama Limba RENEWAL
Wickens NestleCanadaBernardo Dominic PROPOSAL
Smith GlickJapanXuxue Feng NEW
Claire TollnerArgentinaAnna Fali NEW
Chavez BriddickItalyIoni Bowcher RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Julie StensethSpain2026-05-12Dorl, James J Esq RENEWAL13Elwin Sharvill
1001Clifford RimGermany2026-04-17Chemel, James L Cpa QUALIFIED14Elwin Sharvill
1002Silvio SlusarskiIndia2026-04-19Chemel, James L Cpa QUALIFIED73Amy Elsner
1003Octavia MaletItaly2026-05-08Buckley Miller Wright RENEWAL17Bernardo Dominic
1004Rodrigues CampainCanada2026-04-20Chanay, Jeffrey A Esq RENEWAL60Elwin Sharvill
1005Johnson SergiAustralia2026-05-12Chemel, James L Cpa NEW35Ioni Bowcher
1006Morrow RutaFrance2026-04-19King, Christopher A Esq PROPOSAL68Bernardo Dominic
1007Tony FollerGermany2026-04-27Rousseaux, Michael Esq PROPOSAL9Amy Elsner
1008Jeanfrancois VenereItaly2026-05-01Printing Dimensions RENEWAL7Elwin Sharvill
1009Emily WhobreyRussia2026-04-15Dorl, James J Esq NEGOTIATION39Onyama Limba
1010Salvatore StockhamJapan2026-05-10Chanay, Jeffrey A Esq QUALIFIED24Ioni Bowcher
1011Juan WieserFrance2026-04-18Benton, John B Jr NEGOTIATION77Bernardo Dominic
1012Wickens NestleSpain2026-04-27King, Christopher A Esq UNQUALIFIED54Amy Elsner
1013Jennifer AmigonCanada2026-04-27Commercial Press UNQUALIFIED98Stephen Shaw
1014Leon OldroydIndia2026-04-25Commercial Press PROPOSAL72Onyama Limba
1015Arvin AlbaresIndia2026-05-01King, Christopher A Esq NEW92Onyama Limba
1016Jefferson SchemmerAustralia2026-04-30Commercial Press UNQUALIFIED77Bernardo Dominic
1017Emily WhobreyArgentina2026-05-05Feiner Bros NEGOTIATION96Amy Elsner
1018Leja CaldareraArgentina2026-04-27Morlong Associates UNQUALIFIED86Stephen Shaw
1019Chavez BriddickItaly2026-05-11Benton, John B Jr UNQUALIFIED47Xuxue Feng
1020Adams MorascaBrazil2026-04-22Benton, John B Jr PROPOSAL56Asiya Javayant
1021Morrow RutaItaly2026-05-08Chanay, Jeffrey A Esq NEGOTIATION81Stephen Shaw
1022Izzy GarufiIndia2026-05-06Buckley Miller Wright NEGOTIATION46Stephen Shaw
1023Adams MorascaAustralia2026-04-15Printing Dimensions RENEWAL78Asiya Javayant
1024Aditya KuskoUnited Kingdom2026-04-25Benton, John B Jr PROPOSAL20Ivan Magalhaes
1025Jefferson SchemmerRussia2026-05-04Rousseaux, Michael Esq RENEWAL69Onyama Limba
1026Faith GillianItaly2026-04-27Morlong Associates NEW59Stephen Shaw
1027Faith GillianBrazil2026-05-05Commercial Press NEW89Bernardo Dominic
1028Octavia MaletGermany2026-05-11Dorl, James J Esq UNQUALIFIED39Ioni Bowcher
1029Wickens NestleUnited Kingdom2026-04-25Dorl, James J Esq NEGOTIATION22Amy Elsner
1030Nicolas IturbideSpain2026-04-24Benton, John B Jr NEGOTIATION39Bernardo Dominic
1031Maria MarrierJapan2026-04-18Feltz Printing Service RENEWAL76Ioni Bowcher
1032Jefferson SchemmerIndia2026-04-13Rousseaux, Michael Esq NEGOTIATION92Bernardo Dominic
1033Aika InouyeBrazil2026-05-02Buckley Miller Wright RENEWAL92Stephen Shaw
1034Jefferson SchemmerAustralia2026-04-18Feiner Bros PROPOSAL92Asiya Javayant
1035Jeanfrancois VenereIndia2026-05-10Feiner Bros QUALIFIED25Onyama Limba
1036Izzy GarufiBrazil2026-04-21Printing Dimensions NEW76Amy Elsner
1037Jennifer AmigonCanada2026-04-24Feiner Bros RENEWAL88Anna Fali
1038Ricardo GauchoArgentina2026-05-02Rousseaux, Michael Esq NEGOTIATION50Bernardo Dominic
1039Rodrigues CampainUnited Kingdom2026-04-25Feltz Printing Service PROPOSAL49Ioni Bowcher
1040Emily WhobreyArgentina2026-04-30Rousseaux, Michael Esq UNQUALIFIED24Ioni Bowcher
1041David DarakjyGermany2026-04-18Chemel, James L Cpa QUALIFIED77Xuxue Feng
1042Ivar PaprockiBrazil2026-05-10Printing Dimensions NEGOTIATION24Ivan Magalhaes
1043David DarakjyUnited Kingdom2026-05-12Rousseaux, Michael Esq QUALIFIED81Ivan Magalhaes
1044Claire TollnerSpain2026-05-04Printing Dimensions RENEWAL59Asiya Javayant
1045Leon OldroydJapan2026-05-05Truhlar And Truhlar Attys QUALIFIED15Elwin Sharvill
1046Francesco ShinkoArgentina2026-05-11Printing Dimensions NEGOTIATION88Amy Elsner
1047James ButtBrazil2026-04-15Feiner Bros QUALIFIED75Anna Fali
1048Aruna FigeroaIndia2026-05-06Rousseaux, Michael Esq RENEWAL64Anna Fali
1049Nicolas IturbideUnited Kingdom2026-04-23King, Christopher A Esq NEGOTIATION79Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Izzy GarufiIndiaBernardo Dominic PROPOSAL
Alejandro PerinBrazilBernardo Dominic QUALIFIED
Darci PoquetteUnited KingdomStephen Shaw NEGOTIATION
Aika InouyeUnited KingdomOnyama Limba PROPOSAL
Greenwood BologniaSpainIvan Magalhaes QUALIFIED
Arvin AlbaresCanadaXuxue Feng PROPOSAL
Ivar PaprockiItalyAsiya Javayant NEW
Aditya KuskoAustraliaBernardo Dominic NEGOTIATION
Silvio SlusarskiJapanStephen Shaw RENEWAL
Sinclair WaycottUnited KingdomAmy Elsner RENEWAL
Jennifer AmigonJapanStephen Shaw PROPOSAL
Darci PoquetteItalyAmy Elsner PROPOSAL
Clifford RimSpainBernardo Dominic UNQUALIFIED
Antonio CaudyItalyAmy Elsner PROPOSAL
Tony FollerIndiaOnyama Limba PROPOSAL
James ButtSpainIvan Magalhaes UNQUALIFIED
Ivar PaprockiCanadaIvan Magalhaes UNQUALIFIED
Costa DilliardGermanyIvan Magalhaes NEGOTIATION
Juan WieserArgentinaIvan Magalhaes PROPOSAL
Mujtaba NickaAustraliaAnna Fali NEW
Mayumi KolmetzGermanyElwin Sharvill QUALIFIED
Adams MorascaIndiaIoni Bowcher UNQUALIFIED
Aditya KuskoAustraliaIoni Bowcher RENEWAL
Nicolas IturbideJapanIoni Bowcher NEGOTIATION
Julie StensethBrazilOnyama Limba PROPOSAL
Arvin AlbaresJapanStephen Shaw NEGOTIATION
Misaki RoysterItalyElwin Sharvill NEGOTIATION
Salvatore StockhamUnited KingdomOnyama Limba UNQUALIFIED
Claire TollnerBrazilAmy Elsner NEGOTIATION
Salvatore StockhamRussiaElwin Sharvill UNQUALIFIED
Arvin AlbaresItalyIoni Bowcher NEW
Greenwood BologniaBrazilBernardo Dominic NEW
Adams MorascaUnited KingdomAsiya Javayant NEGOTIATION
Sinclair WaycottIndiaAnna Fali RENEWAL
Ricardo GauchoArgentinaIvan Magalhaes PROPOSAL
Darci PoquetteFranceStephen Shaw PROPOSAL
Rodrigues CampainIndiaIvan Magalhaes UNQUALIFIED
Rodrigues CampainItalyStephen Shaw NEGOTIATION
Silvio SlusarskiBrazilIvan Magalhaes PROPOSAL
Johnson SergiJapanXuxue Feng NEW
Salvatore StockhamJapanBernardo Dominic NEW
Jeanfrancois VenereGermanyElwin Sharvill RENEWAL
Cody SaylorsGermanyStephen Shaw PROPOSAL
Misaki RoysterBrazilBernardo Dominic UNQUALIFIED
Mayumi KolmetzJapanBernardo Dominic PROPOSAL
Wickens NestleFranceAsiya Javayant UNQUALIFIED
Murillo MaletAustraliaBernardo Dominic NEGOTIATION
Antonio CaudyBrazilStephen Shaw NEW
Costa DilliardFranceAsiya Javayant UNQUALIFIED
Stacey MacleadUnited KingdomIvan Magalhaes PROPOSAL
Frozen Columns
Name
Nicolas Iturbide
Munro Ferencz
Aruna Figeroa
Aruna Figeroa
Silvio Slusarski
Ivar Paprocki
Nicolas Iturbide
Adams Morasca
James Butt
Aika Inouye
Tony Foller
Maisha Rulapaugh
Salvatore Stockham
Maisha Rulapaugh
Julie Stenseth
Aditya Kusko
Rodrigues Campain
Emily Whobrey
Jennifer Amigon
Cody Saylors
Wickens Nestle
Tony Foller
Aditya Kusko
Misaki Royster
Rodrigues Campain
Jeanfrancois Venere
Mayumi Kolmetz
Sinclair Waycott
Jones Vocelka
Greenwood Bolognia
Arvin Albares
Leon Oldroyd
Cody Saylors
Salvatore Stockham
Tony Foller
Ivar Paprocki
Sinclair Waycott
Wickens Nestle
Silvio Slusarski
Julie Stenseth
Cody Saylors
Munro Ferencz
Julie Stenseth
Wickens Nestle
Tony Foller
Adams Morasca
Izzy Garufi
Tony Foller
Tony Foller
Ashley Doe
IdCountryDate
1000Russia2026-05-02
1001India2026-04-17
1002United Kingdom2026-05-11
1003Canada2026-05-02
1004France2026-04-18
1005Japan2026-04-24
1006Japan2026-05-10
1007Canada2026-04-18
1008Australia2026-05-07
1009India2026-05-02
1010Australia2026-04-14
1011India2026-05-04
1012Canada2026-04-18
1013Spain2026-05-04
1014France2026-05-03
1015Spain2026-04-14
1016United Kingdom2026-05-08
1017Russia2026-04-30
1018Spain2026-04-17
1019France2026-05-09
1020Spain2026-04-20
1021Germany2026-05-02
1022Japan2026-04-24
1023Australia2026-04-23
1024Spain2026-04-27
1025France2026-05-07
1026France2026-04-22
1027France2026-04-19
1028Germany2026-05-02
1029Argentina2026-05-10
1030India2026-04-17
1031France2026-05-06
1032Russia2026-05-10
1033Italy2026-05-05
1034Japan2026-04-17
1035Brazil2026-05-08
1036France2026-04-21
1037Argentina2026-04-20
1038France2026-04-17
1039Germany2026-04-29
1040France2026-04-21
1041Canada2026-05-05
1042United Kingdom2026-04-25
1043United Kingdom2026-04-17
1044Australia2026-05-10
1045France2026-04-22
1046Spain2026-05-09
1047Germany2026-05-12
1048Italy2026-04-25
1049United Kingdom2026-04-26

On-Demand Data

NameIdCountryDate
Tony Foller1000Germany2026-04-29
Maria Marrier1001Spain2026-04-27
Smith Glick1002Russia2026-04-13
Jennifer Amigon1003India2026-04-30
Maisha Rulapaugh1004Germany2026-05-04
Sinclair Waycott1005France2026-05-06
Munro Ferencz1006United Kingdom2026-04-26
Ashley Doe1007Canada2026-04-24
Emily Whobrey1008Germany2026-05-12
Kadeem Flosi1009India2026-05-05
Ricardo Gaucho1010Spain2026-05-07
Maisha Rulapaugh1011France2026-04-23
Ashley Doe1012India2026-05-06
Murillo Malet1013Spain2026-04-30
Sinclair Waycott1014Italy2026-04-13
Francesco Shinko1015Argentina2026-05-03
Chavez Briddick1016Canada2026-04-23
Aditya Kusko1017India2026-05-09
Leja Caldarera1018Germany2026-04-26
Arvin Albares1019Italy2026-04-16
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jones VocelkaCanadaOnyama Limba RENEWAL
Johnson SergiUnited KingdomBernardo Dominic RENEWAL
Antonio CaudySpainElwin Sharvill UNQUALIFIED
Nicolas IturbideAustraliaAnna Fali PROPOSAL
Arvin AlbaresRussiaAmy Elsner UNQUALIFIED
Clifford RimAustraliaStephen Shaw RENEWAL
Adams MorascaIndiaOnyama Limba PROPOSAL
Johnson SergiGermanyAsiya Javayant UNQUALIFIED
Isabel BowleyJapanAmy Elsner RENEWAL
Leon OldroydCanadaElwin Sharvill RENEWAL
Julie StensethAustraliaXuxue Feng RENEWAL
Deepesh ChuiArgentinaStephen Shaw NEW
Morrow RutaArgentinaOnyama Limba UNQUALIFIED
Mayumi KolmetzItalyOnyama Limba QUALIFIED
Jennifer AmigonIndiaAsiya Javayant NEGOTIATION
Maisha RulapaughItalyIoni Bowcher NEGOTIATION
Arvin AlbaresBrazilIvan Magalhaes NEW
Octavia MaletFranceBernardo Dominic NEW
Leon OldroydUnited KingdomAnna Fali NEW
Munro FerenczUnited KingdomStephen Shaw RENEWAL
Murillo MaletArgentinaElwin Sharvill NEW
Aruna FigeroaFranceBernardo Dominic NEGOTIATION
Adams MorascaUnited KingdomAmy Elsner UNQUALIFIED
Arvin AlbaresCanadaIvan Magalhaes NEGOTIATION
Deepesh ChuiSpainXuxue Feng UNQUALIFIED
James ButtArgentinaBernardo Dominic NEW
Isabel BowleyAustraliaElwin Sharvill UNQUALIFIED
Claire TollnerRussiaAmy Elsner RENEWAL
Antonio CaudyCanadaElwin Sharvill UNQUALIFIED
Leon OldroydRussiaStephen Shaw NEW
Jennifer AmigonArgentinaIvan Magalhaes QUALIFIED
Ricardo GauchoArgentinaIoni Bowcher UNQUALIFIED
Aika InouyeFranceXuxue Feng NEW
Nicolas IturbideAustraliaXuxue Feng NEGOTIATION
Mujtaba NickaArgentinaStephen Shaw UNQUALIFIED
Antonio CaudyCanadaElwin Sharvill PROPOSAL
Greenwood BologniaSpainOnyama Limba NEGOTIATION
Chavez BriddickCanadaAmy Elsner RENEWAL
Deepesh ChuiArgentinaIvan Magalhaes NEGOTIATION
Misaki RoysterSpainAmy Elsner UNQUALIFIED

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