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
Wickens NestleAustraliaBernardo Dominic RENEWAL
Cody SaylorsCanadaAsiya Javayant NEGOTIATION
Ricardo GauchoRussiaIoni Bowcher UNQUALIFIED
Leja CaldareraUnited KingdomAsiya Javayant QUALIFIED
Leon OldroydRussiaElwin Sharvill QUALIFIED
Salvatore StockhamCanadaAnna Fali QUALIFIED
Sinclair WaycottSpainIvan Magalhaes PROPOSAL
Faith GillianJapanAsiya Javayant RENEWAL
Isabel BowleyItalyIoni Bowcher PROPOSAL
Claire TollnerIndiaXuxue Feng RENEWAL
Ivar PaprockiRussiaAmy Elsner NEGOTIATION
Faith GillianUnited KingdomElwin Sharvill RENEWAL
Smith GlickAustraliaBernardo Dominic QUALIFIED
Faith GillianArgentinaAsiya Javayant RENEWAL
Adams MorascaArgentinaAsiya Javayant NEGOTIATION
Johnson SergiRussiaAnna Fali PROPOSAL
Stacey MacleadArgentinaBernardo Dominic PROPOSAL
Julie StensethArgentinaXuxue Feng UNQUALIFIED
Jefferson SchemmerJapanIvan Magalhaes RENEWAL
Aika InouyeAustraliaAmy Elsner UNQUALIFIED
Kadeem FlosiGermanyOnyama Limba UNQUALIFIED
Leon OldroydGermanyAmy Elsner PROPOSAL
Jeanfrancois VenereGermanyBernardo Dominic QUALIFIED
Tony FollerBrazilAmy Elsner QUALIFIED
Leon OldroydJapanAnna Fali UNQUALIFIED
Mujtaba NickaArgentinaOnyama Limba PROPOSAL
Izzy GarufiRussiaBernardo Dominic NEGOTIATION
Octavia MaletRussiaXuxue Feng NEW
Morrow RutaAustraliaXuxue Feng UNQUALIFIED
Ricardo GauchoJapanOnyama Limba RENEWAL
Adams MorascaGermanyOnyama Limba PROPOSAL
Antonio CaudyFranceXuxue Feng NEGOTIATION
David DarakjyCanadaAsiya Javayant PROPOSAL
Munro FerenczIndiaBernardo Dominic PROPOSAL
Rodrigues CampainItalyAnna Fali UNQUALIFIED
Jefferson SchemmerCanadaAnna Fali QUALIFIED
Jefferson SchemmerArgentinaStephen Shaw RENEWAL
Greenwood BologniaJapanIoni Bowcher UNQUALIFIED
Rodrigues CampainRussiaIvan Magalhaes NEW
Juan WieserArgentinaXuxue Feng RENEWAL
Claire TollnerBrazilBernardo Dominic QUALIFIED
Greenwood BologniaRussiaIoni Bowcher UNQUALIFIED
Wickens NestleFranceElwin Sharvill QUALIFIED
Wickens NestleIndiaAnna Fali RENEWAL
Murillo MaletGermanyIvan Magalhaes NEGOTIATION
Tony FollerFranceOnyama Limba QUALIFIED
Costa DilliardArgentinaElwin Sharvill QUALIFIED
Kaitlin OstroskyBrazilOnyama Limba NEW
Sinclair WaycottJapanAnna Fali NEW
Costa DilliardSpainXuxue Feng PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Leon OldroydUnited KingdomXuxue Feng NEGOTIATION
Greenwood BologniaFranceOnyama Limba NEW
Deepesh ChuiBrazilAsiya Javayant QUALIFIED
Sinclair WaycottRussiaElwin Sharvill UNQUALIFIED
Faith GillianAustraliaXuxue Feng QUALIFIED
Julie StensethUnited KingdomIvan Magalhaes PROPOSAL
Francesco ShinkoCanadaStephen Shaw RENEWAL
Julie StensethRussiaAmy Elsner UNQUALIFIED
Jennifer AmigonCanadaIvan Magalhaes NEW
Alejandro PerinRussiaXuxue Feng PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Maisha RulapaughSpain2026-05-14Chanay, Jeffrey A Esq UNQUALIFIED37Xuxue Feng
1001Misaki RoysterJapan2026-05-17Commercial Press RENEWAL49Stephen Shaw
1002Alejandro PerinIndia2026-05-18Chapman, Ross E Esq PROPOSAL51Amy Elsner
1003Aika InouyeFrance2026-04-26Dorl, James J Esq QUALIFIED86Onyama Limba
1004Claire TollnerBrazil2026-04-21Rousseaux, Michael Esq NEGOTIATION86Asiya Javayant
1005Kadeem FlosiBrazil2026-05-19Chanay, Jeffrey A Esq UNQUALIFIED18Asiya Javayant
1006Maisha RulapaughAustralia2026-05-20Commercial Press PROPOSAL12Anna Fali
1007Jeanfrancois VenereRussia2026-05-04Chemel, James L Cpa QUALIFIED57Elwin Sharvill
1008Chavez BriddickRussia2026-05-18Rangoni Of Florence NEW8Xuxue Feng
1009Chavez BriddickRussia2026-05-20Chanay, Jeffrey A Esq QUALIFIED31Asiya Javayant
1010Adams MorascaUnited Kingdom2026-05-14Dorl, James J Esq PROPOSAL97Ivan Magalhaes
1011Cody SaylorsIndia2026-05-16Chapman, Ross E Esq NEW31Ivan Magalhaes
1012Morrow RutaAustralia2026-05-14Commercial Press NEGOTIATION85Ivan Magalhaes
1013Izzy GarufiIndia2026-04-27Feltz Printing Service QUALIFIED45Asiya Javayant
1014Claire TollnerAustralia2026-04-28Feiner Bros UNQUALIFIED78Ioni Bowcher
1015Ricardo GauchoIndia2026-05-04Chanay, Jeffrey A Esq UNQUALIFIED7Amy Elsner
1016Aruna FigeroaArgentina2026-04-22Truhlar And Truhlar Attys UNQUALIFIED19Stephen Shaw
1017Maisha RulapaughItaly2026-05-14Feiner Bros RENEWAL22Ioni Bowcher
1018Rodrigues CampainGermany2026-04-29Printing Dimensions NEGOTIATION36Amy Elsner
1019Leon OldroydArgentina2026-05-02Benton, John B Jr NEGOTIATION4Bernardo Dominic
1020Mayumi KolmetzUnited Kingdom2026-04-21Dorl, James J Esq UNQUALIFIED23Amy Elsner
1021Ashley DoeItaly2026-05-04Buckley Miller Wright NEW85Onyama Limba
1022Emily WhobreyFrance2026-05-05Rangoni Of Florence NEGOTIATION39Xuxue Feng
1023Chavez BriddickRussia2026-04-28Rangoni Of Florence NEW74Asiya Javayant
1024Costa DilliardBrazil2026-04-30Printing Dimensions RENEWAL9Asiya Javayant
1025Mayumi KolmetzArgentina2026-05-06Feiner Bros UNQUALIFIED79Xuxue Feng
1026Sinclair WaycottUnited Kingdom2026-04-27King, Christopher A Esq PROPOSAL81Elwin Sharvill
1027Aditya KuskoRussia2026-05-05Truhlar And Truhlar Attys RENEWAL49Anna Fali
1028Chavez BriddickItaly2026-05-02Feltz Printing Service RENEWAL2Amy Elsner
1029Munro FerenczUnited Kingdom2026-04-21Printing Dimensions RENEWAL41Onyama Limba
1030Ivar PaprockiGermany2026-05-05Chemel, James L Cpa PROPOSAL50Bernardo Dominic
1031Kadeem FlosiUnited Kingdom2026-04-25Chanay, Jeffrey A Esq QUALIFIED5Stephen Shaw
1032Munro FerenczJapan2026-04-29Chanay, Jeffrey A Esq QUALIFIED95Bernardo Dominic
1033Claire TollnerArgentina2026-04-27Morlong Associates NEW60Stephen Shaw
1034Jones VocelkaItaly2026-05-13Rangoni Of Florence PROPOSAL20Anna Fali
1035Murillo MaletIndia2026-05-02Chanay, Jeffrey A Esq QUALIFIED76Amy Elsner
1036Stacey MacleadBrazil2026-05-01Feltz Printing Service RENEWAL9Bernardo Dominic
1037Emily WhobreyCanada2026-05-18Morlong Associates NEGOTIATION46Ioni Bowcher
1038Smith GlickJapan2026-05-12Feltz Printing Service NEW37Ioni Bowcher
1039Murillo MaletAustralia2026-04-21Printing Dimensions UNQUALIFIED45Stephen Shaw
1040Salvatore StockhamSpain2026-05-01Commercial Press NEW95Asiya Javayant
1041Jeanfrancois VenereCanada2026-04-25Printing Dimensions NEW38Onyama Limba
1042Emily WhobreyItaly2026-05-12Chanay, Jeffrey A Esq NEGOTIATION32Anna Fali
1043Alejandro PerinGermany2026-05-12Benton, John B Jr RENEWAL41Ioni Bowcher
1044Juan WieserIndia2026-04-24Truhlar And Truhlar Attys PROPOSAL97Elwin Sharvill
1045Cody SaylorsRussia2026-05-10Chanay, Jeffrey A Esq NEW40Anna Fali
1046Leon OldroydArgentina2026-04-27Feltz Printing Service NEW56Asiya Javayant
1047Munro FerenczBrazil2026-05-03Buckley Miller Wright UNQUALIFIED18Asiya Javayant
1048Wickens NestleIndia2026-04-24Feiner Bros RENEWAL98Onyama Limba
1049Claire TollnerIndia2026-05-16Truhlar And Truhlar Attys PROPOSAL60Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Misaki RoysterUnited KingdomElwin Sharvill UNQUALIFIED
Kadeem FlosiRussiaElwin Sharvill NEGOTIATION
Rodrigues CampainCanadaAmy Elsner UNQUALIFIED
Salvatore StockhamCanadaXuxue Feng UNQUALIFIED
Aditya KuskoUnited KingdomAnna Fali PROPOSAL
Aruna FigeroaJapanAnna Fali NEGOTIATION
Aika InouyeAustraliaStephen Shaw RENEWAL
Mujtaba NickaJapanOnyama Limba PROPOSAL
Jennifer AmigonAustraliaIoni Bowcher PROPOSAL
Aditya KuskoJapanIoni Bowcher NEGOTIATION
Julie StensethUnited KingdomAsiya Javayant QUALIFIED
Munro FerenczSpainAnna Fali PROPOSAL
Munro FerenczCanadaBernardo Dominic NEW
Kaitlin OstroskyCanadaOnyama Limba QUALIFIED
Francesco ShinkoUnited KingdomOnyama Limba NEW
Ashley DoeIndiaAnna Fali NEGOTIATION
Salvatore StockhamAustraliaBernardo Dominic QUALIFIED
Smith GlickItalyStephen Shaw NEW
Clifford RimGermanyXuxue Feng QUALIFIED
Isabel BowleyRussiaAmy Elsner PROPOSAL
Johnson SergiRussiaAsiya Javayant QUALIFIED
Antonio CaudyRussiaBernardo Dominic QUALIFIED
Jones VocelkaAustraliaXuxue Feng NEW
Isabel BowleyItalyXuxue Feng PROPOSAL
Darci PoquetteRussiaIoni Bowcher RENEWAL
Smith GlickJapanOnyama Limba NEGOTIATION
Antonio CaudyAustraliaIoni Bowcher RENEWAL
Ivar PaprockiFranceXuxue Feng UNQUALIFIED
Morrow RutaItalyAsiya Javayant NEW
Mayumi KolmetzJapanXuxue Feng UNQUALIFIED
Chavez BriddickRussiaAsiya Javayant RENEWAL
Kadeem FlosiSpainAsiya Javayant RENEWAL
Ashley DoeFranceXuxue Feng RENEWAL
Alejandro PerinRussiaAmy Elsner NEGOTIATION
Ivar PaprockiRussiaAnna Fali NEW
Costa DilliardCanadaXuxue Feng UNQUALIFIED
Jones VocelkaArgentinaAnna Fali PROPOSAL
Aruna FigeroaJapanIvan Magalhaes QUALIFIED
Emily WhobreyBrazilBernardo Dominic NEGOTIATION
Sinclair WaycottRussiaAnna Fali UNQUALIFIED
Greenwood BologniaCanadaBernardo Dominic QUALIFIED
Adams MorascaCanadaAmy Elsner RENEWAL
Costa DilliardIndiaOnyama Limba QUALIFIED
Aruna FigeroaIndiaBernardo Dominic RENEWAL
Mujtaba NickaIndiaAmy Elsner NEW
Leja CaldareraRussiaXuxue Feng NEGOTIATION
Silvio SlusarskiArgentinaBernardo Dominic NEGOTIATION
Jeanfrancois VenereCanadaIvan Magalhaes RENEWAL
Julie StensethCanadaXuxue Feng QUALIFIED
Alejandro PerinAustraliaAmy Elsner PROPOSAL
Frozen Columns
Name
Jefferson Schemmer
Tony Foller
Antonio Caudy
Ashley Doe
Antonio Caudy
Alejandro Perin
Faith Gillian
Emily Whobrey
Ivar Paprocki
Jennifer Amigon
Faith Gillian
Ricardo Gaucho
Cody Saylors
Chavez Briddick
Maria Marrier
Emily Whobrey
Julie Stenseth
Ashley Doe
Misaki Royster
Alejandro Perin
Adams Morasca
Juan Wieser
Salvatore Stockham
Juan Wieser
Deepesh Chui
Julie Stenseth
Claire Tollner
Smith Glick
Octavia Malet
Jefferson Schemmer
Aika Inouye
Misaki Royster
Johnson Sergi
Francesco Shinko
Johnson Sergi
Maisha Rulapaugh
Wickens Nestle
Julie Stenseth
Nicolas Iturbide
Leon Oldroyd
Wickens Nestle
Emily Whobrey
Ivar Paprocki
Ivar Paprocki
Jennifer Amigon
James Butt
Kaitlin Ostrosky
Murillo Malet
Juan Wieser
Greenwood Bolognia
IdCountryDate
1000Brazil2026-05-04
1001Australia2026-05-20
1002Argentina2026-05-12
1003Argentina2026-05-04
1004India2026-04-24
1005India2026-05-02
1006Argentina2026-05-03
1007Japan2026-04-29
1008France2026-05-05
1009United Kingdom2026-05-20
1010Germany2026-05-17
1011Argentina2026-05-12
1012Australia2026-05-17
1013Spain2026-04-24
1014Argentina2026-04-25
1015Canada2026-05-02
1016Germany2026-05-18
1017United Kingdom2026-05-11
1018Italy2026-05-10
1019France2026-05-13
1020France2026-04-27
1021Russia2026-04-21
1022Germany2026-05-07
1023Russia2026-05-01
1024Australia2026-04-25
1025Australia2026-04-23
1026Canada2026-05-07
1027Russia2026-04-24
1028Brazil2026-05-09
1029Russia2026-04-29
1030United Kingdom2026-05-16
1031Australia2026-05-08
1032Italy2026-05-08
1033France2026-04-22
1034France2026-05-08
1035Germany2026-04-25
1036Argentina2026-04-21
1037Germany2026-05-05
1038Canada2026-05-12
1039Italy2026-05-16
1040Australia2026-05-19
1041United Kingdom2026-05-01
1042United Kingdom2026-04-23
1043Brazil2026-04-22
1044Russia2026-05-04
1045Canada2026-05-01
1046Italy2026-04-27
1047India2026-05-17
1048Brazil2026-05-11
1049Argentina2026-05-19

