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
James ButtGermanyOnyama Limba PROPOSAL
Ricardo GauchoUnited KingdomXuxue Feng QUALIFIED
Leja CaldareraUnited KingdomBernardo Dominic RENEWAL
Chavez BriddickBrazilAsiya Javayant NEW
Emily WhobreyGermanyIoni Bowcher RENEWAL
Deepesh ChuiFranceIoni Bowcher UNQUALIFIED
Adams MorascaGermanyBernardo Dominic PROPOSAL
David DarakjyJapanIvan Magalhaes NEGOTIATION
Francesco ShinkoCanadaAmy Elsner RENEWAL
Wickens NestleUnited KingdomStephen Shaw PROPOSAL
Maisha RulapaughItalyIoni Bowcher NEW
Misaki RoysterJapanXuxue Feng NEGOTIATION
Ashley DoeRussiaStephen Shaw NEW
Morrow RutaIndiaOnyama Limba QUALIFIED
Mayumi KolmetzIndiaAnna Fali NEW
Aditya KuskoUnited KingdomElwin Sharvill RENEWAL
Tony FollerAustraliaXuxue Feng NEGOTIATION
Leja CaldareraArgentinaBernardo Dominic PROPOSAL
Maisha RulapaughArgentinaStephen Shaw RENEWAL
Maisha RulapaughRussiaOnyama Limba RENEWAL
Aruna FigeroaArgentinaIoni Bowcher NEW
Adams MorascaIndiaAnna Fali QUALIFIED
Silvio SlusarskiUnited KingdomAnna Fali RENEWAL
Wickens NestleArgentinaAnna Fali RENEWAL
Leja CaldareraItalyAsiya Javayant NEGOTIATION
Wickens NestleFranceAnna Fali UNQUALIFIED
Francesco ShinkoGermanyBernardo Dominic NEW
Aditya KuskoUnited KingdomIoni Bowcher NEW
Silvio SlusarskiCanadaElwin Sharvill RENEWAL
Izzy GarufiCanadaAnna Fali NEGOTIATION
Sinclair WaycottRussiaElwin Sharvill NEGOTIATION
Izzy GarufiBrazilOnyama Limba NEGOTIATION
Tony FollerIndiaElwin Sharvill NEW
Octavia MaletFranceIvan Magalhaes RENEWAL
Faith GillianRussiaElwin Sharvill NEGOTIATION
Aruna FigeroaItalyIoni Bowcher NEW
Julie StensethUnited KingdomAnna Fali UNQUALIFIED
Ricardo GauchoJapanIoni Bowcher PROPOSAL
Costa DilliardItalyBernardo Dominic UNQUALIFIED
Kaitlin OstroskyIndiaIvan Magalhaes NEW
David DarakjyGermanyAsiya Javayant NEGOTIATION
Francesco ShinkoGermanyIvan Magalhaes NEW
Claire TollnerArgentinaIvan Magalhaes QUALIFIED
Clifford RimItalyAnna Fali RENEWAL
Darci PoquetteSpainXuxue Feng QUALIFIED
Murillo MaletFranceAsiya Javayant NEW
Ivar PaprockiJapanAmy Elsner PROPOSAL
Nicolas IturbideFranceAnna Fali UNQUALIFIED
Misaki RoysterUnited KingdomBernardo Dominic NEW
Nicolas IturbideAustraliaIvan Magalhaes NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Salvatore StockhamUnited KingdomAmy Elsner NEW
Isabel BowleyBrazilXuxue Feng NEW
Deepesh ChuiItalyBernardo Dominic PROPOSAL
Clifford RimRussiaAmy Elsner QUALIFIED
Francesco ShinkoArgentinaAnna Fali PROPOSAL
Silvio SlusarskiSpainAnna Fali RENEWAL
Johnson SergiSpainIvan Magalhaes NEW
Munro FerenczArgentinaAmy Elsner RENEWAL
Ivar PaprockiUnited KingdomElwin Sharvill UNQUALIFIED
Stacey MacleadSpainAsiya Javayant PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Kaitlin OstroskyGermany2026-05-02Chemel, James L Cpa UNQUALIFIED39Xuxue Feng
1001Greenwood BologniaUnited Kingdom2026-05-16Printing Dimensions PROPOSAL14Asiya Javayant
1002Kaitlin OstroskyCanada2026-04-24Chanay, Jeffrey A Esq QUALIFIED67Asiya Javayant
1003Juan WieserAustralia2026-05-01King, Christopher A Esq UNQUALIFIED52Ioni Bowcher
1004Alejandro PerinAustralia2026-05-12Dorl, James J Esq RENEWAL29Onyama Limba
1005Wickens NestleCanada2026-04-24King, Christopher A Esq NEGOTIATION68Elwin Sharvill
1006Ashley DoeArgentina2026-05-06Truhlar And Truhlar Attys NEW61Asiya Javayant
1007Izzy GarufiUnited Kingdom2026-04-30Benton, John B Jr QUALIFIED48Anna Fali
1008Rodrigues CampainItaly2026-05-11Dorl, James J Esq UNQUALIFIED74Asiya Javayant
1009Clifford RimCanada2026-05-22Dorl, James J Esq UNQUALIFIED45Asiya Javayant
1010Aditya KuskoRussia2026-05-06Printing Dimensions NEW83Stephen Shaw
1011Maisha RulapaughCanada2026-04-29Buckley Miller Wright PROPOSAL42Ioni Bowcher
1012Jennifer AmigonJapan2026-05-18Chemel, James L Cpa RENEWAL95Xuxue Feng
1013Jones VocelkaItaly2026-05-08Truhlar And Truhlar Attys NEW3Ivan Magalhaes
1014Antonio CaudyFrance2026-05-08Chapman, Ross E Esq NEGOTIATION60Stephen Shaw
1015Leja CaldareraGermany2026-05-06Chemel, James L Cpa NEGOTIATION76Amy Elsner
1016Ivar PaprockiAustralia2026-04-28Benton, John B Jr RENEWAL27Asiya Javayant
1017Costa DilliardRussia2026-05-21Chemel, James L Cpa NEW15Elwin Sharvill
1018Leja CaldareraUnited Kingdom2026-05-20Rangoni Of Florence RENEWAL6Ioni Bowcher
1019James ButtRussia2026-05-22Chanay, Jeffrey A Esq PROPOSAL52Amy Elsner
1020Kadeem FlosiCanada2026-05-09Chapman, Ross E Esq NEW30Elwin Sharvill
1021Izzy GarufiIndia2026-05-03Chanay, Jeffrey A Esq NEGOTIATION24Ioni Bowcher
1022Rodrigues CampainRussia2026-05-17Morlong Associates QUALIFIED84Stephen Shaw
1023Cody SaylorsBrazil2026-05-03Dorl, James J Esq UNQUALIFIED68Anna Fali
1024Kadeem FlosiCanada2026-05-15Dorl, James J Esq QUALIFIED57Asiya Javayant
1025Munro FerenczItaly2026-05-13Chemel, James L Cpa QUALIFIED56Elwin Sharvill
1026Johnson SergiRussia2026-05-02King, Christopher A Esq RENEWAL7Amy Elsner
1027Faith GillianCanada2026-05-18Chapman, Ross E Esq RENEWAL10Bernardo Dominic
1028Ivar PaprockiCanada2026-05-06Chemel, James L Cpa PROPOSAL67Onyama Limba
1029James ButtFrance2026-04-27Chapman, Ross E Esq QUALIFIED18Onyama Limba
1030Juan WieserAustralia2026-05-17Rousseaux, Michael Esq UNQUALIFIED53Onyama Limba
1031Ivar PaprockiSpain2026-04-27Commercial Press PROPOSAL68Ioni Bowcher
1032Alejandro PerinItaly2026-05-08Rangoni Of Florence NEGOTIATION87Onyama Limba
1033Claire TollnerUnited Kingdom2026-05-08Rangoni Of Florence RENEWAL22Amy Elsner
1034Misaki RoysterCanada2026-05-17Printing Dimensions RENEWAL29Ivan Magalhaes
1035Aditya KuskoBrazil2026-05-14Printing Dimensions NEW3Bernardo Dominic
1036Leja CaldareraRussia2026-04-26Chanay, Jeffrey A Esq NEW93Onyama Limba
1037Octavia MaletBrazil2026-05-02Printing Dimensions PROPOSAL63Ioni Bowcher
1038Silvio SlusarskiSpain2026-05-17Rousseaux, Michael Esq PROPOSAL62Onyama Limba
1039Misaki RoysterFrance2026-05-03Truhlar And Truhlar Attys RENEWAL62Stephen Shaw
1040Clifford RimUnited Kingdom2026-05-18Benton, John B Jr QUALIFIED71Amy Elsner
1041Jeanfrancois VenereBrazil2026-05-15Rangoni Of Florence NEGOTIATION2Bernardo Dominic
1042Costa DilliardIndia2026-05-10Chanay, Jeffrey A Esq QUALIFIED82Anna Fali
1043Stacey MacleadArgentina2026-04-28Printing Dimensions UNQUALIFIED15Amy Elsner
1044Clifford RimIndia2026-04-24King, Christopher A Esq RENEWAL6Stephen Shaw
1045Nicolas IturbideRussia2026-05-08Rousseaux, Michael Esq NEW22Stephen Shaw
1046Alejandro PerinRussia2026-05-05Benton, John B Jr QUALIFIED89Onyama Limba
1047Sinclair WaycottArgentina2026-05-04Chemel, James L Cpa UNQUALIFIED58Asiya Javayant
1048Faith GillianAustralia2026-04-25King, Christopher A Esq QUALIFIED29Ivan Magalhaes
1049Alejandro PerinFrance2026-05-15Buckley Miller Wright NEW14Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Tony FollerCanadaAnna Fali PROPOSAL
Emily WhobreyFranceAmy Elsner NEGOTIATION
David DarakjyJapanElwin Sharvill RENEWAL
Munro FerenczGermanyOnyama Limba NEGOTIATION
Jennifer AmigonRussiaAnna Fali PROPOSAL
Faith GillianCanadaOnyama Limba PROPOSAL
Misaki RoysterItalyIoni Bowcher UNQUALIFIED
Jones VocelkaAustraliaStephen Shaw PROPOSAL
Rodrigues CampainArgentinaAmy Elsner NEGOTIATION
Maisha RulapaughFranceAnna Fali NEGOTIATION
Clifford RimFranceXuxue Feng RENEWAL
Ashley DoeUnited KingdomAsiya Javayant UNQUALIFIED
Murillo MaletBrazilAmy Elsner NEGOTIATION
Tony FollerCanadaElwin Sharvill RENEWAL
Wickens NestleBrazilAnna Fali RENEWAL
Costa DilliardGermanyStephen Shaw PROPOSAL
Johnson SergiItalyAnna Fali RENEWAL
Kadeem FlosiGermanyIvan Magalhaes NEGOTIATION
Deepesh ChuiIndiaBernardo Dominic NEGOTIATION
Clifford RimUnited KingdomAsiya Javayant QUALIFIED
Johnson SergiAustraliaAsiya Javayant NEGOTIATION
Aruna FigeroaCanadaBernardo Dominic PROPOSAL
Clifford RimJapanAnna Fali NEGOTIATION
Aika InouyeJapanAsiya Javayant QUALIFIED
Johnson SergiFranceXuxue Feng QUALIFIED
Salvatore StockhamIndiaAnna Fali NEW
Wickens NestleAustraliaBernardo Dominic PROPOSAL
Tony FollerCanadaElwin Sharvill QUALIFIED
Jeanfrancois VenereArgentinaXuxue Feng NEGOTIATION
Ivar PaprockiJapanOnyama Limba QUALIFIED
Faith GillianBrazilBernardo Dominic QUALIFIED
Mayumi KolmetzCanadaStephen Shaw RENEWAL
Maria MarrierAustraliaOnyama Limba QUALIFIED
Jennifer AmigonBrazilXuxue Feng NEGOTIATION
Rodrigues CampainArgentinaStephen Shaw QUALIFIED
Aika InouyeRussiaIvan Magalhaes PROPOSAL
Claire TollnerFranceIoni Bowcher NEW
Morrow RutaArgentinaOnyama Limba QUALIFIED
Munro FerenczUnited KingdomElwin Sharvill RENEWAL
Alejandro PerinItalyXuxue Feng QUALIFIED
Munro FerenczArgentinaElwin Sharvill RENEWAL
Adams MorascaBrazilBernardo Dominic QUALIFIED
Adams MorascaAustraliaBernardo Dominic NEGOTIATION
Murillo MaletArgentinaBernardo Dominic NEW
Clifford RimUnited KingdomOnyama Limba PROPOSAL
Faith GillianGermanyAnna Fali QUALIFIED
Ashley DoeUnited KingdomIvan Magalhaes NEW
Claire TollnerRussiaBernardo Dominic NEW
Mujtaba NickaFranceIvan Magalhaes NEW
Darci PoquetteSpainElwin Sharvill NEGOTIATION
Frozen Columns
Name
Wickens Nestle
Aika Inouye
Chavez Briddick
Emily Whobrey
Aditya Kusko
Maisha Rulapaugh
Costa Dilliard
Deepesh Chui
Jefferson Schemmer
Isabel Bowley
James Butt
Murillo Malet
Nicolas Iturbide
Murillo Malet
Smith Glick
Nicolas Iturbide
Wickens Nestle
Maisha Rulapaugh
Mayumi Kolmetz
Juan Wieser
Murillo Malet
Morrow Ruta
Julie Stenseth
Claire Tollner
Clifford Rim
Jennifer Amigon
Leon Oldroyd
Sinclair Waycott
Johnson Sergi
Aditya Kusko
Costa Dilliard
Claire Tollner
Aika Inouye
Johnson Sergi
Johnson Sergi
Munro Ferencz
Aruna Figeroa
Izzy Garufi
Johnson Sergi
Ivar Paprocki
Faith Gillian
Leja Caldarera
Darci Poquette
Mujtaba Nicka
Aika Inouye
Munro Ferencz
Mayumi Kolmetz
Johnson Sergi
Alejandro Perin
Tony Foller
IdCountryDate
1000Russia2026-05-16
1001Canada2026-04-23
1002Italy2026-05-09
1003United Kingdom2026-05-03
1004Australia2026-05-22
1005Italy2026-05-09
1006France2026-05-18
1007Russia2026-05-01
1008Italy2026-05-10
1009Canada2026-05-05
1010Argentina2026-05-12
1011Canada2026-05-12
1012Germany2026-05-12
1013Germany2026-05-17
1014United Kingdom2026-05-17
1015France2026-04-27
1016India2026-04-27
1017Australia2026-05-07
1018Spain2026-04-28
1019Australia2026-05-03
1020Brazil2026-05-15
1021Argentina2026-04-30
1022Australia2026-05-17
1023Germany2026-05-04
1024India2026-04-23
1025Japan2026-04-25
1026Italy2026-05-21
1027Canada2026-05-05
1028Argentina2026-05-16
1029Italy2026-05-02
1030Germany2026-05-04
1031Japan2026-05-12
1032Italy2026-05-08
1033Australia2026-05-09
1034United Kingdom2026-04-30
1035Canada2026-05-07
1036France2026-04-25
1037Canada2026-05-03
1038France2026-04-25
1039Argentina2026-05-13
1040Brazil2026-04-30
1041United Kingdom2026-05-13
1042India2026-05-10
1043Spain2026-05-17
1044Argentina2026-05-06
1045Japan2026-05-18
1046Italy2026-05-07
1047France2026-05-07
1048Spain2026-05-22
1049Canada2026-05-05

