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
Stacey MacleadItalyAsiya Javayant NEW
Juan WieserGermanyIoni Bowcher UNQUALIFIED
Leja CaldareraIndiaXuxue Feng QUALIFIED
Kadeem FlosiRussiaStephen Shaw RENEWAL
Silvio SlusarskiCanadaAsiya Javayant NEGOTIATION
Chavez BriddickSpainAmy Elsner NEGOTIATION
Alejandro PerinArgentinaBernardo Dominic NEGOTIATION
Nicolas IturbideItalyOnyama Limba PROPOSAL
Emily WhobreyArgentinaElwin Sharvill NEGOTIATION
James ButtSpainAmy Elsner UNQUALIFIED
Alejandro PerinFranceStephen Shaw PROPOSAL
Tony FollerRussiaAmy Elsner NEGOTIATION
Nicolas IturbideSpainIvan Magalhaes PROPOSAL
Octavia MaletAustraliaStephen Shaw UNQUALIFIED
Rodrigues CampainSpainAnna Fali NEGOTIATION
Adams MorascaJapanAmy Elsner QUALIFIED
Leja CaldareraFranceStephen Shaw PROPOSAL
Faith GillianBrazilOnyama Limba QUALIFIED
Jennifer AmigonRussiaStephen Shaw UNQUALIFIED
James ButtUnited KingdomAsiya Javayant NEW
Kaitlin OstroskyCanadaAsiya Javayant PROPOSAL
Costa DilliardAustraliaBernardo Dominic UNQUALIFIED
Jennifer AmigonArgentinaIvan Magalhaes UNQUALIFIED
Jennifer AmigonItalyOnyama Limba UNQUALIFIED
Francesco ShinkoItalyAmy Elsner QUALIFIED
Julie StensethSpainAmy Elsner PROPOSAL
Leon OldroydIndiaAmy Elsner QUALIFIED
Claire TollnerUnited KingdomStephen Shaw NEGOTIATION
Nicolas IturbideArgentinaElwin Sharvill PROPOSAL
Antonio CaudyBrazilAnna Fali RENEWAL
Nicolas IturbideSpainOnyama Limba NEGOTIATION
Darci PoquetteItalyElwin Sharvill PROPOSAL
Julie StensethRussiaStephen Shaw QUALIFIED
Mayumi KolmetzGermanyElwin Sharvill NEW
Francesco ShinkoBrazilAnna Fali QUALIFIED
Izzy GarufiArgentinaAmy Elsner NEW
David DarakjyFranceAmy Elsner NEGOTIATION
Clifford RimCanadaAmy Elsner QUALIFIED
Maisha RulapaughIndiaAmy Elsner NEGOTIATION
Aditya KuskoCanadaIoni Bowcher RENEWAL
Jennifer AmigonGermanyOnyama Limba NEGOTIATION
Aditya KuskoFranceAnna Fali PROPOSAL
Salvatore StockhamCanadaElwin Sharvill RENEWAL
Morrow RutaCanadaIoni Bowcher NEW
Jeanfrancois VenereUnited KingdomAnna Fali RENEWAL
Emily WhobreyItalyIoni Bowcher RENEWAL
Aruna FigeroaJapanAmy Elsner PROPOSAL
Clifford RimArgentinaIoni Bowcher PROPOSAL
Jennifer AmigonRussiaOnyama Limba NEW
Alejandro PerinCanadaAnna Fali NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Salvatore StockhamItalyOnyama Limba RENEWAL
Salvatore StockhamFranceBernardo Dominic NEW
Adams MorascaCanadaElwin Sharvill NEW
Mujtaba NickaBrazilAnna Fali NEGOTIATION
Maisha RulapaughGermanyXuxue Feng NEGOTIATION
Leja CaldareraIndiaAnna Fali RENEWAL
Darci PoquetteJapanOnyama Limba PROPOSAL
Rodrigues CampainUnited KingdomIvan Magalhaes RENEWAL
Tony FollerArgentinaStephen Shaw UNQUALIFIED
Salvatore StockhamCanadaIvan Magalhaes PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Morrow RutaItaly2026-04-12Chemel, James L Cpa NEGOTIATION63Onyama Limba
1001Nicolas IturbideItaly2026-04-22Benton, John B Jr QUALIFIED60Amy Elsner
1002Ivar PaprockiIndia2026-04-08Chapman, Ross E Esq QUALIFIED5Amy Elsner
1003Jeanfrancois VenereRussia2026-04-24Chemel, James L Cpa UNQUALIFIED96Xuxue Feng
1004Jefferson SchemmerArgentina2026-04-07Chapman, Ross E Esq UNQUALIFIED15Onyama Limba
1005Leja CaldareraCanada2026-04-02Dorl, James J Esq NEGOTIATION52Ivan Magalhaes
1006Juan WieserUnited Kingdom2026-04-08Chapman, Ross E Esq NEW10Xuxue Feng
1007Emily WhobreyArgentina2026-04-03Chemel, James L Cpa QUALIFIED54Bernardo Dominic
1008Emily WhobreySpain2026-04-07Chanay, Jeffrey A Esq RENEWAL52Amy Elsner
1009Izzy GarufiSpain2026-04-13Feiner Bros NEGOTIATION3Bernardo Dominic
1010Francesco ShinkoAustralia2026-04-23Chanay, Jeffrey A Esq NEGOTIATION66Anna Fali
1011Kaitlin OstroskySpain2026-04-27Chanay, Jeffrey A Esq RENEWAL15Ioni Bowcher
1012Tony FollerRussia2026-04-19King, Christopher A Esq RENEWAL12Elwin Sharvill
1013Johnson SergiFrance2026-03-30Chanay, Jeffrey A Esq NEW34Bernardo Dominic
1014Silvio SlusarskiSpain2026-03-31Dorl, James J Esq QUALIFIED83Ioni Bowcher
1015Murillo MaletArgentina2026-04-23Benton, John B Jr QUALIFIED93Xuxue Feng
1016Izzy GarufiGermany2026-04-26Chanay, Jeffrey A Esq UNQUALIFIED71Elwin Sharvill
1017Sinclair WaycottRussia2026-04-26Chanay, Jeffrey A Esq NEW27Asiya Javayant
1018Julie StensethFrance2026-04-24Benton, John B Jr QUALIFIED39Ioni Bowcher
1019Rodrigues CampainRussia2026-04-23Commercial Press QUALIFIED40Asiya Javayant
1020Ashley DoeAustralia2026-04-11Printing Dimensions NEW13Asiya Javayant
1021Mayumi KolmetzIndia2026-04-08Rangoni Of Florence RENEWAL10Amy Elsner
1022Aditya KuskoAustralia2026-04-08Feiner Bros PROPOSAL22Amy Elsner
1023Ricardo GauchoBrazil2026-04-08Rousseaux, Michael Esq RENEWAL85Bernardo Dominic
1024Munro FerenczFrance2026-04-25Benton, John B Jr NEW89Stephen Shaw
1025Mayumi KolmetzGermany2026-03-30King, Christopher A Esq NEW73Amy Elsner
1026Maisha RulapaughBrazil2026-04-27Commercial Press RENEWAL30Stephen Shaw
1027Arvin AlbaresItaly2026-04-03Chapman, Ross E Esq QUALIFIED5Ivan Magalhaes
1028Maisha RulapaughAustralia2026-04-24Truhlar And Truhlar Attys NEGOTIATION82Amy Elsner
1029Morrow RutaItaly2026-03-30Chapman, Ross E Esq NEW37Ivan Magalhaes
1030Smith GlickIndia2026-04-18Feiner Bros RENEWAL28Ioni Bowcher
1031Aruna FigeroaAustralia2026-04-23Rangoni Of Florence QUALIFIED35Anna Fali
1032Octavia MaletSpain2026-04-17Chemel, James L Cpa RENEWAL64Stephen Shaw
1033Kaitlin OstroskyFrance2026-04-19King, Christopher A Esq NEW86Xuxue Feng
1034Adams MorascaArgentina2026-04-07Commercial Press RENEWAL18Bernardo Dominic
1035Smith GlickIndia2026-04-17Truhlar And Truhlar Attys QUALIFIED73Ivan Magalhaes
1036Leja CaldareraAustralia2026-04-22Buckley Miller Wright QUALIFIED46Asiya Javayant
1037Adams MorascaItaly2026-03-31Truhlar And Truhlar Attys UNQUALIFIED35Onyama Limba
1038Wickens NestleUnited Kingdom2026-04-10King, Christopher A Esq PROPOSAL1Elwin Sharvill
1039Rodrigues CampainFrance2026-04-18Rangoni Of Florence NEW50Stephen Shaw
1040Ashley DoeJapan2026-04-19Morlong Associates QUALIFIED62Anna Fali
1041Cody SaylorsBrazil2026-04-16King, Christopher A Esq NEGOTIATION87Onyama Limba
1042Ivar PaprockiSpain2026-04-01Buckley Miller Wright NEW37Ioni Bowcher
1043Izzy GarufiItaly2026-04-08Benton, John B Jr NEGOTIATION7Xuxue Feng
1044Clifford RimGermany2026-04-26Benton, John B Jr NEGOTIATION63Elwin Sharvill
1045Aditya KuskoGermany2026-04-04Chapman, Ross E Esq NEW38Elwin Sharvill
1046Mayumi KolmetzAustralia2026-04-04Chanay, Jeffrey A Esq QUALIFIED75Asiya Javayant
1047Julie StensethGermany2026-04-25Morlong Associates QUALIFIED59Anna Fali
1048Adams MorascaUnited Kingdom2026-04-03Printing Dimensions NEGOTIATION10Stephen Shaw
1049Costa DilliardArgentina2026-04-12Feltz Printing Service RENEWAL35Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Kadeem FlosiItalyIvan Magalhaes QUALIFIED
Deepesh ChuiGermanyIoni Bowcher UNQUALIFIED
Deepesh ChuiAustraliaXuxue Feng UNQUALIFIED
Juan WieserAustraliaXuxue Feng RENEWAL
Greenwood BologniaFranceIoni Bowcher NEW
Wickens NestleGermanyBernardo Dominic NEGOTIATION
Octavia MaletUnited KingdomAsiya Javayant NEW
Leon OldroydJapanAsiya Javayant PROPOSAL
Johnson SergiJapanStephen Shaw UNQUALIFIED
Jones VocelkaArgentinaBernardo Dominic UNQUALIFIED
Cody SaylorsJapanStephen Shaw QUALIFIED
Wickens NestleCanadaAnna Fali RENEWAL
Jeanfrancois VenereFranceAnna Fali NEW
Octavia MaletSpainIvan Magalhaes PROPOSAL
Aika InouyeIndiaAmy Elsner RENEWAL
Nicolas IturbideArgentinaIoni Bowcher UNQUALIFIED
Chavez BriddickFranceElwin Sharvill NEW
Stacey MacleadFranceBernardo Dominic RENEWAL
Aika InouyeSpainStephen Shaw PROPOSAL
Clifford RimBrazilXuxue Feng NEGOTIATION
Isabel BowleyItalyIvan Magalhaes UNQUALIFIED
Alejandro PerinIndiaElwin Sharvill QUALIFIED
Misaki RoysterRussiaStephen Shaw UNQUALIFIED
Jennifer AmigonSpainAnna Fali PROPOSAL
James ButtSpainOnyama Limba QUALIFIED
Maisha RulapaughCanadaAsiya Javayant PROPOSAL
Kadeem FlosiGermanyIoni Bowcher QUALIFIED
Murillo MaletRussiaStephen Shaw NEW
Kadeem FlosiBrazilAmy Elsner QUALIFIED
Juan WieserItalyOnyama Limba NEGOTIATION
Jones VocelkaRussiaXuxue Feng NEW
Aika InouyeGermanyElwin Sharvill QUALIFIED
Ivar PaprockiItalyOnyama Limba UNQUALIFIED
Claire TollnerIndiaAmy Elsner RENEWAL
Leja CaldareraBrazilOnyama Limba NEW
Mujtaba NickaUnited KingdomStephen Shaw PROPOSAL
Jeanfrancois VenereJapanAsiya Javayant NEW
Kaitlin OstroskyGermanyElwin Sharvill UNQUALIFIED
Salvatore StockhamAustraliaXuxue Feng NEGOTIATION
Ricardo GauchoBrazilXuxue Feng QUALIFIED
Salvatore StockhamCanadaStephen Shaw RENEWAL
Murillo MaletIndiaElwin Sharvill UNQUALIFIED
Cody SaylorsBrazilXuxue Feng RENEWAL
Jeanfrancois VenereGermanyAmy Elsner UNQUALIFIED
Greenwood BologniaIndiaStephen Shaw NEGOTIATION
Julie StensethCanadaAsiya Javayant UNQUALIFIED
Aruna FigeroaFranceElwin Sharvill NEGOTIATION
Jefferson SchemmerGermanyElwin Sharvill UNQUALIFIED
Emily WhobreyFranceStephen Shaw QUALIFIED
Tony FollerSpainAnna Fali RENEWAL
Frozen Columns
Name
Cody Saylors
Aruna Figeroa
Jeanfrancois Venere
Costa Dilliard
Aditya Kusko
Silvio Slusarski
Arvin Albares
Jones Vocelka
Isabel Bowley
Rodrigues Campain
Stacey Maclead
Leon Oldroyd
Stacey Maclead
Jones Vocelka
Mayumi Kolmetz
Jeanfrancois Venere
Juan Wieser
Kaitlin Ostrosky
Clifford Rim
Maisha Rulapaugh
Aruna Figeroa
Kaitlin Ostrosky
Antonio Caudy
Ricardo Gaucho
Ivar Paprocki
Izzy Garufi
Jeanfrancois Venere
Salvatore Stockham
Octavia Malet
Antonio Caudy
Ashley Doe
Julie Stenseth
Murillo Malet
Aruna Figeroa
Alejandro Perin
Maisha Rulapaugh
Greenwood Bolognia
Maisha Rulapaugh
Maisha Rulapaugh
James Butt
Mujtaba Nicka
Nicolas Iturbide
Alejandro Perin
Ivar Paprocki
Izzy Garufi
Nicolas Iturbide
Jennifer Amigon
Misaki Royster
Emily Whobrey
David Darakjy
IdCountryDate
1000Brazil2026-04-15
1001Spain2026-04-25
1002Spain2026-04-08
1003Spain2026-04-07
1004India2026-04-04
1005Argentina2026-04-09
1006Canada2026-04-11
1007Japan2026-04-23
1008Argentina2026-04-27
1009Spain2026-04-26
1010Russia2026-04-27
1011India2026-03-30
1012Brazil2026-04-13
1013Russia2026-04-14
1014France2026-04-20
1015Australia2026-04-27
1016Australia2026-04-04
1017Brazil2026-04-21
1018Canada2026-04-03
1019France2026-04-14
1020Italy2026-04-05
1021Spain2026-04-05
1022Russia2026-04-28
1023Spain2026-04-05
1024Russia2026-04-25
1025United Kingdom2026-04-11
1026Germany2026-04-04
1027United Kingdom2026-04-04
1028United Kingdom2026-04-08
1029Brazil2026-04-28
1030Australia2026-04-23
1031Germany2026-04-11
1032Argentina2026-04-24
1033Australia2026-04-04
1034Italy2026-04-16
1035Australia2026-04-11
1036Brazil2026-04-09
1037Spain2026-04-11
1038United Kingdom2026-04-16
1039Australia2026-04-10
1040Canada2026-04-13
1041Russia2026-04-23
1042France2026-04-17
1043Brazil2026-04-27
1044Japan2026-04-09
1045United Kingdom2026-04-15
1046France2026-03-30
1047Italy2026-04-07
1048Italy2026-04-15
1049Brazil2026-04-26

