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
David DarakjyJapanStephen Shaw UNQUALIFIED
David DarakjyIndiaAmy Elsner RENEWAL
Silvio SlusarskiGermanyIoni Bowcher PROPOSAL
Tony FollerUnited KingdomElwin Sharvill RENEWAL
Kadeem FlosiFranceStephen Shaw NEGOTIATION
Francesco ShinkoJapanBernardo Dominic UNQUALIFIED
Ricardo GauchoArgentinaOnyama Limba QUALIFIED
Claire TollnerCanadaAmy Elsner UNQUALIFIED
Leon OldroydJapanIoni Bowcher QUALIFIED
Clifford RimCanadaStephen Shaw UNQUALIFIED
Smith GlickAustraliaBernardo Dominic NEGOTIATION
Antonio CaudyFranceStephen Shaw NEW
Salvatore StockhamJapanAsiya Javayant NEGOTIATION
Munro FerenczItalyOnyama Limba NEGOTIATION
Jeanfrancois VenereJapanAnna Fali NEW
James ButtIndiaIoni Bowcher NEGOTIATION
Aditya KuskoArgentinaBernardo Dominic RENEWAL
Mayumi KolmetzFranceAmy Elsner UNQUALIFIED
Maisha RulapaughSpainAsiya Javayant UNQUALIFIED
Emily WhobreyGermanyElwin Sharvill NEGOTIATION
Stacey MacleadGermanyElwin Sharvill RENEWAL
Costa DilliardFranceElwin Sharvill UNQUALIFIED
Aditya KuskoGermanyAnna Fali NEGOTIATION
Kadeem FlosiArgentinaAsiya Javayant QUALIFIED
Chavez BriddickRussiaAmy Elsner NEGOTIATION
Antonio CaudyBrazilAnna Fali UNQUALIFIED
Greenwood BologniaGermanyIoni Bowcher NEW
Costa DilliardRussiaBernardo Dominic QUALIFIED
Salvatore StockhamGermanyAnna Fali NEGOTIATION
Mujtaba NickaGermanyXuxue Feng RENEWAL
Claire TollnerFranceElwin Sharvill QUALIFIED
Adams MorascaBrazilAsiya Javayant UNQUALIFIED
Jeanfrancois VenereIndiaAmy Elsner RENEWAL
Silvio SlusarskiIndiaXuxue Feng PROPOSAL
Leja CaldareraGermanyAmy Elsner QUALIFIED
Greenwood BologniaBrazilAmy Elsner QUALIFIED
Stacey MacleadBrazilAmy Elsner UNQUALIFIED
Aika InouyeRussiaXuxue Feng PROPOSAL
Kaitlin OstroskyFranceStephen Shaw PROPOSAL
Leon OldroydFranceStephen Shaw NEW
Tony FollerGermanyIvan Magalhaes UNQUALIFIED
Aditya KuskoArgentinaOnyama Limba RENEWAL
Adams MorascaGermanyIoni Bowcher QUALIFIED
Maria MarrierGermanyElwin Sharvill NEGOTIATION
Adams MorascaRussiaAmy Elsner NEGOTIATION
Jennifer AmigonUnited KingdomStephen Shaw NEGOTIATION
Misaki RoysterRussiaAnna Fali UNQUALIFIED
Antonio CaudySpainElwin Sharvill UNQUALIFIED
Mayumi KolmetzRussiaBernardo Dominic UNQUALIFIED
Ivar PaprockiArgentinaIvan Magalhaes NEW
Horizontal
NameCountryRepresentativeStatus
Aika InouyeFranceElwin Sharvill NEW
Leon OldroydSpainOnyama Limba RENEWAL
Sinclair WaycottFranceAmy Elsner UNQUALIFIED
Arvin AlbaresAustraliaIoni Bowcher NEW
Darci PoquetteIndiaOnyama Limba PROPOSAL
Juan WieserCanadaIoni Bowcher NEW
Clifford RimUnited KingdomElwin Sharvill UNQUALIFIED
Rodrigues CampainItalyAsiya Javayant NEGOTIATION
Jennifer AmigonArgentinaStephen Shaw QUALIFIED
Jeanfrancois VenereSpainXuxue Feng NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Francesco ShinkoItaly2026-04-09Chemel, James L Cpa RENEWAL92Xuxue Feng
1001Smith GlickAustralia2026-05-01King, Christopher A Esq QUALIFIED73Amy Elsner
1002Ashley DoeIndia2026-05-02Chanay, Jeffrey A Esq UNQUALIFIED68Ioni Bowcher
1003Sinclair WaycottBrazil2026-04-21Rousseaux, Michael Esq UNQUALIFIED34Asiya Javayant
1004Chavez BriddickArgentina2026-04-28Printing Dimensions UNQUALIFIED25Bernardo Dominic
1005David DarakjyFrance2026-04-29Benton, John B Jr NEW80Asiya Javayant
1006Cody SaylorsBrazil2026-04-13King, Christopher A Esq PROPOSAL10Onyama Limba
1007Aruna FigeroaFrance2026-04-29King, Christopher A Esq NEW63Xuxue Feng
1008Kaitlin OstroskyAustralia2026-04-17Chanay, Jeffrey A Esq NEW33Stephen Shaw
1009Alejandro PerinIndia2026-04-27Dorl, James J Esq NEW28Ivan Magalhaes
1010Jefferson SchemmerGermany2026-05-05Truhlar And Truhlar Attys NEW40Ivan Magalhaes
1011Juan WieserJapan2026-04-12Commercial Press NEGOTIATION41Anna Fali
1012Leon OldroydIndia2026-04-15Printing Dimensions UNQUALIFIED12Elwin Sharvill
1013Rodrigues CampainUnited Kingdom2026-04-24Morlong Associates NEGOTIATION71Stephen Shaw
1014Maria MarrierUnited Kingdom2026-04-23Truhlar And Truhlar Attys NEGOTIATION72Stephen Shaw
1015Clifford RimAustralia2026-04-08Benton, John B Jr QUALIFIED25Ioni Bowcher
1016Cody SaylorsBrazil2026-04-30Truhlar And Truhlar Attys NEW73Xuxue Feng
1017Arvin AlbaresCanada2026-04-28Commercial Press NEW23Bernardo Dominic
1018Nicolas IturbideItaly2026-04-23Feiner Bros PROPOSAL57Asiya Javayant
1019Aika InouyeBrazil2026-04-22Morlong Associates QUALIFIED32Elwin Sharvill
1020Rodrigues CampainFrance2026-04-23Feiner Bros QUALIFIED5Asiya Javayant
1021Deepesh ChuiUnited Kingdom2026-04-10King, Christopher A Esq NEW13Xuxue Feng
1022Aruna FigeroaBrazil2026-04-30Morlong Associates PROPOSAL8Elwin Sharvill
1023Jefferson SchemmerFrance2026-04-16Feltz Printing Service RENEWAL76Ioni Bowcher
1024Leja CaldareraUnited Kingdom2026-04-12Benton, John B Jr QUALIFIED6Anna Fali
1025Greenwood BologniaJapan2026-04-25Dorl, James J Esq QUALIFIED13Bernardo Dominic
1026Darci PoquetteGermany2026-04-30Chanay, Jeffrey A Esq UNQUALIFIED75Ioni Bowcher
1027Aika InouyeCanada2026-04-06Benton, John B Jr UNQUALIFIED92Ioni Bowcher
1028Ashley DoeArgentina2026-04-19King, Christopher A Esq NEW86Stephen Shaw
1029Costa DilliardCanada2026-04-14Buckley Miller Wright QUALIFIED17Asiya Javayant
1030Mayumi KolmetzIndia2026-04-08Buckley Miller Wright NEGOTIATION26Bernardo Dominic
1031Antonio CaudyAustralia2026-04-16Printing Dimensions NEW80Asiya Javayant
1032Jennifer AmigonIndia2026-04-18Printing Dimensions QUALIFIED58Elwin Sharvill
1033Silvio SlusarskiAustralia2026-04-11Dorl, James J Esq QUALIFIED59Asiya Javayant
1034Francesco ShinkoGermany2026-04-29Rousseaux, Michael Esq QUALIFIED27Bernardo Dominic
1035Rodrigues CampainBrazil2026-04-21Rousseaux, Michael Esq NEGOTIATION14Elwin Sharvill
1036Emily WhobreySpain2026-04-22Buckley Miller Wright UNQUALIFIED36Elwin Sharvill
1037Silvio SlusarskiBrazil2026-04-21Buckley Miller Wright PROPOSAL68Stephen Shaw
1038Mujtaba NickaAustralia2026-04-07Printing Dimensions UNQUALIFIED38Ioni Bowcher
1039Ashley DoeFrance2026-05-04Commercial Press UNQUALIFIED65Asiya Javayant
1040Smith GlickAustralia2026-04-26Truhlar And Truhlar Attys UNQUALIFIED50Amy Elsner
1041Murillo MaletRussia2026-04-09Commercial Press UNQUALIFIED83Xuxue Feng
1042Jones VocelkaIndia2026-04-09Truhlar And Truhlar Attys NEGOTIATION13Amy Elsner
1043Sinclair WaycottBrazil2026-04-09Chemel, James L Cpa NEGOTIATION37Onyama Limba
1044Salvatore StockhamCanada2026-04-30Benton, John B Jr RENEWAL10Amy Elsner
1045Emily WhobreyArgentina2026-04-29Commercial Press UNQUALIFIED75Stephen Shaw
1046Francesco ShinkoFrance2026-05-02Feiner Bros QUALIFIED5Ioni Bowcher
1047Deepesh ChuiUnited Kingdom2026-04-24Chapman, Ross E Esq QUALIFIED79Bernardo Dominic
1048Wickens NestleCanada2026-04-14Feltz Printing Service QUALIFIED54Asiya Javayant
1049Jefferson SchemmerSpain2026-04-07Rangoni Of Florence RENEWAL46Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Aditya KuskoIndiaAsiya Javayant PROPOSAL
Ashley DoeCanadaAsiya Javayant NEW
Kadeem FlosiBrazilAnna Fali UNQUALIFIED
Ashley DoeAustraliaIoni Bowcher PROPOSAL
Arvin AlbaresSpainIvan Magalhaes UNQUALIFIED
Darci PoquetteIndiaStephen Shaw QUALIFIED
Jefferson SchemmerItalyElwin Sharvill QUALIFIED
Claire TollnerJapanBernardo Dominic QUALIFIED
Cody SaylorsGermanyIvan Magalhaes UNQUALIFIED
Julie StensethItalyStephen Shaw RENEWAL
Ashley DoeUnited KingdomXuxue Feng QUALIFIED
Morrow RutaIndiaIoni Bowcher NEW
Sinclair WaycottSpainAnna Fali PROPOSAL
Kadeem FlosiItalyIoni Bowcher NEW
Jeanfrancois VenereFranceBernardo Dominic QUALIFIED
Maria MarrierSpainBernardo Dominic NEW
Darci PoquetteRussiaAsiya Javayant NEW
Juan WieserRussiaIvan Magalhaes PROPOSAL
Clifford RimSpainBernardo Dominic NEW
Octavia MaletCanadaAnna Fali UNQUALIFIED
Ricardo GauchoGermanyAmy Elsner PROPOSAL
Leon OldroydJapanOnyama Limba NEW
Maisha RulapaughArgentinaAnna Fali PROPOSAL
Alejandro PerinBrazilBernardo Dominic RENEWAL
Jones VocelkaIndiaAsiya Javayant NEW
Jones VocelkaArgentinaOnyama Limba RENEWAL
Silvio SlusarskiCanadaBernardo Dominic QUALIFIED
Misaki RoysterUnited KingdomElwin Sharvill RENEWAL
Jefferson SchemmerArgentinaElwin Sharvill RENEWAL
Silvio SlusarskiSpainAnna Fali PROPOSAL
Ivar PaprockiUnited KingdomIvan Magalhaes PROPOSAL
Rodrigues CampainJapanStephen Shaw UNQUALIFIED
Jennifer AmigonArgentinaStephen Shaw NEGOTIATION
Nicolas IturbideGermanyBernardo Dominic QUALIFIED
Morrow RutaAustraliaIvan Magalhaes PROPOSAL
Kadeem FlosiUnited KingdomAmy Elsner RENEWAL
Maria MarrierIndiaStephen Shaw QUALIFIED
Greenwood BologniaCanadaElwin Sharvill PROPOSAL
Tony FollerRussiaStephen Shaw UNQUALIFIED
Silvio SlusarskiRussiaIoni Bowcher NEGOTIATION
Munro FerenczItalyElwin Sharvill NEGOTIATION
Greenwood BologniaJapanAsiya Javayant NEGOTIATION
Alejandro PerinGermanyAmy Elsner NEGOTIATION
Mayumi KolmetzFranceAsiya Javayant NEW
Jeanfrancois VenereBrazilAnna Fali RENEWAL
Jefferson SchemmerGermanyStephen Shaw NEW
Cody SaylorsGermanyElwin Sharvill QUALIFIED
Johnson SergiIndiaAnna Fali RENEWAL
Maria MarrierBrazilBernardo Dominic RENEWAL
Ashley DoeArgentinaAnna Fali NEGOTIATION
Frozen Columns
Name
Silvio Slusarski
Emily Whobrey
Ashley Doe
Munro Ferencz
Clifford Rim
Munro Ferencz
Costa Dilliard
Clifford Rim
Isabel Bowley
Jones Vocelka
Leja Caldarera
Octavia Malet
Claire Tollner
Leja Caldarera
Aika Inouye
Clifford Rim
Arvin Albares
Misaki Royster
Francesco Shinko
Darci Poquette
Leja Caldarera
Nicolas Iturbide
Ashley Doe
Deepesh Chui
Jeanfrancois Venere
Jefferson Schemmer
Misaki Royster
Leja Caldarera
Deepesh Chui
Emily Whobrey
Deepesh Chui
Salvatore Stockham
Deepesh Chui
Silvio Slusarski
Faith Gillian
Antonio Caudy
Darci Poquette
Aika Inouye
Sinclair Waycott
Leja Caldarera
Arvin Albares
Adams Morasca
Aruna Figeroa
Antonio Caudy
Alejandro Perin
Darci Poquette
Sinclair Waycott
Aika Inouye
David Darakjy
Izzy Garufi
IdCountryDate
1000India2026-05-04
1001India2026-04-25
1002United Kingdom2026-04-08
1003India2026-04-18
1004Argentina2026-04-17
1005Japan2026-05-02
1006India2026-04-15
1007Japan2026-04-11
1008Russia2026-05-01
1009Canada2026-04-24
1010France2026-04-19
1011Canada2026-04-17
1012Italy2026-05-03
1013Spain2026-04-07
1014Spain2026-04-25
1015Spain2026-04-07
1016Canada2026-04-30
1017Italy2026-05-03
1018France2026-04-23
1019Brazil2026-05-04
1020Russia2026-05-02
1021Australia2026-04-22
1022Japan2026-04-10
1023Australia2026-05-01
1024Brazil2026-04-16
1025Argentina2026-04-10
1026Russia2026-04-13
1027Canada2026-04-13
1028United Kingdom2026-04-19
1029Argentina2026-04-13
1030Italy2026-04-13
1031India2026-04-23
1032Argentina2026-04-23
1033Italy2026-04-17
1034Brazil2026-04-23
1035Italy2026-04-17
1036Argentina2026-04-09
1037United Kingdom2026-04-22
1038Argentina2026-05-02
1039Spain2026-04-16
1040India2026-04-20
1041United Kingdom2026-04-17
1042Spain2026-04-16
1043Spain2026-04-30
1044Japan2026-04-14
1045Italy2026-04-19
1046Germany2026-04-08
1047United Kingdom2026-04-11
1048Brazil2026-04-13
1049Japan2026-05-05

