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
Kaitlin OstroskyArgentinaOnyama Limba PROPOSAL
James ButtBrazilOnyama Limba UNQUALIFIED
Ivar PaprockiAustraliaOnyama Limba PROPOSAL
Silvio SlusarskiAustraliaXuxue Feng QUALIFIED
Darci PoquetteArgentinaOnyama Limba NEGOTIATION
Sinclair WaycottBrazilAnna Fali PROPOSAL
Faith GillianAustraliaIvan Magalhaes NEW
Emily WhobreyUnited KingdomStephen Shaw UNQUALIFIED
Munro FerenczArgentinaBernardo Dominic PROPOSAL
Murillo MaletCanadaBernardo Dominic UNQUALIFIED
Mayumi KolmetzJapanOnyama Limba NEW
Arvin AlbaresBrazilAmy Elsner QUALIFIED
Chavez BriddickBrazilOnyama Limba QUALIFIED
Maria MarrierRussiaIoni Bowcher PROPOSAL
Ricardo GauchoCanadaBernardo Dominic PROPOSAL
Isabel BowleyCanadaAsiya Javayant UNQUALIFIED
Salvatore StockhamJapanAnna Fali QUALIFIED
Leja CaldareraBrazilXuxue Feng NEGOTIATION
Ricardo GauchoArgentinaAsiya Javayant QUALIFIED
Kaitlin OstroskySpainAsiya Javayant NEGOTIATION
Rodrigues CampainItalyAmy Elsner UNQUALIFIED
Smith GlickBrazilAmy Elsner PROPOSAL
Ivar PaprockiSpainXuxue Feng NEGOTIATION
Izzy GarufiGermanyIoni Bowcher QUALIFIED
Clifford RimUnited KingdomOnyama Limba NEW
Adams MorascaIndiaAsiya Javayant QUALIFIED
Antonio CaudyGermanyAsiya Javayant NEGOTIATION
Misaki RoysterSpainAnna Fali UNQUALIFIED
Julie StensethUnited KingdomIoni Bowcher NEW
Chavez BriddickIndiaStephen Shaw RENEWAL
Jefferson SchemmerSpainIoni Bowcher UNQUALIFIED
Ivar PaprockiBrazilIoni Bowcher RENEWAL
Ricardo GauchoJapanXuxue Feng PROPOSAL
Francesco ShinkoGermanyElwin Sharvill PROPOSAL
Leja CaldareraFranceElwin Sharvill QUALIFIED
Ivar PaprockiBrazilAsiya Javayant PROPOSAL
Aruna FigeroaRussiaAsiya Javayant UNQUALIFIED
Julie StensethIndiaElwin Sharvill RENEWAL
Wickens NestleRussiaStephen Shaw RENEWAL
Clifford RimBrazilBernardo Dominic PROPOSAL
Adams MorascaArgentinaIvan Magalhaes QUALIFIED
David DarakjyRussiaXuxue Feng PROPOSAL
Sinclair WaycottItalyIvan Magalhaes QUALIFIED
Chavez BriddickSpainIoni Bowcher RENEWAL
Stacey MacleadFranceBernardo Dominic UNQUALIFIED
Tony FollerJapanIvan Magalhaes PROPOSAL
Wickens NestleCanadaStephen Shaw RENEWAL
Darci PoquetteSpainOnyama Limba NEGOTIATION
Rodrigues CampainUnited KingdomIoni Bowcher QUALIFIED
Ivar PaprockiArgentinaXuxue Feng NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Maisha RulapaughAustraliaAnna Fali NEGOTIATION
Tony FollerAustraliaOnyama Limba PROPOSAL
Francesco ShinkoIndiaOnyama Limba RENEWAL
Faith GillianArgentinaOnyama Limba QUALIFIED
Darci PoquetteFranceElwin Sharvill QUALIFIED
Jones VocelkaCanadaIvan Magalhaes NEW
Mujtaba NickaSpainBernardo Dominic UNQUALIFIED
Stacey MacleadArgentinaStephen Shaw RENEWAL
Silvio SlusarskiJapanOnyama Limba PROPOSAL
Leja CaldareraArgentinaBernardo Dominic QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Cody SaylorsGermany2026-05-01King, Christopher A Esq RENEWAL21Bernardo Dominic
1001Deepesh ChuiGermany2026-04-23Morlong Associates QUALIFIED11Amy Elsner
1002James ButtJapan2026-05-11Benton, John B Jr RENEWAL2Anna Fali
1003Ashley DoeFrance2026-05-11Commercial Press RENEWAL94Xuxue Feng
1004Jennifer AmigonItaly2026-04-21Buckley Miller Wright NEW76Bernardo Dominic
1005Julie StensethIndia2026-05-15Commercial Press RENEWAL96Bernardo Dominic
1006Adams MorascaRussia2026-05-12Benton, John B Jr NEGOTIATION83Elwin Sharvill
1007Silvio SlusarskiFrance2026-05-09Truhlar And Truhlar Attys PROPOSAL26Xuxue Feng
1008Salvatore StockhamRussia2026-05-15Printing Dimensions PROPOSAL25Asiya Javayant
1009Mayumi KolmetzBrazil2026-05-11Dorl, James J Esq PROPOSAL59Elwin Sharvill
1010Morrow RutaGermany2026-04-16Chemel, James L Cpa NEGOTIATION80Asiya Javayant
1011Octavia MaletIndia2026-05-13Feiner Bros RENEWAL97Asiya Javayant
1012Ricardo GauchoBrazil2026-05-03King, Christopher A Esq NEGOTIATION98Ioni Bowcher
1013Juan WieserFrance2026-04-16Chapman, Ross E Esq QUALIFIED78Ivan Magalhaes
1014Tony FollerArgentina2026-05-11Chanay, Jeffrey A Esq NEW58Onyama Limba
1015Salvatore StockhamArgentina2026-04-26Rangoni Of Florence RENEWAL23Anna Fali
1016James ButtAustralia2026-05-02Printing Dimensions NEGOTIATION64Ioni Bowcher
1017Jones VocelkaUnited Kingdom2026-05-05Chapman, Ross E Esq UNQUALIFIED74Amy Elsner
1018Juan WieserUnited Kingdom2026-04-26Rangoni Of Florence QUALIFIED79Anna Fali
1019Leja CaldareraGermany2026-05-13Morlong Associates NEGOTIATION17Onyama Limba
1020Ricardo GauchoItaly2026-05-04King, Christopher A Esq UNQUALIFIED70Amy Elsner
1021Greenwood BologniaRussia2026-05-04Rangoni Of Florence QUALIFIED67Asiya Javayant
1022Juan WieserAustralia2026-05-14Dorl, James J Esq PROPOSAL80Elwin Sharvill
1023Octavia MaletIndia2026-05-08Dorl, James J Esq RENEWAL13Stephen Shaw
1024Cody SaylorsAustralia2026-04-25Commercial Press NEW31Asiya Javayant
1025Rodrigues CampainArgentina2026-04-21Chapman, Ross E Esq NEGOTIATION62Elwin Sharvill
1026Julie StensethCanada2026-05-09Commercial Press NEGOTIATION99Asiya Javayant
1027Rodrigues CampainBrazil2026-04-24Printing Dimensions NEW72Elwin Sharvill
1028Smith GlickItaly2026-05-09Feltz Printing Service NEW15Anna Fali
1029Rodrigues CampainArgentina2026-04-18Feiner Bros UNQUALIFIED87Stephen Shaw
1030Adams MorascaJapan2026-05-10Rousseaux, Michael Esq PROPOSAL80Ivan Magalhaes
1031Emily WhobreyIndia2026-04-23Dorl, James J Esq PROPOSAL47Ivan Magalhaes
1032David DarakjyCanada2026-05-06Truhlar And Truhlar Attys PROPOSAL85Onyama Limba
1033Mujtaba NickaArgentina2026-05-13Morlong Associates RENEWAL36Onyama Limba
1034Claire TollnerFrance2026-04-25Chanay, Jeffrey A Esq NEGOTIATION10Onyama Limba
1035Clifford RimFrance2026-04-19Benton, John B Jr RENEWAL13Bernardo Dominic
1036Murillo MaletFrance2026-04-21Chapman, Ross E Esq RENEWAL26Ivan Magalhaes
1037Clifford RimAustralia2026-05-04Truhlar And Truhlar Attys UNQUALIFIED22Asiya Javayant
1038Maria MarrierGermany2026-04-18Benton, John B Jr QUALIFIED12Stephen Shaw
1039Clifford RimCanada2026-05-14Rangoni Of Florence RENEWAL98Stephen Shaw
1040Aruna FigeroaJapan2026-05-05Benton, John B Jr UNQUALIFIED52Onyama Limba
1041Greenwood BologniaSpain2026-04-26King, Christopher A Esq QUALIFIED52Amy Elsner
1042Juan WieserArgentina2026-05-10Buckley Miller Wright UNQUALIFIED37Onyama Limba
1043Ivar PaprockiBrazil2026-05-11Truhlar And Truhlar Attys QUALIFIED40Anna Fali
1044Arvin AlbaresItaly2026-04-28Dorl, James J Esq NEW84Ivan Magalhaes
1045Adams MorascaItaly2026-05-14Morlong Associates QUALIFIED82Xuxue Feng
1046Morrow RutaBrazil2026-05-07Chemel, James L Cpa UNQUALIFIED53Xuxue Feng
1047Rodrigues CampainSpain2026-04-18Dorl, James J Esq NEGOTIATION58Anna Fali
1048Maria MarrierJapan2026-04-19Buckley Miller Wright NEGOTIATION58Xuxue Feng
1049Wickens NestleBrazil2026-05-12Buckley Miller Wright RENEWAL93Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Aika InouyeUnited KingdomIvan Magalhaes QUALIFIED
Johnson SergiCanadaXuxue Feng PROPOSAL
Smith GlickSpainAnna Fali PROPOSAL
Deepesh ChuiAustraliaIvan Magalhaes PROPOSAL
Isabel BowleyJapanAnna Fali NEGOTIATION
Tony FollerGermanyOnyama Limba NEGOTIATION
Cody SaylorsSpainAmy Elsner NEGOTIATION
Mayumi KolmetzJapanOnyama Limba QUALIFIED
Isabel BowleySpainAnna Fali QUALIFIED
Nicolas IturbideUnited KingdomIoni Bowcher NEGOTIATION
David DarakjyRussiaAnna Fali UNQUALIFIED
Faith GillianItalyOnyama Limba QUALIFIED
Julie StensethBrazilBernardo Dominic UNQUALIFIED
Silvio SlusarskiGermanyBernardo Dominic QUALIFIED
Jennifer AmigonItalyBernardo Dominic PROPOSAL
Jones VocelkaFranceIoni Bowcher NEW
Wickens NestleRussiaAsiya Javayant NEGOTIATION
Claire TollnerUnited KingdomElwin Sharvill QUALIFIED
Clifford RimIndiaXuxue Feng UNQUALIFIED
Smith GlickSpainAsiya Javayant UNQUALIFIED
Arvin AlbaresArgentinaBernardo Dominic UNQUALIFIED
Aika InouyeSpainOnyama Limba RENEWAL
Clifford RimFranceAmy Elsner UNQUALIFIED
Faith GillianCanadaOnyama Limba RENEWAL
Aruna FigeroaIndiaStephen Shaw UNQUALIFIED
Tony FollerSpainElwin Sharvill RENEWAL
Alejandro PerinItalyAnna Fali RENEWAL
Rodrigues CampainSpainBernardo Dominic NEW
Deepesh ChuiUnited KingdomOnyama Limba NEGOTIATION
Jennifer AmigonRussiaIvan Magalhaes NEGOTIATION
Clifford RimItalyOnyama Limba RENEWAL
Deepesh ChuiRussiaStephen Shaw UNQUALIFIED
Arvin AlbaresRussiaXuxue Feng QUALIFIED
Mujtaba NickaFranceAnna Fali QUALIFIED
Silvio SlusarskiJapanAmy Elsner RENEWAL
Leon OldroydIndiaIoni Bowcher PROPOSAL
Izzy GarufiIndiaBernardo Dominic NEW
Stacey MacleadSpainBernardo Dominic PROPOSAL
Morrow RutaJapanElwin Sharvill NEW
Stacey MacleadAustraliaAsiya Javayant QUALIFIED
Greenwood BologniaAustraliaXuxue Feng RENEWAL
Arvin AlbaresUnited KingdomOnyama Limba NEW
Munro FerenczIndiaStephen Shaw NEW
Wickens NestleJapanIoni Bowcher PROPOSAL
Costa DilliardAustraliaIvan Magalhaes NEW
Aika InouyeAustraliaIoni Bowcher QUALIFIED
Alejandro PerinSpainAmy Elsner QUALIFIED
Ashley DoeJapanIoni Bowcher RENEWAL
Kadeem FlosiUnited KingdomBernardo Dominic UNQUALIFIED
Silvio SlusarskiItalyBernardo Dominic NEW
Frozen Columns
Name
Deepesh Chui
Jefferson Schemmer
Johnson Sergi
Cody Saylors
Jefferson Schemmer
Claire Tollner
Silvio Slusarski
Octavia Malet
Kaitlin Ostrosky
Nicolas Iturbide
Aruna Figeroa
Mayumi Kolmetz
Jefferson Schemmer
Izzy Garufi
Faith Gillian
Cody Saylors
Mujtaba Nicka
Mujtaba Nicka
Maria Marrier
Maria Marrier
Izzy Garufi
Emily Whobrey
Deepesh Chui
Claire Tollner
Arvin Albares
Leja Caldarera
Salvatore Stockham
Jefferson Schemmer
Maisha Rulapaugh
Emily Whobrey
Salvatore Stockham
Emily Whobrey
Izzy Garufi
Ashley Doe
Mayumi Kolmetz
Isabel Bowley
Kaitlin Ostrosky
Mujtaba Nicka
Maria Marrier
Munro Ferencz
Aika Inouye
Clifford Rim
Francesco Shinko
Claire Tollner
Jones Vocelka
Morrow Ruta
Murillo Malet
Misaki Royster
Juan Wieser
Aika Inouye
IdCountryDate
1000Australia2026-04-18
1001Canada2026-05-02
1002Argentina2026-05-15
1003Russia2026-05-05
1004India2026-04-16
1005Argentina2026-04-24
1006United Kingdom2026-04-23
1007Germany2026-05-11
1008Russia2026-04-24
1009Italy2026-05-01
1010Argentina2026-05-13
1011Italy2026-04-23
1012Japan2026-05-12
1013India2026-04-16
1014Spain2026-04-23
1015Australia2026-04-27
1016Argentina2026-04-26
1017Brazil2026-04-26
1018Russia2026-05-10
1019Canada2026-04-18
1020Argentina2026-04-24
1021France2026-04-29
1022France2026-05-02
1023India2026-04-20
1024United Kingdom2026-04-27
1025Canada2026-05-09
1026Spain2026-04-19
1027Italy2026-04-28
1028Argentina2026-04-25
1029Argentina2026-04-30
1030Russia2026-04-18
1031Italy2026-05-07
1032Russia2026-05-11
1033Italy2026-05-12
1034India2026-05-14
1035Germany2026-05-14
1036Brazil2026-05-10
1037Spain2026-04-21
1038Spain2026-05-12
1039France2026-05-07
1040Russia2026-04-23
1041United Kingdom2026-04-21
1042Brazil2026-04-27
1043Japan2026-04-26
1044India2026-04-24
1045Russia2026-04-22
1046Spain2026-05-07
1047India2026-04-29
1048Russia2026-05-02
1049Australia2026-04-23