On-Demand Data

NameIdCountryDate
Salvatore Stockham1000Canada2026-05-09
Ricardo Gaucho1001Canada2026-05-02
Deepesh Chui1002Canada2026-04-30
Johnson Sergi1003Brazil2026-05-19
Maisha Rulapaugh1004India2026-05-15
Octavia Malet1005Canada2026-04-27
Kaitlin Ostrosky1006Argentina2026-05-05
Greenwood Bolognia1007Argentina2026-04-24
Arvin Albares1008France2026-05-01
Deepesh Chui1009Canada2026-05-16
Mujtaba Nicka1010Canada2026-05-10
Deepesh Chui1011Russia2026-04-26
Jennifer Amigon1012Spain2026-05-20
Ricardo Gaucho1013Japan2026-05-17
Octavia Malet1014Italy2026-05-07
Arvin Albares1015Germany2026-04-24
Johnson Sergi1016France2026-05-20
Silvio Slusarski1017Canada2026-05-16
Jennifer Amigon1018Russia2026-05-13
Aika Inouye1019France2026-05-14
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
James ButtBrazilAsiya Javayant UNQUALIFIED
Morrow RutaSpainAsiya Javayant NEW
Kaitlin OstroskyGermanyXuxue Feng RENEWAL
Salvatore StockhamSpainIoni Bowcher RENEWAL
Sinclair WaycottJapanElwin Sharvill PROPOSAL
Mayumi KolmetzArgentinaIvan Magalhaes PROPOSAL
Cody SaylorsItalyXuxue Feng UNQUALIFIED
Juan WieserJapanAmy Elsner QUALIFIED
Misaki RoysterUnited KingdomElwin Sharvill NEGOTIATION
Aruna FigeroaRussiaStephen Shaw QUALIFIED
Julie StensethJapanIoni Bowcher RENEWAL
Salvatore StockhamGermanyStephen Shaw NEW
Costa DilliardBrazilIoni Bowcher NEW
Francesco ShinkoAustraliaAmy Elsner PROPOSAL
Juan WieserCanadaStephen Shaw NEGOTIATION
Darci PoquetteIndiaOnyama Limba RENEWAL
Greenwood BologniaItalyAmy Elsner UNQUALIFIED
Morrow RutaCanadaBernardo Dominic NEW
Ricardo GauchoJapanAmy Elsner UNQUALIFIED
Jefferson SchemmerUnited KingdomOnyama Limba NEGOTIATION
Maisha RulapaughAustraliaElwin Sharvill PROPOSAL
Maisha RulapaughRussiaXuxue Feng NEW
Munro FerenczIndiaAmy Elsner UNQUALIFIED
Clifford RimGermanyIoni Bowcher UNQUALIFIED
Isabel BowleyArgentinaIoni Bowcher NEW
Julie StensethAustraliaOnyama Limba NEGOTIATION
Kaitlin OstroskyUnited KingdomBernardo Dominic UNQUALIFIED
Aditya KuskoUnited KingdomBernardo Dominic NEGOTIATION
Ashley DoeCanadaElwin Sharvill QUALIFIED
Munro FerenczBrazilIoni Bowcher QUALIFIED
Nicolas IturbideSpainBernardo Dominic QUALIFIED
Jones VocelkaGermanyAnna Fali UNQUALIFIED
Kaitlin OstroskyGermanyAsiya Javayant NEGOTIATION
Mayumi KolmetzSpainOnyama Limba UNQUALIFIED
Mujtaba NickaCanadaAnna Fali RENEWAL
Chavez BriddickBrazilBernardo Dominic NEGOTIATION
Johnson SergiSpainXuxue Feng UNQUALIFIED
Aika InouyeJapanBernardo Dominic PROPOSAL
Aika InouyeAustraliaElwin Sharvill UNQUALIFIED
Adams MorascaCanadaOnyama Limba 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>