On-Demand Data

NameIdCountryDate
Mayumi Kolmetz1000Russia2026-04-27
James Butt1001Russia2026-04-03
Nicolas Iturbide1002Spain2026-04-09
Cody Saylors1003Brazil2026-04-08
Aika Inouye1004Spain2026-03-30
Jeanfrancois Venere1005Japan2026-04-14
Costa Dilliard1006Spain2026-04-11
Ivar Paprocki1007Brazil2026-04-02
Julie Stenseth1008Italy2026-04-19
Costa Dilliard1009Spain2026-04-17
Faith Gillian1010Russia2026-03-31
Alejandro Perin1011United Kingdom2026-04-02
Clifford Rim1012Germany2026-04-21
Kaitlin Ostrosky1013Russia2026-04-08
Ashley Doe1014India2026-03-31
Arvin Albares1015Argentina2026-04-20
Maria Marrier1016Japan2026-04-05
Alejandro Perin1017Italy2026-04-04
Adams Morasca1018Japan2026-04-13
David Darakjy1019Italy2026-04-26
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Morrow RutaJapanBernardo Dominic UNQUALIFIED
Misaki RoysterFranceBernardo Dominic UNQUALIFIED
Misaki RoysterItalyElwin Sharvill NEGOTIATION
Ashley DoeItalyXuxue Feng UNQUALIFIED
Jones VocelkaBrazilElwin Sharvill NEW
Mayumi KolmetzSpainXuxue Feng RENEWAL
Jones VocelkaSpainOnyama Limba QUALIFIED
Ricardo GauchoItalyBernardo Dominic UNQUALIFIED
Kadeem FlosiGermanyXuxue Feng NEW
Costa DilliardAustraliaAnna Fali NEGOTIATION
Mayumi KolmetzRussiaAmy Elsner UNQUALIFIED
Adams MorascaFranceXuxue Feng UNQUALIFIED
Wickens NestleBrazilIvan Magalhaes RENEWAL
Clifford RimItalyAmy Elsner UNQUALIFIED
Kaitlin OstroskyItalyStephen Shaw NEW
Aditya KuskoGermanyIvan Magalhaes RENEWAL
David DarakjyJapanBernardo Dominic QUALIFIED
Salvatore StockhamGermanyXuxue Feng QUALIFIED
James ButtIndiaAnna Fali NEGOTIATION
Murillo MaletAustraliaStephen Shaw NEGOTIATION
Jeanfrancois VenereJapanIvan Magalhaes QUALIFIED
Murillo MaletJapanAnna Fali UNQUALIFIED
Darci PoquetteGermanyIvan Magalhaes QUALIFIED
Clifford RimJapanIoni Bowcher PROPOSAL
Greenwood BologniaFranceAsiya Javayant PROPOSAL
Maria MarrierGermanyBernardo Dominic NEGOTIATION
Johnson SergiSpainStephen Shaw PROPOSAL
Darci PoquetteJapanIvan Magalhaes UNQUALIFIED
Leja CaldareraGermanyBernardo Dominic QUALIFIED
Izzy GarufiJapanElwin Sharvill UNQUALIFIED
Aditya KuskoJapanElwin Sharvill RENEWAL
Kadeem FlosiBrazilBernardo Dominic QUALIFIED
Misaki RoysterArgentinaAnna Fali PROPOSAL
Silvio SlusarskiJapanAmy Elsner PROPOSAL
Chavez BriddickRussiaIoni Bowcher UNQUALIFIED
Faith GillianBrazilAnna Fali QUALIFIED
Deepesh ChuiArgentinaBernardo Dominic PROPOSAL
Johnson SergiUnited KingdomStephen Shaw QUALIFIED
Greenwood BologniaFranceBernardo Dominic QUALIFIED
Costa DilliardGermanyIvan Magalhaes 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>