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
Mayumi KolmetzSpainAnna Fali UNQUALIFIED
Rodrigues CampainArgentinaAnna Fali NEW
Cody SaylorsCanadaElwin Sharvill UNQUALIFIED
Aruna FigeroaSpainAnna Fali NEGOTIATION
Jefferson SchemmerSpainAsiya Javayant PROPOSAL
Aditya KuskoIndiaStephen Shaw PROPOSAL
Aruna FigeroaArgentinaBernardo Dominic NEGOTIATION
Chavez BriddickArgentinaIvan Magalhaes UNQUALIFIED
Ashley DoeIndiaAnna Fali UNQUALIFIED
Munro FerenczSpainAmy Elsner PROPOSAL
Aruna FigeroaBrazilIoni Bowcher NEW
Emily WhobreySpainXuxue Feng NEGOTIATION
Faith GillianArgentinaBernardo Dominic RENEWAL
Murillo MaletRussiaIoni Bowcher QUALIFIED
Tony FollerAustraliaStephen Shaw PROPOSAL
Greenwood BologniaCanadaXuxue Feng QUALIFIED
Rodrigues CampainIndiaAmy Elsner QUALIFIED
Rodrigues CampainAustraliaElwin Sharvill NEGOTIATION
Nicolas IturbideCanadaAnna Fali NEW
Isabel BowleySpainOnyama Limba QUALIFIED
Rodrigues CampainGermanyAmy Elsner QUALIFIED
Mujtaba NickaRussiaAsiya Javayant QUALIFIED
Francesco ShinkoFranceStephen Shaw PROPOSAL
Leon OldroydCanadaBernardo Dominic QUALIFIED
Antonio CaudyBrazilIoni Bowcher QUALIFIED
Arvin AlbaresFranceElwin Sharvill NEGOTIATION
David DarakjyCanadaIvan Magalhaes RENEWAL
Silvio SlusarskiJapanStephen Shaw RENEWAL
Darci PoquetteAustraliaAnna Fali NEGOTIATION
Smith GlickSpainXuxue Feng QUALIFIED
Tony FollerCanadaIoni Bowcher PROPOSAL
Juan WieserJapanBernardo Dominic NEGOTIATION
Julie StensethBrazilBernardo Dominic QUALIFIED
Jones VocelkaJapanAsiya Javayant NEW
Arvin AlbaresRussiaAsiya Javayant UNQUALIFIED
Costa DilliardFranceStephen Shaw RENEWAL
Claire TollnerCanadaIvan Magalhaes RENEWAL
Smith GlickFranceIvan Magalhaes QUALIFIED
Arvin AlbaresRussiaIvan Magalhaes NEGOTIATION
Sinclair WaycottSpainBernardo Dominic NEGOTIATION
Leja CaldareraArgentinaAmy Elsner RENEWAL
Jones VocelkaArgentinaOnyama Limba NEW
Wickens NestleSpainAmy Elsner PROPOSAL
Mayumi KolmetzItalyBernardo Dominic QUALIFIED
Juan WieserItalyIoni Bowcher RENEWAL
Salvatore StockhamArgentinaElwin Sharvill RENEWAL
Sinclair WaycottRussiaAsiya Javayant UNQUALIFIED
Nicolas IturbideUnited KingdomBernardo Dominic NEW
Johnson SergiJapanIoni Bowcher NEGOTIATION
Darci PoquetteBrazilOnyama Limba NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Cody SaylorsJapanXuxue Feng NEGOTIATION
Chavez BriddickUnited KingdomElwin Sharvill RENEWAL
Faith GillianRussiaXuxue Feng NEW
Greenwood BologniaIndiaBernardo Dominic NEGOTIATION
James ButtIndiaElwin Sharvill NEGOTIATION
Isabel BowleyIndiaElwin Sharvill NEW
Jefferson SchemmerArgentinaOnyama Limba NEW
Mayumi KolmetzArgentinaAsiya Javayant UNQUALIFIED
Aika InouyeItalyAsiya Javayant PROPOSAL
Ricardo GauchoArgentinaElwin Sharvill RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Francesco ShinkoIndia2026-05-01King, Christopher A Esq UNQUALIFIED97Stephen Shaw
1001David DarakjyGermany2026-04-25Benton, John B Jr QUALIFIED20Stephen Shaw
1002Deepesh ChuiFrance2026-04-17Morlong Associates RENEWAL43Asiya Javayant
1003Juan WieserRussia2026-04-24Chemel, James L Cpa RENEWAL90Elwin Sharvill
1004Faith GillianRussia2026-04-20Chapman, Ross E Esq PROPOSAL68Ivan Magalhaes
1005Claire TollnerItaly2026-04-12Feltz Printing Service PROPOSAL80Asiya Javayant
1006Mayumi KolmetzSpain2026-04-21Chemel, James L Cpa NEW20Amy Elsner
1007Juan WieserArgentina2026-05-02Truhlar And Truhlar Attys NEW59Elwin Sharvill
1008Deepesh ChuiItaly2026-04-27Commercial Press QUALIFIED2Xuxue Feng
1009Misaki RoysterSpain2026-04-09Rousseaux, Michael Esq PROPOSAL91Elwin Sharvill
1010Murillo MaletJapan2026-04-24Truhlar And Truhlar Attys PROPOSAL53Bernardo Dominic
1011Chavez BriddickIndia2026-04-04Rousseaux, Michael Esq NEGOTIATION69Onyama Limba
1012Tony FollerIndia2026-04-10Truhlar And Truhlar Attys NEGOTIATION42Stephen Shaw
1013James ButtItaly2026-04-18Benton, John B Jr UNQUALIFIED52Onyama Limba
1014Johnson SergiUnited Kingdom2026-04-15Feltz Printing Service NEW45Ioni Bowcher
1015Antonio CaudyArgentina2026-04-27Morlong Associates PROPOSAL34Bernardo Dominic
1016Smith GlickFrance2026-04-26Feltz Printing Service UNQUALIFIED27Onyama Limba
1017Silvio SlusarskiUnited Kingdom2026-04-20Benton, John B Jr QUALIFIED8Amy Elsner
1018Ivar PaprockiArgentina2026-04-18Chemel, James L Cpa RENEWAL60Ivan Magalhaes
1019Jones VocelkaSpain2026-04-27Printing Dimensions NEGOTIATION17Ivan Magalhaes
1020Kaitlin OstroskyItaly2026-04-03Chemel, James L Cpa QUALIFIED96Elwin Sharvill
1021Adams MorascaJapan2026-04-27Feltz Printing Service NEGOTIATION22Amy Elsner
1022Nicolas IturbideRussia2026-05-01Benton, John B Jr NEW11Xuxue Feng
1023Morrow RutaSpain2026-04-25Chapman, Ross E Esq QUALIFIED12Bernardo Dominic
1024Adams MorascaUnited Kingdom2026-04-19Buckley Miller Wright NEW79Anna Fali
1025Jeanfrancois VenereArgentina2026-04-26Printing Dimensions RENEWAL53Amy Elsner
1026Faith GillianAustralia2026-04-27Rangoni Of Florence RENEWAL74Amy Elsner
1027Jeanfrancois VenereAustralia2026-05-01Commercial Press RENEWAL33Onyama Limba
1028Jeanfrancois VenereSpain2026-04-19Printing Dimensions PROPOSAL48Asiya Javayant
1029Julie StensethRussia2026-04-22Feltz Printing Service QUALIFIED97Onyama Limba
1030James ButtAustralia2026-04-03Chemel, James L Cpa NEGOTIATION72Ioni Bowcher
1031Deepesh ChuiFrance2026-05-02Chemel, James L Cpa RENEWAL42Elwin Sharvill
1032Deepesh ChuiArgentina2026-04-10Benton, John B Jr UNQUALIFIED27Bernardo Dominic
1033Stacey MacleadFrance2026-04-16Chanay, Jeffrey A Esq NEW63Bernardo Dominic
1034Mujtaba NickaRussia2026-04-26Morlong Associates NEGOTIATION92Stephen Shaw
1035Leon OldroydUnited Kingdom2026-04-07Printing Dimensions RENEWAL59Stephen Shaw
1036Emily WhobreyBrazil2026-04-25Truhlar And Truhlar Attys QUALIFIED58Ivan Magalhaes
1037Francesco ShinkoBrazil2026-04-08King, Christopher A Esq NEW13Ioni Bowcher
1038Sinclair WaycottIndia2026-04-17Rangoni Of Florence RENEWAL63Onyama Limba
1039Jefferson SchemmerGermany2026-04-18Benton, John B Jr QUALIFIED60Asiya Javayant
1040Mujtaba NickaArgentina2026-05-02Chapman, Ross E Esq UNQUALIFIED25Ioni Bowcher
1041Jennifer AmigonIndia2026-04-14Rangoni Of Florence UNQUALIFIED54Amy Elsner
1042Aika InouyeItaly2026-04-27Chanay, Jeffrey A Esq PROPOSAL7Ioni Bowcher
1043Faith GillianUnited Kingdom2026-05-01Rousseaux, Michael Esq RENEWAL81Ioni Bowcher
1044Clifford RimJapan2026-04-28Dorl, James J Esq NEW94Onyama Limba
1045Juan WieserUnited Kingdom2026-04-15Dorl, James J Esq PROPOSAL98Ioni Bowcher
1046Smith GlickBrazil2026-04-21Chapman, Ross E Esq RENEWAL2Elwin Sharvill
1047Salvatore StockhamJapan2026-04-12King, Christopher A Esq RENEWAL92Xuxue Feng
1048Silvio SlusarskiUnited Kingdom2026-04-18Benton, John B Jr NEGOTIATION62Xuxue Feng
1049Maisha RulapaughBrazil2026-04-03Commercial Press NEGOTIATION72Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Maria MarrierSpainAnna Fali UNQUALIFIED
Stacey MacleadAustraliaAmy Elsner QUALIFIED
Jeanfrancois VenereArgentinaStephen Shaw RENEWAL
Mayumi KolmetzItalyElwin Sharvill UNQUALIFIED
Costa DilliardSpainElwin Sharvill PROPOSAL
Salvatore StockhamCanadaStephen Shaw PROPOSAL
Ivar PaprockiGermanyStephen Shaw UNQUALIFIED
Greenwood BologniaItalyXuxue Feng NEW
Misaki RoysterJapanXuxue Feng UNQUALIFIED
Francesco ShinkoRussiaStephen Shaw UNQUALIFIED
Greenwood BologniaBrazilStephen Shaw RENEWAL
Alejandro PerinIndiaIvan Magalhaes PROPOSAL
Darci PoquetteIndiaIoni Bowcher UNQUALIFIED
Salvatore StockhamCanadaStephen Shaw UNQUALIFIED
Julie StensethRussiaIoni Bowcher PROPOSAL
Leja CaldareraFranceAnna Fali QUALIFIED
Octavia MaletRussiaAmy Elsner NEGOTIATION
Mujtaba NickaBrazilXuxue Feng RENEWAL
Jefferson SchemmerJapanOnyama Limba UNQUALIFIED
Ricardo GauchoIndiaIvan Magalhaes UNQUALIFIED
Leja CaldareraRussiaOnyama Limba NEGOTIATION
James ButtItalyAmy Elsner UNQUALIFIED
Claire TollnerUnited KingdomElwin Sharvill UNQUALIFIED
Juan WieserArgentinaIoni Bowcher NEGOTIATION
Leja CaldareraRussiaXuxue Feng NEW
Silvio SlusarskiUnited KingdomAsiya Javayant NEW
Darci PoquetteIndiaAsiya Javayant PROPOSAL
Maria MarrierItalyOnyama Limba UNQUALIFIED
Ricardo GauchoUnited KingdomAnna Fali UNQUALIFIED
Darci PoquetteBrazilAsiya Javayant UNQUALIFIED
Clifford RimJapanXuxue Feng QUALIFIED
Jones VocelkaIndiaAnna Fali UNQUALIFIED
Izzy GarufiRussiaAsiya Javayant NEGOTIATION
James ButtRussiaElwin Sharvill QUALIFIED
Clifford RimSpainElwin Sharvill QUALIFIED
Antonio CaudyGermanyAsiya Javayant UNQUALIFIED
Misaki RoysterArgentinaAnna Fali UNQUALIFIED
Leja CaldareraFranceStephen Shaw NEGOTIATION
Munro FerenczBrazilStephen Shaw NEGOTIATION
Claire TollnerSpainAnna Fali PROPOSAL
Greenwood BologniaRussiaAnna Fali UNQUALIFIED
Sinclair WaycottItalyXuxue Feng UNQUALIFIED
Mayumi KolmetzCanadaOnyama Limba PROPOSAL
Julie StensethArgentinaAmy Elsner RENEWAL
Aruna FigeroaRussiaElwin Sharvill NEGOTIATION
Cody SaylorsBrazilAnna Fali NEGOTIATION
Ashley DoeIndiaIoni Bowcher NEW
Octavia MaletFranceAmy Elsner PROPOSAL
Francesco ShinkoFranceAsiya Javayant QUALIFIED
Mayumi KolmetzBrazilOnyama Limba UNQUALIFIED
Frozen Columns
Name
Leja Caldarera
Jefferson Schemmer
Cody Saylors
Darci Poquette
Juan Wieser
Morrow Ruta
Juan Wieser
Salvatore Stockham
Darci Poquette
Clifford Rim
Stacey Maclead
Kaitlin Ostrosky
Costa Dilliard
Misaki Royster
Antonio Caudy
Stacey Maclead
Greenwood Bolognia
Alejandro Perin
Aruna Figeroa
Nicolas Iturbide
Mayumi Kolmetz
Arvin Albares
Ricardo Gaucho
Kaitlin Ostrosky
Isabel Bowley
Aditya Kusko
Adams Morasca
Chavez Briddick
Smith Glick
Morrow Ruta
Jones Vocelka
Maisha Rulapaugh
Emily Whobrey
Wickens Nestle
Murillo Malet
Octavia Malet
Mujtaba Nicka
Misaki Royster
Morrow Ruta
Emily Whobrey
Mayumi Kolmetz
Darci Poquette
Deepesh Chui
Maria Marrier
Tony Foller
James Butt
Aditya Kusko
Faith Gillian
Smith Glick
Maisha Rulapaugh
IdCountryDate
1000Italy2026-04-04
1001France2026-04-20
1002India2026-04-24
1003Japan2026-04-03
1004Argentina2026-04-27
1005Australia2026-04-14
1006Argentina2026-04-21
1007Australia2026-04-10
1008Germany2026-04-07
1009Italy2026-04-04
1010France2026-04-17
1011Australia2026-04-09
1012Argentina2026-04-20
1013Russia2026-04-09
1014Italy2026-04-06
1015India2026-04-05
1016France2026-05-02
1017Spain2026-04-12
1018United Kingdom2026-04-07
1019Japan2026-04-25
1020Canada2026-04-14
1021Canada2026-04-26
1022Italy2026-04-15
1023Brazil2026-04-09
1024France2026-04-08
1025Spain2026-04-03
1026Italy2026-04-10
1027Italy2026-04-06
1028Spain2026-04-06
1029Argentina2026-04-28
1030India2026-04-28
1031Brazil2026-04-04
1032France2026-04-29
1033Germany2026-04-09
1034Brazil2026-04-27
1035Germany2026-04-06
1036Italy2026-04-25
1037United Kingdom2026-04-30
1038France2026-04-08
1039Argentina2026-04-16
1040India2026-04-06
1041Spain2026-04-04
1042Japan2026-05-01
1043India2026-05-02
1044United Kingdom2026-04-10
1045Argentina2026-05-01
1046France2026-04-15
1047Spain2026-04-29
1048France2026-04-24
1049Spain2026-04-27

