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
Murillo MaletRussiaAsiya Javayant NEGOTIATION
Stacey MacleadIndiaIoni Bowcher NEGOTIATION
Julie StensethFranceElwin Sharvill NEGOTIATION
Leja CaldareraGermanyElwin Sharvill UNQUALIFIED
James ButtFranceBernardo Dominic RENEWAL
Octavia MaletSpainStephen Shaw NEW
Leja CaldareraFranceAmy Elsner NEW
Antonio CaudyBrazilAsiya Javayant RENEWAL
Emily WhobreyJapanAsiya Javayant NEW
Francesco ShinkoUnited KingdomBernardo Dominic NEW
Munro FerenczGermanyAnna Fali PROPOSAL
Smith GlickArgentinaOnyama Limba RENEWAL
Nicolas IturbideBrazilAnna Fali RENEWAL
Octavia MaletCanadaAnna Fali PROPOSAL
Greenwood BologniaBrazilStephen Shaw UNQUALIFIED
Juan WieserIndiaAsiya Javayant QUALIFIED
Juan WieserGermanyBernardo Dominic NEGOTIATION
Clifford RimFranceOnyama Limba QUALIFIED
Aditya KuskoCanadaXuxue Feng RENEWAL
Sinclair WaycottGermanyAmy Elsner PROPOSAL
Izzy GarufiIndiaIvan Magalhaes RENEWAL
Leja CaldareraSpainAsiya Javayant NEGOTIATION
Maisha RulapaughUnited KingdomIvan Magalhaes QUALIFIED
Antonio CaudyAustraliaOnyama Limba NEGOTIATION
Nicolas IturbideBrazilStephen Shaw NEGOTIATION
Ricardo GauchoAustraliaAsiya Javayant PROPOSAL
Ivar PaprockiArgentinaAmy Elsner NEGOTIATION
Sinclair WaycottBrazilOnyama Limba NEW
Munro FerenczRussiaAsiya Javayant QUALIFIED
Julie StensethIndiaElwin Sharvill RENEWAL
Morrow RutaGermanyAsiya Javayant RENEWAL
Tony FollerCanadaAsiya Javayant PROPOSAL
Aruna FigeroaAustraliaOnyama Limba PROPOSAL
Wickens NestleIndiaStephen Shaw RENEWAL
Kadeem FlosiArgentinaStephen Shaw RENEWAL
Sinclair WaycottJapanOnyama Limba RENEWAL
Faith GillianItalyAsiya Javayant QUALIFIED
Emily WhobreyJapanAmy Elsner PROPOSAL
Izzy GarufiItalyOnyama Limba QUALIFIED
Leon OldroydUnited KingdomAnna Fali NEW
Kaitlin OstroskyIndiaAsiya Javayant NEW
Maisha RulapaughBrazilElwin Sharvill NEGOTIATION
Wickens NestleGermanyIvan Magalhaes RENEWAL
Jefferson SchemmerJapanIoni Bowcher UNQUALIFIED
Jeanfrancois VenereJapanIvan Magalhaes NEW
Ashley DoeIndiaStephen Shaw PROPOSAL
Sinclair WaycottUnited KingdomAsiya Javayant NEW
Aika InouyeArgentinaIvan Magalhaes NEW
Ivar PaprockiGermanyAsiya Javayant QUALIFIED
Mayumi KolmetzRussiaAmy Elsner UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Julie StensethSpainStephen Shaw NEW
Stacey MacleadGermanyElwin Sharvill PROPOSAL
Stacey MacleadArgentinaXuxue Feng NEGOTIATION
Morrow RutaJapanElwin Sharvill RENEWAL
Arvin AlbaresJapanAsiya Javayant RENEWAL
Maisha RulapaughItalyElwin Sharvill RENEWAL
Maria MarrierFranceElwin Sharvill NEGOTIATION
Faith GillianAustraliaAmy Elsner QUALIFIED
Wickens NestleJapanAsiya Javayant RENEWAL
Adams MorascaGermanyAnna Fali RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Morrow RutaFrance2026-04-16Commercial Press NEGOTIATION59Ioni Bowcher
1001Aika InouyeItaly2026-04-23Morlong Associates UNQUALIFIED39Anna Fali
1002David DarakjyIndia2026-05-02Morlong Associates UNQUALIFIED51Amy Elsner
1003Mayumi KolmetzItaly2026-04-13Commercial Press NEW47Asiya Javayant
1004Morrow RutaSpain2026-04-20Dorl, James J Esq QUALIFIED90Onyama Limba
1005Mujtaba NickaUnited Kingdom2026-04-28Feltz Printing Service RENEWAL26Bernardo Dominic
1006Claire TollnerArgentina2026-04-25Rangoni Of Florence QUALIFIED65Asiya Javayant
1007Smith GlickBrazil2026-04-14Truhlar And Truhlar Attys QUALIFIED5Elwin Sharvill
1008Aika InouyeCanada2026-04-26Morlong Associates NEGOTIATION47Onyama Limba
1009Deepesh ChuiGermany2026-04-21Chemel, James L Cpa UNQUALIFIED50Asiya Javayant
1010Izzy GarufiUnited Kingdom2026-04-29Commercial Press RENEWAL68Bernardo Dominic
1011Tony FollerCanada2026-05-06King, Christopher A Esq NEW55Anna Fali
1012Ivar PaprockiGermany2026-05-07Chemel, James L Cpa NEW39Bernardo Dominic
1013Alejandro PerinRussia2026-04-24Rangoni Of Florence RENEWAL27Onyama Limba
1014Emily WhobreyUnited Kingdom2026-04-11King, Christopher A Esq PROPOSAL48Onyama Limba
1015Ashley DoeRussia2026-04-27Chemel, James L Cpa QUALIFIED20Anna Fali
1016Arvin AlbaresCanada2026-05-05Truhlar And Truhlar Attys NEGOTIATION24Bernardo Dominic
1017Jefferson SchemmerUnited Kingdom2026-04-30Feiner Bros NEW90Stephen Shaw
1018Deepesh ChuiJapan2026-04-15Benton, John B Jr QUALIFIED8Ivan Magalhaes
1019Murillo MaletSpain2026-04-24Buckley Miller Wright UNQUALIFIED65Elwin Sharvill
1020Jeanfrancois VenereIndia2026-05-02Rousseaux, Michael Esq NEGOTIATION62Xuxue Feng
1021Leja CaldareraIndia2026-04-25King, Christopher A Esq UNQUALIFIED23Bernardo Dominic
1022Jones VocelkaAustralia2026-04-22Rousseaux, Michael Esq NEGOTIATION46Xuxue Feng
1023Jennifer AmigonRussia2026-04-16Buckley Miller Wright UNQUALIFIED36Stephen Shaw
1024Misaki RoysterJapan2026-04-15Benton, John B Jr UNQUALIFIED24Asiya Javayant
1025Deepesh ChuiJapan2026-04-15King, Christopher A Esq QUALIFIED19Asiya Javayant
1026Nicolas IturbideUnited Kingdom2026-04-26Benton, John B Jr QUALIFIED78Amy Elsner
1027Nicolas IturbideAustralia2026-04-16King, Christopher A Esq UNQUALIFIED55Ioni Bowcher
1028Deepesh ChuiCanada2026-04-26Truhlar And Truhlar Attys PROPOSAL3Anna Fali
1029Izzy GarufiJapan2026-05-04Feiner Bros PROPOSAL88Anna Fali
1030Misaki RoysterGermany2026-04-25Rousseaux, Michael Esq UNQUALIFIED28Ivan Magalhaes
1031Nicolas IturbideRussia2026-04-12Dorl, James J Esq QUALIFIED34Asiya Javayant
1032Ashley DoeGermany2026-04-13Truhlar And Truhlar Attys QUALIFIED19Bernardo Dominic
1033Salvatore StockhamRussia2026-05-09Dorl, James J Esq RENEWAL24Xuxue Feng
1034Smith GlickArgentina2026-04-14Feiner Bros NEW76Elwin Sharvill
1035Greenwood BologniaItaly2026-04-29Feiner Bros NEW10Xuxue Feng
1036Mayumi KolmetzBrazil2026-04-27Rousseaux, Michael Esq PROPOSAL12Onyama Limba
1037Jefferson SchemmerArgentina2026-04-23Rousseaux, Michael Esq NEW98Bernardo Dominic
1038Jennifer AmigonSpain2026-05-10Rousseaux, Michael Esq QUALIFIED26Elwin Sharvill
1039Rodrigues CampainSpain2026-05-05Chapman, Ross E Esq NEW93Xuxue Feng
1040Sinclair WaycottAustralia2026-04-18Printing Dimensions NEGOTIATION39Asiya Javayant
1041Ashley DoeCanada2026-04-12Commercial Press PROPOSAL75Stephen Shaw
1042Maisha RulapaughRussia2026-05-10Feiner Bros NEW70Ivan Magalhaes
1043Emily WhobreyCanada2026-04-29Buckley Miller Wright NEW43Onyama Limba
1044David DarakjyArgentina2026-04-20Chapman, Ross E Esq QUALIFIED33Anna Fali
1045Murillo MaletUnited Kingdom2026-05-02Morlong Associates PROPOSAL90Bernardo Dominic
1046Morrow RutaRussia2026-05-07Morlong Associates NEW61Elwin Sharvill
1047Antonio CaudyArgentina2026-04-18Feltz Printing Service NEGOTIATION20Anna Fali
1048Jeanfrancois VenereAustralia2026-05-06Chanay, Jeffrey A Esq UNQUALIFIED88Onyama Limba
1049Sinclair WaycottBrazil2026-04-14Chemel, James L Cpa QUALIFIED68Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Mayumi KolmetzRussiaElwin Sharvill PROPOSAL
Silvio SlusarskiFranceAmy Elsner PROPOSAL
Emily WhobreyItalyAnna Fali NEGOTIATION
Tony FollerGermanyIvan Magalhaes NEGOTIATION
Julie StensethBrazilAsiya Javayant RENEWAL
Stacey MacleadItalyStephen Shaw QUALIFIED
Stacey MacleadSpainAmy Elsner RENEWAL
Octavia MaletIndiaStephen Shaw UNQUALIFIED
Aika InouyeItalyXuxue Feng QUALIFIED
Julie StensethFranceAmy Elsner NEW
Izzy GarufiBrazilAmy Elsner QUALIFIED
Ivar PaprockiAustraliaIvan Magalhaes RENEWAL
Aika InouyeJapanStephen Shaw NEGOTIATION
Greenwood BologniaUnited KingdomStephen Shaw NEW
Costa DilliardItalyAmy Elsner UNQUALIFIED
Salvatore StockhamArgentinaAmy Elsner QUALIFIED
Alejandro PerinRussiaElwin Sharvill PROPOSAL
Smith GlickIndiaStephen Shaw NEGOTIATION
Jefferson SchemmerRussiaIoni Bowcher UNQUALIFIED
Stacey MacleadBrazilXuxue Feng QUALIFIED
David DarakjyBrazilAmy Elsner PROPOSAL
Silvio SlusarskiCanadaAnna Fali RENEWAL
Arvin AlbaresArgentinaBernardo Dominic NEW
Ashley DoeBrazilElwin Sharvill NEGOTIATION
Julie StensethCanadaBernardo Dominic QUALIFIED
Clifford RimUnited KingdomBernardo Dominic PROPOSAL
Arvin AlbaresUnited KingdomIvan Magalhaes QUALIFIED
Deepesh ChuiItalyXuxue Feng RENEWAL
Octavia MaletUnited KingdomElwin Sharvill NEW
Francesco ShinkoGermanyAnna Fali RENEWAL
Maisha RulapaughCanadaIoni Bowcher UNQUALIFIED
Deepesh ChuiUnited KingdomOnyama Limba RENEWAL
Murillo MaletIndiaBernardo Dominic QUALIFIED
Jefferson SchemmerAustraliaAmy Elsner UNQUALIFIED
Rodrigues CampainUnited KingdomAsiya Javayant NEGOTIATION
Izzy GarufiJapanAsiya Javayant RENEWAL
Jones VocelkaFranceIoni Bowcher QUALIFIED
Francesco ShinkoItalyIvan Magalhaes RENEWAL
Morrow RutaBrazilAnna Fali QUALIFIED
Aika InouyeFranceOnyama Limba UNQUALIFIED
Darci PoquetteIndiaElwin Sharvill RENEWAL
Salvatore StockhamGermanyElwin Sharvill QUALIFIED
Cody SaylorsRussiaXuxue Feng NEW
Cody SaylorsAustraliaAnna Fali QUALIFIED
Ashley DoeRussiaBernardo Dominic NEGOTIATION
Rodrigues CampainBrazilBernardo Dominic QUALIFIED
Silvio SlusarskiIndiaElwin Sharvill NEW
Claire TollnerFranceIoni Bowcher NEGOTIATION
Aika InouyeUnited KingdomIoni Bowcher NEGOTIATION
Juan WieserSpainAmy Elsner QUALIFIED
Frozen Columns
Name
Ivar Paprocki
Octavia Malet
Cody Saylors
Sinclair Waycott
Kaitlin Ostrosky
Maria Marrier
Morrow Ruta
Emily Whobrey
Jefferson Schemmer
Stacey Maclead
Smith Glick
Ivar Paprocki
Greenwood Bolognia
Claire Tollner
Adams Morasca
Rodrigues Campain
Morrow Ruta
Isabel Bowley
Nicolas Iturbide
Murillo Malet
Jeanfrancois Venere
Salvatore Stockham
Jeanfrancois Venere
Deepesh Chui
Greenwood Bolognia
Alejandro Perin
Clifford Rim
Emily Whobrey
Ivar Paprocki
Aruna Figeroa
Stacey Maclead
Stacey Maclead
Deepesh Chui
Maria Marrier
Mayumi Kolmetz
Sinclair Waycott
Juan Wieser
Sinclair Waycott
Mujtaba Nicka
Ricardo Gaucho
Emily Whobrey
Sinclair Waycott
Leon Oldroyd
Adams Morasca
Sinclair Waycott
Maria Marrier
Izzy Garufi
Isabel Bowley
Deepesh Chui
Kadeem Flosi
IdCountryDate
1000Argentina2026-05-02
1001United Kingdom2026-04-26
1002India2026-05-01
1003Canada2026-04-13
1004India2026-04-18
1005Japan2026-04-21
1006Argentina2026-04-14
1007Australia2026-04-30
1008Argentina2026-04-19
1009Argentina2026-04-26
1010Italy2026-05-02
1011United Kingdom2026-05-08
1012Spain2026-04-25
1013Brazil2026-04-13
1014Italy2026-04-15
1015India2026-04-15
1016Germany2026-04-16
1017United Kingdom2026-04-25
1018Russia2026-04-23
1019Japan2026-04-28
1020United Kingdom2026-05-05
1021United Kingdom2026-05-07
1022France2026-04-29
1023Germany2026-04-21
1024Italy2026-04-17
1025India2026-05-02
1026Japan2026-05-05
1027Germany2026-04-25
1028Japan2026-05-10
1029Spain2026-04-21
1030Japan2026-05-06
1031Brazil2026-04-25
1032Canada2026-04-23
1033Italy2026-04-24
1034Russia2026-05-01
1035Canada2026-04-18
1036Argentina2026-04-30
1037France2026-04-12
1038United Kingdom2026-04-13
1039Russia2026-05-08
1040Japan2026-04-13
1041Italy2026-05-04
1042Spain2026-05-06
1043France2026-04-20
1044Canada2026-04-20
1045Argentina2026-05-06
1046Canada2026-04-23
1047Russia2026-04-21
1048Brazil2026-04-15
1049France2026-04-17

