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
Maisha RulapaughBrazilAmy Elsner RENEWAL
Antonio CaudyArgentinaXuxue Feng PROPOSAL
Mayumi KolmetzRussiaAsiya Javayant NEGOTIATION
Smith GlickFranceOnyama Limba NEGOTIATION
Morrow RutaFranceXuxue Feng NEGOTIATION
Morrow RutaUnited KingdomIoni Bowcher QUALIFIED
Isabel BowleyItalyIvan Magalhaes UNQUALIFIED
Munro FerenczRussiaElwin Sharvill RENEWAL
Salvatore StockhamAustraliaStephen Shaw NEW
Francesco ShinkoRussiaAmy Elsner NEW
Greenwood BologniaAustraliaIoni Bowcher QUALIFIED
Aika InouyeItalyIvan Magalhaes PROPOSAL
Smith GlickGermanyIoni Bowcher QUALIFIED
Rodrigues CampainRussiaAmy Elsner UNQUALIFIED
Aika InouyeAustraliaElwin Sharvill QUALIFIED
Darci PoquetteJapanIoni Bowcher PROPOSAL
Wickens NestleFranceIoni Bowcher UNQUALIFIED
Mayumi KolmetzBrazilXuxue Feng NEW
Claire TollnerRussiaStephen Shaw PROPOSAL
Juan WieserCanadaOnyama Limba NEGOTIATION
Aika InouyeFranceIoni Bowcher RENEWAL
Francesco ShinkoItalyBernardo Dominic UNQUALIFIED
Juan WieserCanadaOnyama Limba QUALIFIED
Ivar PaprockiItalyAmy Elsner NEGOTIATION
Julie StensethSpainAnna Fali PROPOSAL
Kaitlin OstroskyUnited KingdomAmy Elsner NEGOTIATION
Ashley DoeCanadaXuxue Feng QUALIFIED
Deepesh ChuiAustraliaAsiya Javayant NEW
Jennifer AmigonCanadaBernardo Dominic NEW
Murillo MaletArgentinaStephen Shaw QUALIFIED
Leon OldroydCanadaStephen Shaw UNQUALIFIED
Juan WieserBrazilElwin Sharvill PROPOSAL
Smith GlickJapanBernardo Dominic PROPOSAL
Faith GillianBrazilAmy Elsner UNQUALIFIED
Darci PoquetteFranceIoni Bowcher UNQUALIFIED
Mayumi KolmetzAustraliaAsiya Javayant PROPOSAL
Munro FerenczArgentinaAsiya Javayant QUALIFIED
Sinclair WaycottFranceStephen Shaw PROPOSAL
Smith GlickItalyElwin Sharvill NEW
Mayumi KolmetzItalyStephen Shaw RENEWAL
Adams MorascaBrazilIoni Bowcher PROPOSAL
Greenwood BologniaJapanAsiya Javayant UNQUALIFIED
Aruna FigeroaSpainAsiya Javayant QUALIFIED
Jones VocelkaArgentinaBernardo Dominic NEW
Aruna FigeroaSpainAnna Fali UNQUALIFIED
Silvio SlusarskiFranceXuxue Feng PROPOSAL
Mujtaba NickaIndiaAmy Elsner QUALIFIED
Aditya KuskoRussiaBernardo Dominic UNQUALIFIED
Munro FerenczUnited KingdomIoni Bowcher UNQUALIFIED
Stacey MacleadArgentinaElwin Sharvill PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Ivar PaprockiCanadaStephen Shaw NEGOTIATION
Johnson SergiBrazilAsiya Javayant NEGOTIATION
Maria MarrierRussiaStephen Shaw NEGOTIATION
Maria MarrierArgentinaElwin Sharvill QUALIFIED
Munro FerenczUnited KingdomAnna Fali NEGOTIATION
Kadeem FlosiIndiaIvan Magalhaes UNQUALIFIED
Deepesh ChuiFranceAsiya Javayant PROPOSAL
Clifford RimArgentinaAnna Fali NEW
Alejandro PerinItalyAmy Elsner PROPOSAL
Munro FerenczCanadaBernardo Dominic NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Izzy GarufiSpain2026-04-10Chanay, Jeffrey A Esq NEW58Onyama Limba
1001Ivar PaprockiSpain2026-04-09Benton, John B Jr NEW14Onyama Limba
1002Antonio CaudyAustralia2026-04-14Chapman, Ross E Esq QUALIFIED22Onyama Limba
1003Deepesh ChuiSpain2026-04-11Buckley Miller Wright NEGOTIATION61Xuxue Feng
1004James ButtUnited Kingdom2026-03-30Feltz Printing Service NEW93Onyama Limba
1005Morrow RutaItaly2026-04-18Benton, John B Jr UNQUALIFIED74Xuxue Feng
1006Wickens NestleSpain2026-04-06Morlong Associates NEGOTIATION89Ioni Bowcher
1007Darci PoquetteCanada2026-03-26Chemel, James L Cpa UNQUALIFIED34Ivan Magalhaes
1008Juan WieserArgentina2026-04-20Chemel, James L Cpa QUALIFIED42Stephen Shaw
1009Francesco ShinkoRussia2026-03-28Truhlar And Truhlar Attys QUALIFIED2Asiya Javayant
1010Emily WhobreyItaly2026-04-15Benton, John B Jr NEW24Anna Fali
1011Francesco ShinkoUnited Kingdom2026-04-15Feltz Printing Service RENEWAL80Onyama Limba
1012Aika InouyeCanada2026-04-04Chemel, James L Cpa QUALIFIED87Xuxue Feng
1013Chavez BriddickCanada2026-03-25Printing Dimensions PROPOSAL45Onyama Limba
1014Stacey MacleadArgentina2026-04-07Printing Dimensions RENEWAL41Ivan Magalhaes
1015Mayumi KolmetzIndia2026-04-10Dorl, James J Esq RENEWAL0Ivan Magalhaes
1016Salvatore StockhamFrance2026-03-31Commercial Press RENEWAL73Amy Elsner
1017James ButtIndia2026-04-08Rangoni Of Florence QUALIFIED40Stephen Shaw
1018Kadeem FlosiRussia2026-04-12Printing Dimensions RENEWAL58Bernardo Dominic
1019Sinclair WaycottFrance2026-03-30Rangoni Of Florence NEGOTIATION76Amy Elsner
1020Rodrigues CampainSpain2026-04-16Truhlar And Truhlar Attys PROPOSAL19Anna Fali
1021Johnson SergiUnited Kingdom2026-04-10Feiner Bros RENEWAL32Amy Elsner
1022Johnson SergiArgentina2026-04-07Truhlar And Truhlar Attys NEW59Elwin Sharvill
1023Mayumi KolmetzBrazil2026-04-10Rousseaux, Michael Esq NEGOTIATION48Asiya Javayant
1024Ricardo GauchoSpain2026-04-06Chanay, Jeffrey A Esq RENEWAL32Asiya Javayant
1025Jones VocelkaJapan2026-04-02Rangoni Of Florence QUALIFIED14Anna Fali
1026Deepesh ChuiUnited Kingdom2026-04-13Benton, John B Jr QUALIFIED70Onyama Limba
1027Emily WhobreyGermany2026-04-13Printing Dimensions QUALIFIED84Ivan Magalhaes
1028Mujtaba NickaBrazil2026-03-25Chemel, James L Cpa UNQUALIFIED62Ioni Bowcher
1029Aditya KuskoUnited Kingdom2026-04-17Buckley Miller Wright RENEWAL26Onyama Limba
1030Smith GlickJapan2026-04-12Commercial Press RENEWAL45Stephen Shaw
1031Claire TollnerFrance2026-03-28Printing Dimensions RENEWAL40Ioni Bowcher
1032Aika InouyeAustralia2026-04-03Chanay, Jeffrey A Esq NEW43Ioni Bowcher
1033Morrow RutaAustralia2026-04-02Feiner Bros QUALIFIED60Anna Fali
1034Ivar PaprockiArgentina2026-04-02Morlong Associates RENEWAL69Ivan Magalhaes
1035Octavia MaletAustralia2026-03-27Chanay, Jeffrey A Esq UNQUALIFIED79Stephen Shaw
1036Julie StensethFrance2026-04-02Feltz Printing Service QUALIFIED64Stephen Shaw
1037Silvio SlusarskiFrance2026-04-06Commercial Press NEW4Bernardo Dominic
1038Julie StensethArgentina2026-04-15Chapman, Ross E Esq NEW48Anna Fali
1039Kadeem FlosiBrazil2026-04-09Benton, John B Jr RENEWAL17Amy Elsner
1040Nicolas IturbideSpain2026-03-29Chemel, James L Cpa QUALIFIED25Stephen Shaw
1041Mujtaba NickaGermany2026-04-09Feiner Bros NEW89Asiya Javayant
1042Kaitlin OstroskyFrance2026-04-01Rousseaux, Michael Esq NEW81Stephen Shaw
1043Arvin AlbaresRussia2026-04-02Rangoni Of Florence UNQUALIFIED2Ioni Bowcher
1044Morrow RutaAustralia2026-04-01Commercial Press NEGOTIATION3Elwin Sharvill
1045Rodrigues CampainJapan2026-03-29Chanay, Jeffrey A Esq NEGOTIATION33Amy Elsner
1046Aditya KuskoAustralia2026-03-28Commercial Press QUALIFIED13Ivan Magalhaes
1047Johnson SergiIndia2026-04-06Buckley Miller Wright UNQUALIFIED32Amy Elsner
1048Morrow RutaIndia2026-04-09Printing Dimensions PROPOSAL47Amy Elsner
1049Sinclair WaycottRussia2026-04-12Morlong Associates QUALIFIED46Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Adams MorascaIndiaStephen Shaw PROPOSAL
James ButtCanadaAmy Elsner NEW
Maisha RulapaughRussiaOnyama Limba UNQUALIFIED
Izzy GarufiUnited KingdomBernardo Dominic QUALIFIED
Munro FerenczItalyIoni Bowcher NEGOTIATION
Faith GillianSpainAsiya Javayant NEGOTIATION
David DarakjyGermanyXuxue Feng PROPOSAL
Deepesh ChuiSpainXuxue Feng PROPOSAL
James ButtRussiaOnyama Limba UNQUALIFIED
Wickens NestleCanadaOnyama Limba UNQUALIFIED
Aika InouyeUnited KingdomAsiya Javayant NEW
David DarakjyRussiaAmy Elsner RENEWAL
Silvio SlusarskiBrazilAnna Fali RENEWAL
Munro FerenczGermanyElwin Sharvill UNQUALIFIED
Kaitlin OstroskyIndiaIvan Magalhaes RENEWAL
Jeanfrancois VenereIndiaAsiya Javayant UNQUALIFIED
Kaitlin OstroskyRussiaIoni Bowcher PROPOSAL
Wickens NestleArgentinaAsiya Javayant QUALIFIED
Ashley DoeRussiaStephen Shaw UNQUALIFIED
Jennifer AmigonFranceOnyama Limba NEGOTIATION
Izzy GarufiFranceXuxue Feng NEGOTIATION
Chavez BriddickAustraliaOnyama Limba PROPOSAL
Kaitlin OstroskyFranceXuxue Feng RENEWAL
Isabel BowleyRussiaBernardo Dominic NEW
Kaitlin OstroskyJapanIoni Bowcher RENEWAL
Emily WhobreyUnited KingdomXuxue Feng UNQUALIFIED
Faith GillianRussiaIvan Magalhaes RENEWAL
Faith GillianIndiaOnyama Limba NEGOTIATION
Clifford RimBrazilXuxue Feng NEW
Nicolas IturbideIndiaStephen Shaw RENEWAL
Aika InouyeAustraliaElwin Sharvill UNQUALIFIED
Aika InouyeCanadaAmy Elsner PROPOSAL
Murillo MaletRussiaAmy Elsner QUALIFIED
Adams MorascaAustraliaIoni Bowcher NEGOTIATION
Wickens NestleFranceAnna Fali UNQUALIFIED
Jeanfrancois VenereItalyIvan Magalhaes NEW
Arvin AlbaresIndiaBernardo Dominic NEGOTIATION
Chavez BriddickArgentinaAsiya Javayant NEGOTIATION
Arvin AlbaresBrazilAmy Elsner NEGOTIATION
Costa DilliardFranceAsiya Javayant UNQUALIFIED
Alejandro PerinJapanXuxue Feng QUALIFIED
Leon OldroydArgentinaIvan Magalhaes QUALIFIED
Silvio SlusarskiAustraliaOnyama Limba UNQUALIFIED
Jefferson SchemmerGermanyAsiya Javayant NEW
Juan WieserBrazilIoni Bowcher NEGOTIATION
Johnson SergiUnited KingdomIoni Bowcher UNQUALIFIED
Sinclair WaycottIndiaElwin Sharvill PROPOSAL
David DarakjyUnited KingdomOnyama Limba NEW
Jones VocelkaUnited KingdomAsiya Javayant QUALIFIED
Jennifer AmigonFranceAmy Elsner NEW
Frozen Columns
Name
Chavez Briddick
Alejandro Perin
Aruna Figeroa
Cody Saylors
Faith Gillian
Silvio Slusarski
Julie Stenseth
Mayumi Kolmetz
Munro Ferencz
James Butt
Leon Oldroyd
Maisha Rulapaugh
Johnson Sergi
Maisha Rulapaugh
Faith Gillian
Maria Marrier
Jefferson Schemmer
Claire Tollner
Johnson Sergi
Smith Glick
Ricardo Gaucho
Antonio Caudy
Maria Marrier
Isabel Bowley
Julie Stenseth
Francesco Shinko
Smith Glick
Ricardo Gaucho
Alejandro Perin
Octavia Malet
Greenwood Bolognia
Julie Stenseth
Francesco Shinko
Smith Glick
Smith Glick
Octavia Malet
Juan Wieser
Antonio Caudy
Murillo Malet
Misaki Royster
Costa Dilliard
Arvin Albares
Isabel Bowley
Antonio Caudy
Ricardo Gaucho
Murillo Malet
Leon Oldroyd
Murillo Malet
Octavia Malet
Rodrigues Campain
IdCountryDate
1000Australia2026-04-14
1001Spain2026-03-26
1002Russia2026-03-30
1003Canada2026-03-26
1004Italy2026-04-03
1005Germany2026-04-06
1006United Kingdom2026-04-07
1007Japan2026-04-15
1008Australia2026-03-30
1009France2026-03-30
1010Australia2026-04-10
1011Brazil2026-04-05
1012Spain2026-04-14
1013Germany2026-04-09
1014Argentina2026-04-04
1015Germany2026-04-18
1016France2026-04-15
1017Australia2026-04-04
1018India2026-04-19
1019Brazil2026-04-16
1020India2026-04-11
1021France2026-04-04
1022Japan2026-04-11
1023Brazil2026-04-22
1024France2026-03-24
1025Germany2026-04-16
1026Brazil2026-04-14
1027Germany2026-04-17
1028Germany2026-04-06
1029Russia2026-03-26
1030Russia2026-03-30
1031Japan2026-04-06
1032Japan2026-04-10
1033Brazil2026-04-16
1034Japan2026-04-02
1035Italy2026-04-17
1036Spain2026-04-17
1037Spain2026-04-16
1038Russia2026-04-08
1039France2026-03-25
1040United Kingdom2026-03-25
1041Italy2026-04-10
1042Spain2026-04-09
1043Spain2026-03-29
1044France2026-03-29
1045Japan2026-03-30
1046India2026-04-16
1047Argentina2026-04-19
1048Argentina2026-04-06
1049Russia2026-04-11