On-Demand Data

NameIdCountryDate
Claire Tollner1000India2026-05-08
Cody Saylors1001France2026-05-03
Johnson Sergi1002Italy2026-05-08
Costa Dilliard1003Spain2026-04-20
Aruna Figeroa1004Spain2026-04-21
Darci Poquette1005Japan2026-05-11
Julie Stenseth1006Russia2026-05-15
Kadeem Flosi1007Japan2026-04-19
Tony Foller1008Japan2026-04-30
Salvatore Stockham1009Italy2026-05-13
Jefferson Schemmer1010France2026-05-07
Emily Whobrey1011Germany2026-04-26
Johnson Sergi1012Germany2026-04-26
Morrow Ruta1013Spain2026-05-11
Leon Oldroyd1014France2026-05-10
Clifford Rim1015Japan2026-04-27
Morrow Ruta1016Australia2026-04-30
Maisha Rulapaugh1017Australia2026-05-01
Arvin Albares1018Germany2026-05-07
Munro Ferencz1019Italy2026-05-12
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Isabel BowleyRussiaStephen Shaw RENEWAL
Silvio SlusarskiBrazilBernardo Dominic NEGOTIATION
Johnson SergiAustraliaOnyama Limba PROPOSAL
Salvatore StockhamFranceXuxue Feng NEW
Alejandro PerinJapanBernardo Dominic NEW
Claire TollnerArgentinaAnna Fali UNQUALIFIED
Stacey MacleadUnited KingdomStephen Shaw QUALIFIED
Jennifer AmigonAustraliaBernardo Dominic NEW
Ricardo GauchoUnited KingdomAnna Fali RENEWAL
Maria MarrierBrazilAsiya Javayant PROPOSAL
Cody SaylorsArgentinaIoni Bowcher NEW
Ashley DoeCanadaElwin Sharvill QUALIFIED
Jennifer AmigonJapanOnyama Limba QUALIFIED
Jefferson SchemmerSpainAsiya Javayant UNQUALIFIED
Mayumi KolmetzItalyOnyama Limba QUALIFIED
Antonio CaudySpainStephen Shaw PROPOSAL
Kaitlin OstroskySpainStephen Shaw NEGOTIATION
Misaki RoysterArgentinaIvan Magalhaes QUALIFIED
Arvin AlbaresIndiaAsiya Javayant RENEWAL
Sinclair WaycottAustraliaAsiya Javayant NEGOTIATION
Misaki RoysterIndiaElwin Sharvill PROPOSAL
Johnson SergiGermanyAnna Fali NEGOTIATION
James ButtArgentinaOnyama Limba UNQUALIFIED
Nicolas IturbideCanadaBernardo Dominic UNQUALIFIED
Antonio CaudyRussiaElwin Sharvill RENEWAL
Cody SaylorsSpainStephen Shaw QUALIFIED
Maria MarrierIndiaXuxue Feng RENEWAL
Leon OldroydItalyElwin Sharvill NEGOTIATION
Kaitlin OstroskyUnited KingdomElwin Sharvill RENEWAL
Stacey MacleadGermanyElwin Sharvill RENEWAL
Izzy GarufiCanadaXuxue Feng RENEWAL
Silvio SlusarskiArgentinaBernardo Dominic NEGOTIATION
Darci PoquetteIndiaAsiya Javayant QUALIFIED
Deepesh ChuiCanadaOnyama Limba PROPOSAL
Nicolas IturbideRussiaBernardo Dominic UNQUALIFIED
Julie StensethUnited KingdomXuxue Feng UNQUALIFIED
Ricardo GauchoIndiaAmy Elsner NEGOTIATION
Leon OldroydJapanAmy Elsner NEW
Aruna FigeroaAustraliaStephen Shaw PROPOSAL
Aditya KuskoAustraliaIoni Bowcher 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>