On-Demand Data

NameIdCountryDate
Kadeem Flosi1000Japan2026-05-04
Adams Morasca1001Australia2026-05-08
Deepesh Chui1002United Kingdom2026-04-25
Julie Stenseth1003United Kingdom2026-04-29
Aika Inouye1004Australia2026-05-21
Darci Poquette1005India2026-05-18
Morrow Ruta1006Japan2026-04-28
Octavia Malet1007Spain2026-04-29
Smith Glick1008Australia2026-04-23
Greenwood Bolognia1009Italy2026-05-04
Nicolas Iturbide1010Italy2026-05-22
Juan Wieser1011United Kingdom2026-04-26
Francesco Shinko1012Australia2026-05-06
Faith Gillian1013Australia2026-05-07
Leon Oldroyd1014India2026-05-09
Leon Oldroyd1015Spain2026-05-22
David Darakjy1016Australia2026-05-22
Leon Oldroyd1017Germany2026-05-12
Nicolas Iturbide1018India2026-05-12
Maisha Rulapaugh1019France2026-05-06
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Leon OldroydFranceXuxue Feng PROPOSAL
Aruna FigeroaCanadaAmy Elsner QUALIFIED
Wickens NestleCanadaAsiya Javayant NEGOTIATION
Ashley DoeCanadaElwin Sharvill UNQUALIFIED
Salvatore StockhamAustraliaAmy Elsner NEGOTIATION
Maria MarrierBrazilXuxue Feng NEGOTIATION
Wickens NestleUnited KingdomIoni Bowcher PROPOSAL
Wickens NestleFranceStephen Shaw NEGOTIATION
Ricardo GauchoFranceElwin Sharvill NEW
Jefferson SchemmerCanadaOnyama Limba NEGOTIATION
Mujtaba NickaAustraliaBernardo Dominic PROPOSAL
Maria MarrierItalyOnyama Limba NEGOTIATION
Mayumi KolmetzArgentinaIoni Bowcher RENEWAL
Maisha RulapaughBrazilIvan Magalhaes UNQUALIFIED
Sinclair WaycottCanadaIoni Bowcher UNQUALIFIED
Adams MorascaIndiaXuxue Feng RENEWAL
Jennifer AmigonGermanyOnyama Limba RENEWAL
Aika InouyeItalyBernardo Dominic NEGOTIATION
Jeanfrancois VenereCanadaAmy Elsner RENEWAL
Wickens NestleItalyElwin Sharvill QUALIFIED
Aditya KuskoCanadaStephen Shaw NEGOTIATION
Ivar PaprockiBrazilXuxue Feng RENEWAL
Costa DilliardBrazilIvan Magalhaes QUALIFIED
Aruna FigeroaCanadaIvan Magalhaes RENEWAL
Jefferson SchemmerRussiaOnyama Limba RENEWAL
Johnson SergiAustraliaXuxue Feng RENEWAL
Aika InouyeRussiaStephen Shaw NEW
Salvatore StockhamGermanyAmy Elsner UNQUALIFIED
Ricardo GauchoIndiaElwin Sharvill PROPOSAL
Sinclair WaycottArgentinaXuxue Feng NEW
Murillo MaletCanadaAmy Elsner QUALIFIED
Clifford RimUnited KingdomAnna Fali PROPOSAL
Mujtaba NickaBrazilOnyama Limba PROPOSAL
Julie StensethArgentinaOnyama Limba NEGOTIATION
Leon OldroydSpainAnna Fali PROPOSAL
Julie StensethJapanIoni Bowcher NEGOTIATION
Munro FerenczAustraliaIoni Bowcher PROPOSAL
Munro FerenczJapanAmy Elsner RENEWAL
Adams MorascaAustraliaIoni Bowcher UNQUALIFIED
Faith GillianSpainOnyama Limba 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>