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
Salvatore StockhamRussiaOnyama Limba NEW
Kaitlin OstroskyAustraliaBernardo Dominic UNQUALIFIED
Adams MorascaItalyIvan Magalhaes UNQUALIFIED
Ashley DoeBrazilAnna Fali QUALIFIED
Costa DilliardCanadaXuxue Feng NEW
Kaitlin OstroskyBrazilXuxue Feng NEW
James ButtUnited KingdomOnyama Limba NEW
Smith GlickRussiaAmy Elsner NEW
Aditya KuskoIndiaIoni Bowcher QUALIFIED
Darci PoquetteArgentinaAsiya Javayant NEGOTIATION
Silvio SlusarskiItalyIvan Magalhaes RENEWAL
Aika InouyeBrazilIvan Magalhaes NEW
Faith GillianFranceElwin Sharvill UNQUALIFIED
Stacey MacleadBrazilOnyama Limba NEW
Stacey MacleadRussiaAmy Elsner QUALIFIED
Morrow RutaItalyOnyama Limba UNQUALIFIED
Leja CaldareraUnited KingdomIvan Magalhaes PROPOSAL
Deepesh ChuiArgentinaAsiya Javayant RENEWAL
Juan WieserJapanStephen Shaw RENEWAL
Adams MorascaFranceOnyama Limba QUALIFIED
Ashley DoeBrazilIvan Magalhaes UNQUALIFIED
Munro FerenczFranceAmy Elsner UNQUALIFIED
Aruna FigeroaItalyBernardo Dominic UNQUALIFIED
Aika InouyeBrazilIvan Magalhaes PROPOSAL
Jennifer AmigonGermanyElwin Sharvill NEGOTIATION
Ricardo GauchoCanadaStephen Shaw NEGOTIATION
Aditya KuskoRussiaOnyama Limba UNQUALIFIED
Nicolas IturbideItalyIoni Bowcher RENEWAL
Aruna FigeroaArgentinaIvan Magalhaes QUALIFIED
Salvatore StockhamJapanOnyama Limba QUALIFIED
Nicolas IturbideBrazilStephen Shaw NEW
Misaki RoysterCanadaAmy Elsner UNQUALIFIED
Jefferson SchemmerRussiaAmy Elsner RENEWAL
Jeanfrancois VenereItalyXuxue Feng RENEWAL
Mujtaba NickaArgentinaOnyama Limba PROPOSAL
James ButtBrazilStephen Shaw UNQUALIFIED
Mayumi KolmetzRussiaIoni Bowcher UNQUALIFIED
Cody SaylorsArgentinaAsiya Javayant QUALIFIED
Leja CaldareraJapanAmy Elsner NEGOTIATION
Jeanfrancois VenereRussiaAmy Elsner NEGOTIATION
Costa DilliardItalyIvan Magalhaes UNQUALIFIED
Izzy GarufiRussiaStephen Shaw PROPOSAL
Aruna FigeroaRussiaXuxue Feng RENEWAL
Maria MarrierBrazilBernardo Dominic UNQUALIFIED
Jennifer AmigonAustraliaIoni Bowcher PROPOSAL
Antonio CaudyRussiaIoni Bowcher UNQUALIFIED
Darci PoquetteUnited KingdomIvan Magalhaes NEW
Arvin AlbaresUnited KingdomStephen Shaw UNQUALIFIED
Aruna FigeroaGermanyAmy Elsner QUALIFIED
Kaitlin OstroskyAustraliaAsiya Javayant PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Stacey MacleadArgentinaAsiya Javayant PROPOSAL
Ivar PaprockiRussiaIoni Bowcher RENEWAL
Maisha RulapaughItalyBernardo Dominic NEW
Claire TollnerSpainIoni Bowcher QUALIFIED
Rodrigues CampainGermanyOnyama Limba NEW
Adams MorascaCanadaOnyama Limba UNQUALIFIED
Sinclair WaycottSpainOnyama Limba QUALIFIED
Stacey MacleadUnited KingdomStephen Shaw UNQUALIFIED
Nicolas IturbideJapanAmy Elsner UNQUALIFIED
Greenwood BologniaItalyIvan Magalhaes RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Claire TollnerSpain2026-05-21Feiner Bros RENEWAL52Bernardo Dominic
1001Misaki RoysterBrazil2026-06-02Chemel, James L Cpa RENEWAL13Ivan Magalhaes
1002Jennifer AmigonGermany2026-06-09Chemel, James L Cpa PROPOSAL95Ivan Magalhaes
1003Kadeem FlosiGermany2026-06-06Chapman, Ross E Esq PROPOSAL82Bernardo Dominic
1004James ButtGermany2026-05-18Commercial Press RENEWAL63Ioni Bowcher
1005Ivar PaprockiIndia2026-06-09Rangoni Of Florence UNQUALIFIED86Stephen Shaw
1006Juan WieserAustralia2026-06-03Rangoni Of Florence PROPOSAL87Xuxue Feng
1007Julie StensethRussia2026-06-08Feiner Bros PROPOSAL85Stephen Shaw
1008Octavia MaletCanada2026-05-27Commercial Press QUALIFIED98Stephen Shaw
1009Sinclair WaycottCanada2026-05-28Chapman, Ross E Esq UNQUALIFIED85Ivan Magalhaes
1010Johnson SergiSpain2026-05-19Morlong Associates UNQUALIFIED56Elwin Sharvill
1011Kaitlin OstroskyJapan2026-06-12Feltz Printing Service QUALIFIED67Xuxue Feng
1012Morrow RutaRussia2026-05-27Buckley Miller Wright NEW90Amy Elsner
1013Johnson SergiRussia2026-06-08Feiner Bros RENEWAL96Ivan Magalhaes
1014Costa DilliardBrazil2026-06-09Rousseaux, Michael Esq QUALIFIED98Stephen Shaw
1015Antonio CaudyAustralia2026-05-28Rousseaux, Michael Esq RENEWAL19Ivan Magalhaes
1016Adams MorascaCanada2026-06-09Buckley Miller Wright RENEWAL45Amy Elsner
1017James ButtArgentina2026-05-19King, Christopher A Esq PROPOSAL14Bernardo Dominic
1018Misaki RoysterJapan2026-05-20King, Christopher A Esq NEW77Asiya Javayant
1019Leon OldroydUnited Kingdom2026-05-20Chemel, James L Cpa PROPOSAL52Elwin Sharvill
1020Smith GlickUnited Kingdom2026-06-09Chapman, Ross E Esq QUALIFIED48Stephen Shaw
1021Mujtaba NickaJapan2026-05-17Printing Dimensions PROPOSAL15Xuxue Feng
1022Aruna FigeroaFrance2026-06-10Printing Dimensions QUALIFIED98Ioni Bowcher
1023Claire TollnerUnited Kingdom2026-06-02Truhlar And Truhlar Attys UNQUALIFIED23Stephen Shaw
1024Stacey MacleadSpain2026-05-27King, Christopher A Esq UNQUALIFIED17Anna Fali
1025Leja CaldareraGermany2026-05-27Rousseaux, Michael Esq RENEWAL24Ivan Magalhaes
1026Cody SaylorsItaly2026-06-11Feiner Bros QUALIFIED35Amy Elsner
1027Mayumi KolmetzGermany2026-05-26Rangoni Of Florence NEW4Ivan Magalhaes
1028Aruna FigeroaItaly2026-06-06Chapman, Ross E Esq NEGOTIATION66Xuxue Feng
1029Costa DilliardGermany2026-05-18Commercial Press NEW2Ivan Magalhaes
1030Mujtaba NickaJapan2026-05-22Buckley Miller Wright NEGOTIATION38Xuxue Feng
1031Munro FerenczAustralia2026-05-27Printing Dimensions UNQUALIFIED14Stephen Shaw
1032Antonio CaudyAustralia2026-05-27Printing Dimensions NEW7Stephen Shaw
1033Stacey MacleadFrance2026-05-18Rousseaux, Michael Esq NEW44Onyama Limba
1034Leon OldroydAustralia2026-06-10Morlong Associates NEW27Anna Fali
1035Adams MorascaJapan2026-06-13King, Christopher A Esq PROPOSAL84Elwin Sharvill
1036Juan WieserSpain2026-06-03Chapman, Ross E Esq UNQUALIFIED84Stephen Shaw
1037Ashley DoeAustralia2026-05-18Benton, John B Jr QUALIFIED28Amy Elsner
1038Francesco ShinkoArgentina2026-05-19Commercial Press QUALIFIED41Elwin Sharvill
1039Izzy GarufiGermany2026-05-28Rousseaux, Michael Esq NEW43Anna Fali
1040Ricardo GauchoGermany2026-06-14Dorl, James J Esq NEW1Bernardo Dominic
1041Clifford RimItaly2026-05-26Chemel, James L Cpa RENEWAL80Ioni Bowcher
1042Aditya KuskoFrance2026-06-12Chanay, Jeffrey A Esq PROPOSAL37Asiya Javayant
1043Nicolas IturbideArgentina2026-06-02Chemel, James L Cpa UNQUALIFIED31Ioni Bowcher
1044Maisha RulapaughItaly2026-06-01Buckley Miller Wright NEW94Xuxue Feng
1045Cody SaylorsBrazil2026-05-24Morlong Associates QUALIFIED28Asiya Javayant
1046Stacey MacleadRussia2026-06-13Printing Dimensions QUALIFIED67Amy Elsner
1047Silvio SlusarskiItaly2026-05-17Chapman, Ross E Esq NEW0Ivan Magalhaes
1048Maisha RulapaughSpain2026-06-12Rangoni Of Florence NEW33Asiya Javayant
1049Mujtaba NickaGermany2026-06-15Feiner Bros QUALIFIED80Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Smith GlickUnited KingdomIvan Magalhaes UNQUALIFIED
Maisha RulapaughRussiaBernardo Dominic RENEWAL
Murillo MaletUnited KingdomStephen Shaw UNQUALIFIED
Arvin AlbaresGermanyAmy Elsner NEW
Kadeem FlosiAustraliaAsiya Javayant NEW
Octavia MaletIndiaAnna Fali UNQUALIFIED
Leja CaldareraBrazilOnyama Limba UNQUALIFIED
Stacey MacleadUnited KingdomAsiya Javayant PROPOSAL
Antonio CaudySpainBernardo Dominic NEW
Silvio SlusarskiRussiaIvan Magalhaes NEGOTIATION
Wickens NestleBrazilIvan Magalhaes NEGOTIATION
Wickens NestleIndiaOnyama Limba NEGOTIATION
Kaitlin OstroskySpainAnna Fali UNQUALIFIED
Murillo MaletIndiaElwin Sharvill UNQUALIFIED
Emily WhobreyCanadaAnna Fali NEW
James ButtItalyAsiya Javayant QUALIFIED
James ButtFranceOnyama Limba UNQUALIFIED
Mayumi KolmetzCanadaAmy Elsner NEW
Claire TollnerAustraliaIvan Magalhaes NEGOTIATION
Smith GlickUnited KingdomXuxue Feng QUALIFIED
Sinclair WaycottAustraliaIoni Bowcher NEW
Aika InouyeSpainElwin Sharvill PROPOSAL
Octavia MaletUnited KingdomOnyama Limba PROPOSAL
Julie StensethJapanBernardo Dominic UNQUALIFIED
Adams MorascaUnited KingdomOnyama Limba UNQUALIFIED
Kadeem FlosiGermanyIvan Magalhaes PROPOSAL
Julie StensethJapanBernardo Dominic NEW
Darci PoquetteUnited KingdomAsiya Javayant RENEWAL
Leon OldroydIndiaXuxue Feng RENEWAL
Wickens NestleAustraliaOnyama Limba NEGOTIATION
Francesco ShinkoIndiaStephen Shaw NEW
Rodrigues CampainSpainAsiya Javayant RENEWAL
Greenwood BologniaAustraliaAsiya Javayant QUALIFIED
Jefferson SchemmerUnited KingdomStephen Shaw QUALIFIED
Maria MarrierSpainIoni Bowcher UNQUALIFIED
Octavia MaletGermanyIvan Magalhaes RENEWAL
Smith GlickAustraliaIvan Magalhaes NEGOTIATION
Emily WhobreyArgentinaOnyama Limba QUALIFIED
Aditya KuskoSpainBernardo Dominic UNQUALIFIED
Deepesh ChuiJapanIvan Magalhaes UNQUALIFIED
Clifford RimGermanyElwin Sharvill UNQUALIFIED
Leja CaldareraJapanBernardo Dominic RENEWAL
Misaki RoysterIndiaAsiya Javayant QUALIFIED
Johnson SergiItalyXuxue Feng QUALIFIED
Adams MorascaArgentinaOnyama Limba NEW
Murillo MaletSpainAnna Fali NEW
Johnson SergiFranceAmy Elsner QUALIFIED
Leon OldroydGermanyAsiya Javayant RENEWAL
Adams MorascaItalyAmy Elsner PROPOSAL
Tony FollerJapanAsiya Javayant RENEWAL
Frozen Columns
Name
Izzy Garufi
Isabel Bowley
Ivar Paprocki
Faith Gillian
Johnson Sergi
Octavia Malet
Misaki Royster
Octavia Malet
Ricardo Gaucho
Silvio Slusarski
Julie Stenseth
Clifford Rim
Emily Whobrey
Aruna Figeroa
Mujtaba Nicka
Emily Whobrey
David Darakjy
Tony Foller
Stacey Maclead
Munro Ferencz
Kaitlin Ostrosky
Jefferson Schemmer
Nicolas Iturbide
Maisha Rulapaugh
Jeanfrancois Venere
Maria Marrier
Ivar Paprocki
Leja Caldarera
Ashley Doe
Jefferson Schemmer
Maisha Rulapaugh
Jones Vocelka
Cody Saylors
Faith Gillian
Silvio Slusarski
Clifford Rim
Faith Gillian
Aruna Figeroa
Izzy Garufi
James Butt
Jones Vocelka
Kaitlin Ostrosky
Misaki Royster
Murillo Malet
Ashley Doe
Ricardo Gaucho
Silvio Slusarski
Maisha Rulapaugh
David Darakjy
Adams Morasca
IdCountryDate
1000Japan2026-06-05
1001Japan2026-06-15
1002Japan2026-06-15
1003Japan2026-06-12
1004India2026-05-29
1005Italy2026-05-23
1006Canada2026-05-29
1007Japan2026-06-01
1008Japan2026-05-17
1009India2026-05-31
1010United Kingdom2026-05-22
1011France2026-06-14
1012France2026-06-08
1013Spain2026-05-25
1014United Kingdom2026-06-04
1015Italy2026-06-13
1016Japan2026-05-17
1017Italy2026-06-02
1018Germany2026-06-12
1019Australia2026-06-09
1020Canada2026-05-31
1021Russia2026-06-06
1022Argentina2026-06-06
1023Spain2026-06-02
1024India2026-06-13
1025Japan2026-06-07
1026Spain2026-05-30
1027Japan2026-06-06
1028Spain2026-06-14
1029France2026-06-12
1030Germany2026-06-05
1031Canada2026-05-26
1032Russia2026-06-03
1033Russia2026-06-13
1034United Kingdom2026-05-31
1035Russia2026-06-08
1036Canada2026-05-26
1037Italy2026-06-10
1038Argentina2026-05-29
1039Australia2026-06-04
1040Argentina2026-05-17
1041Spain2026-05-20
1042Russia2026-06-13
1043Spain2026-06-06
1044Germany2026-06-11
1045France2026-05-18
1046India2026-06-03
1047Japan2026-06-15
1048Italy2026-06-01
1049Canada2026-05-25