On-Demand Data

NameIdCountryDate
Rodrigues Campain1000Australia2026-04-16
Jones Vocelka1001Spain2026-04-30
Emily Whobrey1002India2026-05-01
Rodrigues Campain1003France2026-04-18
Wickens Nestle1004Italy2026-04-19
Kaitlin Ostrosky1005Japan2026-05-04
Wickens Nestle1006Russia2026-04-19
Costa Dilliard1007United Kingdom2026-04-18
Arvin Albares1008Brazil2026-05-10
Maria Marrier1009Italy2026-04-22
David Darakjy1010Brazil2026-04-21
Octavia Malet1011Spain2026-04-23
Faith Gillian1012Japan2026-04-25
Faith Gillian1013Spain2026-04-13
Tony Foller1014Italy2026-04-24
Jeanfrancois Venere1015Argentina2026-05-05
Mujtaba Nicka1016Italy2026-05-06
Chavez Briddick1017India2026-04-13
Aruna Figeroa1018Russia2026-05-04
Silvio Slusarski1019Japan2026-05-10
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Emily WhobreyJapanAsiya Javayant QUALIFIED
Chavez BriddickArgentinaAmy Elsner RENEWAL
Francesco ShinkoSpainAsiya Javayant QUALIFIED
Misaki RoysterSpainAnna Fali PROPOSAL
Aruna FigeroaFranceIvan Magalhaes NEGOTIATION
Antonio CaudyRussiaAmy Elsner QUALIFIED
Ashley DoeSpainIvan Magalhaes NEW
Darci PoquetteAustraliaAsiya Javayant RENEWAL
Mujtaba NickaArgentinaOnyama Limba PROPOSAL
Wickens NestleCanadaAnna Fali RENEWAL
James ButtAustraliaAsiya Javayant NEW
Juan WieserItalyIoni Bowcher NEGOTIATION
Murillo MaletItalyIoni Bowcher QUALIFIED
Maria MarrierUnited KingdomStephen Shaw UNQUALIFIED
Octavia MaletAustraliaBernardo Dominic UNQUALIFIED
Jones VocelkaUnited KingdomXuxue Feng NEGOTIATION
Darci PoquetteItalyIvan Magalhaes QUALIFIED
Silvio SlusarskiIndiaElwin Sharvill RENEWAL
Tony FollerCanadaStephen Shaw RENEWAL
Julie StensethItalyElwin Sharvill UNQUALIFIED
Emily WhobreyJapanIvan Magalhaes RENEWAL
Claire TollnerItalyElwin Sharvill NEGOTIATION
Ashley DoeItalyIvan Magalhaes NEW
Ricardo GauchoBrazilElwin Sharvill RENEWAL
Claire TollnerGermanyAsiya Javayant NEW
Francesco ShinkoFranceStephen Shaw RENEWAL
Octavia MaletUnited KingdomOnyama Limba QUALIFIED
David DarakjyBrazilElwin Sharvill UNQUALIFIED
Aika InouyeArgentinaIoni Bowcher NEGOTIATION
Greenwood BologniaCanadaBernardo Dominic UNQUALIFIED
Juan WieserJapanOnyama Limba UNQUALIFIED
Silvio SlusarskiIndiaOnyama Limba PROPOSAL
Johnson SergiGermanyIoni Bowcher UNQUALIFIED
Octavia MaletSpainAmy Elsner UNQUALIFIED
Izzy GarufiGermanyBernardo Dominic PROPOSAL
Maisha RulapaughIndiaIoni Bowcher PROPOSAL
Darci PoquetteUnited KingdomElwin Sharvill NEW
Octavia MaletUnited KingdomIoni Bowcher NEW
Stacey MacleadIndiaOnyama Limba PROPOSAL
Silvio SlusarskiGermanyAnna Fali RENEWAL

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