On-Demand Data

NameIdCountryDate
Deepesh Chui1000India2026-04-16
Maisha Rulapaugh1001Japan2026-04-25
Kaitlin Ostrosky1002Japan2026-04-19
Aika Inouye1003Spain2026-04-05
Aditya Kusko1004Japan2026-04-03
Clifford Rim1005Spain2026-04-16
Jones Vocelka1006Australia2026-04-16
Stacey Maclead1007Canada2026-04-19
Julie Stenseth1008Spain2026-05-01
Wickens Nestle1009Japan2026-04-25
Claire Tollner1010Australia2026-04-12
Sinclair Waycott1011United Kingdom2026-04-27
Mayumi Kolmetz1012France2026-05-02
Morrow Ruta1013Spain2026-04-29
Wickens Nestle1014Spain2026-04-19
Johnson Sergi1015Italy2026-04-13
Maisha Rulapaugh1016Spain2026-04-05
James Butt1017India2026-05-02
Salvatore Stockham1018Brazil2026-04-21
Leon Oldroyd1019Italy2026-04-13
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Johnson SergiArgentinaAnna Fali QUALIFIED
Adams MorascaCanadaElwin Sharvill NEGOTIATION
Darci PoquetteBrazilAnna Fali NEW
Jeanfrancois VenereIndiaIvan Magalhaes PROPOSAL
Rodrigues CampainCanadaIoni Bowcher NEW
Jefferson SchemmerAustraliaAmy Elsner PROPOSAL
Antonio CaudyCanadaStephen Shaw QUALIFIED
Ricardo GauchoBrazilBernardo Dominic QUALIFIED
Leon OldroydArgentinaIoni Bowcher RENEWAL
Ashley DoeAustraliaAnna Fali NEGOTIATION
Jeanfrancois VenereBrazilOnyama Limba NEGOTIATION
Mayumi KolmetzIndiaBernardo Dominic UNQUALIFIED
Rodrigues CampainRussiaAsiya Javayant NEGOTIATION
Greenwood BologniaSpainAsiya Javayant NEW
Murillo MaletBrazilAsiya Javayant QUALIFIED
Kaitlin OstroskyAustraliaElwin Sharvill NEGOTIATION
Izzy GarufiUnited KingdomXuxue Feng UNQUALIFIED
Ricardo GauchoArgentinaAnna Fali RENEWAL
Jeanfrancois VenereArgentinaIoni Bowcher NEGOTIATION
Greenwood BologniaBrazilAnna Fali QUALIFIED
Leja CaldareraGermanyIoni Bowcher RENEWAL
Johnson SergiCanadaOnyama Limba QUALIFIED
Sinclair WaycottAustraliaAmy Elsner PROPOSAL
Izzy GarufiGermanyIvan Magalhaes NEGOTIATION
Aika InouyeJapanAnna Fali NEGOTIATION
Leon OldroydGermanyBernardo Dominic QUALIFIED
Wickens NestleArgentinaStephen Shaw QUALIFIED
Jennifer AmigonRussiaIoni Bowcher NEGOTIATION
Stacey MacleadAustraliaAmy Elsner NEW
Leja CaldareraUnited KingdomBernardo Dominic RENEWAL
Jennifer AmigonIndiaIoni Bowcher QUALIFIED
Munro FerenczCanadaAmy Elsner RENEWAL
Ricardo GauchoRussiaAnna Fali NEW
Wickens NestleJapanStephen Shaw UNQUALIFIED
Tony FollerGermanyStephen Shaw QUALIFIED
Faith GillianCanadaAnna Fali QUALIFIED
Mujtaba NickaAustraliaBernardo Dominic PROPOSAL
Johnson SergiBrazilAsiya Javayant UNQUALIFIED
Rodrigues CampainJapanOnyama Limba QUALIFIED
Ashley DoeSpainBernardo Dominic 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>