On-Demand Data

NameIdCountryDate
Deepesh Chui1000France2026-05-22
Faith Gillian1001Japan2026-06-06
Morrow Ruta1002Russia2026-06-12
Darci Poquette1003Japan2026-05-17
Rodrigues Campain1004Australia2026-05-29
Antonio Caudy1005Japan2026-06-05
Rodrigues Campain1006Australia2026-05-31
Cody Saylors1007United Kingdom2026-06-04
Misaki Royster1008Argentina2026-05-30
Aika Inouye1009Argentina2026-05-21
Adams Morasca1010Spain2026-05-26
Stacey Maclead1011Brazil2026-06-02
Mayumi Kolmetz1012Japan2026-05-20
Smith Glick1013Japan2026-06-11
Darci Poquette1014Australia2026-06-04
Ashley Doe1015Russia2026-06-12
Antonio Caudy1016Australia2026-05-20
Cody Saylors1017Brazil2026-06-08
Emily Whobrey1018Australia2026-06-12
Emily Whobrey1019United Kingdom2026-06-13
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Francesco ShinkoJapanAmy Elsner NEGOTIATION
David DarakjyArgentinaXuxue Feng QUALIFIED
Adams MorascaArgentinaIoni Bowcher NEW
Cody SaylorsArgentinaIvan Magalhaes NEW
Antonio CaudyJapanAmy Elsner QUALIFIED
Jefferson SchemmerItalyAnna Fali PROPOSAL
David DarakjyUnited KingdomAnna Fali NEGOTIATION
Rodrigues CampainArgentinaAmy Elsner PROPOSAL
Isabel BowleyUnited KingdomElwin Sharvill QUALIFIED
Antonio CaudyUnited KingdomIvan Magalhaes UNQUALIFIED
Morrow RutaBrazilOnyama Limba UNQUALIFIED
Murillo MaletRussiaAnna Fali PROPOSAL
Leon OldroydFranceIvan Magalhaes RENEWAL
Ricardo GauchoAustraliaOnyama Limba UNQUALIFIED
Juan WieserGermanyXuxue Feng RENEWAL
Salvatore StockhamCanadaOnyama Limba NEW
Julie StensethAustraliaAnna Fali PROPOSAL
Antonio CaudyBrazilStephen Shaw RENEWAL
Claire TollnerIndiaStephen Shaw QUALIFIED
Emily WhobreyItalyAmy Elsner UNQUALIFIED
Aruna FigeroaArgentinaAsiya Javayant UNQUALIFIED
Ricardo GauchoAustraliaAmy Elsner RENEWAL
Faith GillianBrazilOnyama Limba PROPOSAL
Kadeem FlosiArgentinaIvan Magalhaes NEGOTIATION
Greenwood BologniaJapanIoni Bowcher QUALIFIED
Costa DilliardGermanyBernardo Dominic PROPOSAL
Silvio SlusarskiUnited KingdomIvan Magalhaes NEGOTIATION
Munro FerenczFranceIvan Magalhaes PROPOSAL
Cody SaylorsArgentinaAsiya Javayant NEW
Morrow RutaBrazilBernardo Dominic RENEWAL
Mayumi KolmetzItalyBernardo Dominic NEW
Nicolas IturbideIndiaBernardo Dominic NEGOTIATION
Ivar PaprockiGermanyAmy Elsner NEW
Francesco ShinkoBrazilStephen Shaw NEW
Mujtaba NickaAustraliaAnna Fali RENEWAL
Mayumi KolmetzGermanyIoni Bowcher NEW
Smith GlickItalyIoni Bowcher PROPOSAL
Munro FerenczItalyBernardo Dominic PROPOSAL
Aditya KuskoSpainStephen Shaw NEW
Faith GillianSpainAnna Fali 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>