On-Demand Data

NameIdCountryDate
Antonio Caudy1000United Kingdom2026-04-19
Smith Glick1001United Kingdom2026-04-16
Claire Tollner1002France2026-04-16
Cody Saylors1003United Kingdom2026-04-09
Chavez Briddick1004Germany2026-04-11
Clifford Rim1005Japan2026-04-25
Maisha Rulapaugh1006Russia2026-04-19
Maria Marrier1007Italy2026-05-04
Mayumi Kolmetz1008Brazil2026-04-14
Aruna Figeroa1009Japan2026-04-23
Ricardo Gaucho1010France2026-05-01
Julie Stenseth1011Germany2026-04-19
Mayumi Kolmetz1012Germany2026-05-02
Ashley Doe1013Australia2026-04-15
Murillo Malet1014France2026-04-15
Salvatore Stockham1015India2026-04-24
Wickens Nestle1016Brazil2026-04-26
Maria Marrier1017Italy2026-05-03
Jeanfrancois Venere1018Russia2026-04-08
Adams Morasca1019Italy2026-04-24
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aika InouyeUnited KingdomStephen Shaw NEGOTIATION
Maria MarrierIndiaAmy Elsner QUALIFIED
Jefferson SchemmerUnited KingdomIoni Bowcher NEW
Misaki RoysterSpainElwin Sharvill RENEWAL
Isabel BowleyArgentinaElwin Sharvill PROPOSAL
Wickens NestleItalyAmy Elsner NEGOTIATION
Misaki RoysterSpainOnyama Limba PROPOSAL
Kadeem FlosiItalyOnyama Limba RENEWAL
Sinclair WaycottRussiaAnna Fali NEW
Jennifer AmigonUnited KingdomAnna Fali NEW
Julie StensethFranceXuxue Feng UNQUALIFIED
Claire TollnerArgentinaAnna Fali QUALIFIED
Smith GlickArgentinaAmy Elsner QUALIFIED
Jennifer AmigonAustraliaBernardo Dominic NEGOTIATION
Salvatore StockhamItalyBernardo Dominic NEW
Misaki RoysterArgentinaElwin Sharvill QUALIFIED
Aika InouyeIndiaAsiya Javayant QUALIFIED
Ashley DoeRussiaIoni Bowcher UNQUALIFIED
Maisha RulapaughFranceOnyama Limba UNQUALIFIED
Darci PoquetteAustraliaIoni Bowcher QUALIFIED
Adams MorascaCanadaStephen Shaw QUALIFIED
Wickens NestleFranceIoni Bowcher QUALIFIED
Mujtaba NickaCanadaIvan Magalhaes UNQUALIFIED
Octavia MaletJapanBernardo Dominic QUALIFIED
Johnson SergiArgentinaAsiya Javayant UNQUALIFIED
Antonio CaudyItalyAmy Elsner PROPOSAL
Juan WieserArgentinaXuxue Feng RENEWAL
Morrow RutaArgentinaOnyama Limba NEW
Rodrigues CampainBrazilIoni Bowcher QUALIFIED
Octavia MaletJapanIoni Bowcher PROPOSAL
Jennifer AmigonSpainOnyama Limba NEW
Faith GillianSpainStephen Shaw RENEWAL
Julie StensethItalyIoni Bowcher QUALIFIED
Francesco ShinkoJapanAnna Fali QUALIFIED
Mayumi KolmetzItalyIvan Magalhaes UNQUALIFIED
Ashley DoeFranceAmy Elsner RENEWAL
Jennifer AmigonItalyBernardo Dominic QUALIFIED
Stacey MacleadGermanyAmy Elsner PROPOSAL
Izzy GarufiCanadaOnyama Limba RENEWAL
Octavia MaletSpainStephen Shaw NEW

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