On-Demand Data

NameIdCountryDate
Juan Wieser1000Australia2026-03-30
Jefferson Schemmer1001Russia2026-04-01
Julie Stenseth1002United Kingdom2026-03-30
Jones Vocelka1003Italy2026-04-05
Jennifer Amigon1004Australia2026-04-03
Antonio Caudy1005Russia2026-03-25
Cody Saylors1006Japan2026-04-08
Rodrigues Campain1007Canada2026-04-05
Aditya Kusko1008Argentina2026-04-22
Isabel Bowley1009Japan2026-04-18
Morrow Ruta1010Brazil2026-03-30
Alejandro Perin1011Argentina2026-04-07
Claire Tollner1012Germany2026-04-05
Aruna Figeroa1013France2026-04-22
Kadeem Flosi1014Spain2026-03-26
Deepesh Chui1015Canada2026-03-28
Stacey Maclead1016United Kingdom2026-04-22
Johnson Sergi1017Argentina2026-04-20
Maria Marrier1018Germany2026-04-01
Misaki Royster1019United Kingdom2026-03-27
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Johnson SergiAustraliaOnyama Limba QUALIFIED
Tony FollerRussiaIvan Magalhaes RENEWAL
Mujtaba NickaJapanBernardo Dominic RENEWAL
Murillo MaletUnited KingdomElwin Sharvill UNQUALIFIED
Emily WhobreyGermanyAsiya Javayant RENEWAL
Jennifer AmigonBrazilAnna Fali NEGOTIATION
Wickens NestleItalyIvan Magalhaes QUALIFIED
Leja CaldareraItalyAmy Elsner NEW
Alejandro PerinCanadaAnna Fali QUALIFIED
Maisha RulapaughCanadaIvan Magalhaes UNQUALIFIED
Greenwood BologniaItalyIoni Bowcher NEW
Chavez BriddickArgentinaElwin Sharvill RENEWAL
Aditya KuskoJapanAnna Fali UNQUALIFIED
Deepesh ChuiSpainIoni Bowcher NEGOTIATION
Mayumi KolmetzRussiaOnyama Limba UNQUALIFIED
James ButtAustraliaIoni Bowcher RENEWAL
Rodrigues CampainJapanOnyama Limba QUALIFIED
Jennifer AmigonBrazilXuxue Feng QUALIFIED
Sinclair WaycottBrazilAmy Elsner NEW
Wickens NestleFranceElwin Sharvill QUALIFIED
Ricardo GauchoFranceAnna Fali UNQUALIFIED
Stacey MacleadUnited KingdomXuxue Feng NEGOTIATION
Adams MorascaRussiaBernardo Dominic PROPOSAL
Mayumi KolmetzSpainXuxue Feng NEW
Octavia MaletCanadaStephen Shaw PROPOSAL
Ivar PaprockiAustraliaIvan Magalhaes NEGOTIATION
Emily WhobreyJapanXuxue Feng RENEWAL
Darci PoquetteBrazilAnna Fali NEW
Misaki RoysterJapanStephen Shaw NEW
Salvatore StockhamSpainElwin Sharvill UNQUALIFIED
Ricardo GauchoJapanAsiya Javayant NEGOTIATION
Alejandro PerinGermanyXuxue Feng NEW
Claire TollnerArgentinaIvan Magalhaes NEGOTIATION
Clifford RimSpainIoni Bowcher QUALIFIED
Maria MarrierItalyOnyama Limba QUALIFIED
Antonio CaudyAustraliaStephen Shaw RENEWAL
Clifford RimUnited KingdomAmy Elsner NEW
Johnson SergiSpainAsiya Javayant RENEWAL
Adams MorascaArgentinaStephen Shaw QUALIFIED
Leon OldroydCanadaAmy Elsner NEGOTIATION

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