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
Juan WieserItalyAsiya Javayant RENEWAL
Tony FollerIndiaOnyama Limba NEW
Aditya KuskoBrazilStephen Shaw NEGOTIATION
Tony FollerBrazilElwin Sharvill PROPOSAL
James ButtGermanyAsiya Javayant UNQUALIFIED
Deepesh ChuiFranceIvan Magalhaes UNQUALIFIED
Clifford RimUnited KingdomAmy Elsner QUALIFIED
Deepesh ChuiSpainStephen Shaw NEGOTIATION
Stacey MacleadBrazilStephen Shaw NEGOTIATION
Aditya KuskoUnited KingdomAnna Fali NEGOTIATION
Rodrigues CampainRussiaElwin Sharvill NEW
Chavez BriddickGermanyAnna Fali RENEWAL
Ashley DoeFranceElwin Sharvill QUALIFIED
Jeanfrancois VenereSpainOnyama Limba QUALIFIED
Rodrigues CampainItalyOnyama Limba QUALIFIED
David DarakjyCanadaXuxue Feng UNQUALIFIED
Maria MarrierItalyXuxue Feng QUALIFIED
Wickens NestleIndiaElwin Sharvill UNQUALIFIED
Ivar PaprockiItalyIoni Bowcher PROPOSAL
Silvio SlusarskiUnited KingdomIvan Magalhaes QUALIFIED
Mujtaba NickaAustraliaOnyama Limba UNQUALIFIED
Kaitlin OstroskyArgentinaAmy Elsner PROPOSAL
David DarakjyIndiaIoni Bowcher UNQUALIFIED
Murillo MaletArgentinaIoni Bowcher NEGOTIATION
Jeanfrancois VenereRussiaStephen Shaw QUALIFIED
Jones VocelkaUnited KingdomOnyama Limba PROPOSAL
Silvio SlusarskiUnited KingdomOnyama Limba RENEWAL
Darci PoquetteIndiaBernardo Dominic PROPOSAL
Kadeem FlosiFranceAnna Fali RENEWAL
Izzy GarufiBrazilAmy Elsner NEGOTIATION
Alejandro PerinFranceElwin Sharvill QUALIFIED
Ricardo GauchoGermanyAmy Elsner QUALIFIED
Stacey MacleadUnited KingdomAmy Elsner UNQUALIFIED
Kadeem FlosiUnited KingdomOnyama Limba UNQUALIFIED
Morrow RutaUnited KingdomOnyama Limba UNQUALIFIED
James ButtIndiaIvan Magalhaes QUALIFIED
Francesco ShinkoBrazilAnna Fali QUALIFIED
Adams MorascaUnited KingdomIoni Bowcher UNQUALIFIED
Adams MorascaItalyAmy Elsner PROPOSAL
Emily WhobreyUnited KingdomAnna Fali NEGOTIATION
Faith GillianGermanyAsiya Javayant UNQUALIFIED
James ButtBrazilIvan Magalhaes PROPOSAL
Salvatore StockhamJapanIvan Magalhaes NEGOTIATION
Claire TollnerJapanElwin Sharvill RENEWAL
Kadeem FlosiUnited KingdomIvan Magalhaes UNQUALIFIED
Sinclair WaycottItalyBernardo Dominic RENEWAL
Mujtaba NickaAustraliaBernardo Dominic RENEWAL
Clifford RimCanadaIoni Bowcher NEGOTIATION
Jeanfrancois VenereJapanElwin Sharvill UNQUALIFIED
Munro FerenczIndiaOnyama Limba RENEWAL
Horizontal
NameCountryRepresentativeStatus
Munro FerenczAustraliaBernardo Dominic PROPOSAL
Aika InouyeAustraliaElwin Sharvill PROPOSAL
Sinclair WaycottGermanyAnna Fali UNQUALIFIED
Johnson SergiCanadaXuxue Feng NEGOTIATION
Jones VocelkaFranceIvan Magalhaes UNQUALIFIED
Arvin AlbaresRussiaIoni Bowcher QUALIFIED
Salvatore StockhamAustraliaIoni Bowcher NEW
Leon OldroydIndiaIoni Bowcher NEW
Leja CaldareraRussiaIoni Bowcher NEW
Murillo MaletRussiaOnyama Limba PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Sinclair WaycottGermany2026-05-27Dorl, James J Esq RENEWAL71Elwin Sharvill
1001Jefferson SchemmerArgentina2026-06-11Commercial Press NEW81Ivan Magalhaes
1002Juan WieserIndia2026-06-07Benton, John B Jr RENEWAL24Anna Fali
1003Jeanfrancois VenereJapan2026-06-15Feltz Printing Service NEW8Stephen Shaw
1004Deepesh ChuiIndia2026-05-22Chanay, Jeffrey A Esq RENEWAL71Asiya Javayant
1005Greenwood BologniaFrance2026-06-10Morlong Associates NEGOTIATION51Amy Elsner
1006Clifford RimSpain2026-06-07Chanay, Jeffrey A Esq RENEWAL21Ioni Bowcher
1007Greenwood BologniaItaly2026-06-13Buckley Miller Wright RENEWAL18Ivan Magalhaes
1008Faith GillianCanada2026-06-08Chemel, James L Cpa PROPOSAL29Anna Fali
1009Claire TollnerAustralia2026-05-26Chemel, James L Cpa QUALIFIED53Ivan Magalhaes
1010Leja CaldareraAustralia2026-05-30Printing Dimensions NEGOTIATION71Ivan Magalhaes
1011Mayumi KolmetzIndia2026-06-16Chanay, Jeffrey A Esq QUALIFIED55Asiya Javayant
1012Faith GillianItaly2026-06-01King, Christopher A Esq QUALIFIED38Anna Fali
1013Isabel BowleyUnited Kingdom2026-06-09Chemel, James L Cpa QUALIFIED54Ioni Bowcher
1014Juan WieserCanada2026-05-29Feiner Bros NEW77Elwin Sharvill
1015Alejandro PerinCanada2026-06-04Chapman, Ross E Esq QUALIFIED68Ivan Magalhaes
1016Stacey MacleadBrazil2026-06-18Chemel, James L Cpa RENEWAL77Elwin Sharvill
1017David DarakjyJapan2026-05-26Chapman, Ross E Esq RENEWAL24Elwin Sharvill
1018Emily WhobreyArgentina2026-06-15Chapman, Ross E Esq UNQUALIFIED83Elwin Sharvill
1019Izzy GarufiJapan2026-05-29Rangoni Of Florence UNQUALIFIED5Onyama Limba
1020Salvatore StockhamItaly2026-06-18Chanay, Jeffrey A Esq NEGOTIATION82Xuxue Feng
1021Johnson SergiFrance2026-06-11Rangoni Of Florence UNQUALIFIED87Amy Elsner
1022Kaitlin OstroskyArgentina2026-06-15Feltz Printing Service NEW48Bernardo Dominic
1023Faith GillianAustralia2026-06-19King, Christopher A Esq PROPOSAL18Amy Elsner
1024Maria MarrierArgentina2026-05-23Commercial Press NEW33Ivan Magalhaes
1025Deepesh ChuiIndia2026-05-31Chapman, Ross E Esq RENEWAL57Xuxue Feng
1026Darci PoquetteBrazil2026-06-05Printing Dimensions NEW8Asiya Javayant
1027Sinclair WaycottGermany2026-05-29Rangoni Of Florence PROPOSAL2Ivan Magalhaes
1028Emily WhobreyArgentina2026-06-19Printing Dimensions UNQUALIFIED92Anna Fali
1029Aika InouyeItaly2026-06-12Chanay, Jeffrey A Esq QUALIFIED4Stephen Shaw
1030Chavez BriddickFrance2026-05-26King, Christopher A Esq UNQUALIFIED38Xuxue Feng
1031Cody SaylorsGermany2026-06-19Dorl, James J Esq RENEWAL6Ivan Magalhaes
1032Ricardo GauchoBrazil2026-06-07Commercial Press UNQUALIFIED3Anna Fali
1033Nicolas IturbideFrance2026-06-08Chanay, Jeffrey A Esq RENEWAL79Anna Fali
1034Izzy GarufiFrance2026-05-26Chapman, Ross E Esq NEGOTIATION51Bernardo Dominic
1035Alejandro PerinBrazil2026-06-14Benton, John B Jr QUALIFIED31Amy Elsner
1036Rodrigues CampainGermany2026-06-09Feiner Bros RENEWAL95Stephen Shaw
1037Aruna FigeroaCanada2026-06-14King, Christopher A Esq NEW7Ioni Bowcher
1038Costa DilliardRussia2026-06-15King, Christopher A Esq PROPOSAL75Onyama Limba
1039Mujtaba NickaIndia2026-06-03Feltz Printing Service NEGOTIATION13Amy Elsner
1040Deepesh ChuiBrazil2026-05-28King, Christopher A Esq PROPOSAL50Anna Fali
1041Murillo MaletSpain2026-06-05Rangoni Of Florence RENEWAL72Onyama Limba
1042Jones VocelkaBrazil2026-06-02Dorl, James J Esq NEW56Ivan Magalhaes
1043Julie StensethItaly2026-06-12Feltz Printing Service RENEWAL13Anna Fali
1044Faith GillianItaly2026-06-14Rousseaux, Michael Esq UNQUALIFIED33Bernardo Dominic
1045Rodrigues CampainIndia2026-06-06Feltz Printing Service RENEWAL49Onyama Limba
1046Tony FollerSpain2026-05-26Printing Dimensions UNQUALIFIED46Xuxue Feng
1047Mujtaba NickaCanada2026-06-06Rangoni Of Florence RENEWAL53Bernardo Dominic
1048Mujtaba NickaJapan2026-06-01Chemel, James L Cpa PROPOSAL88Bernardo Dominic
1049Ashley DoeBrazil2026-06-03Dorl, James J Esq PROPOSAL26Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Julie StensethItalyOnyama Limba NEW
Johnson SergiJapanElwin Sharvill NEW
Munro FerenczIndiaStephen Shaw QUALIFIED
Octavia MaletUnited KingdomElwin Sharvill PROPOSAL
Ricardo GauchoFranceAnna Fali NEGOTIATION
Darci PoquetteJapanAmy Elsner PROPOSAL
Salvatore StockhamIndiaIoni Bowcher NEGOTIATION
Faith GillianCanadaAmy Elsner PROPOSAL
Sinclair WaycottArgentinaXuxue Feng NEGOTIATION
Silvio SlusarskiSpainAsiya Javayant UNQUALIFIED
Maisha RulapaughUnited KingdomBernardo Dominic UNQUALIFIED
Isabel BowleyJapanAnna Fali UNQUALIFIED
James ButtIndiaElwin Sharvill RENEWAL
Munro FerenczUnited KingdomIvan Magalhaes NEW
Adams MorascaIndiaIoni Bowcher UNQUALIFIED
Aditya KuskoGermanyOnyama Limba NEGOTIATION
Nicolas IturbideJapanIoni Bowcher NEGOTIATION
Johnson SergiIndiaBernardo Dominic NEW
Alejandro PerinGermanyAmy Elsner UNQUALIFIED
Johnson SergiCanadaIoni Bowcher NEGOTIATION
Jones VocelkaIndiaIvan Magalhaes UNQUALIFIED
Jefferson SchemmerSpainAnna Fali QUALIFIED
Silvio SlusarskiIndiaStephen Shaw UNQUALIFIED
Clifford RimSpainAsiya Javayant QUALIFIED
Maisha RulapaughJapanElwin Sharvill QUALIFIED
Sinclair WaycottCanadaBernardo Dominic NEW
Smith GlickJapanAmy Elsner NEGOTIATION
Jefferson SchemmerFranceXuxue Feng NEGOTIATION
Juan WieserFranceOnyama Limba RENEWAL
James ButtIndiaXuxue Feng QUALIFIED
Stacey MacleadGermanyAsiya Javayant NEGOTIATION
David DarakjyJapanAmy Elsner NEGOTIATION
Kadeem FlosiBrazilIoni Bowcher UNQUALIFIED
Aditya KuskoSpainIoni Bowcher QUALIFIED
Misaki RoysterItalyAsiya Javayant NEW
Salvatore StockhamGermanyOnyama Limba PROPOSAL
Mayumi KolmetzFranceElwin Sharvill QUALIFIED
Octavia MaletIndiaXuxue Feng QUALIFIED
Kaitlin OstroskyJapanBernardo Dominic UNQUALIFIED
Emily WhobreyAustraliaAsiya Javayant PROPOSAL
Clifford RimGermanyOnyama Limba UNQUALIFIED
Francesco ShinkoGermanyBernardo Dominic UNQUALIFIED
Ivar PaprockiIndiaAnna Fali NEW
Kadeem FlosiSpainAsiya Javayant UNQUALIFIED
Clifford RimBrazilIoni Bowcher NEW
Leja CaldareraUnited KingdomElwin Sharvill PROPOSAL
Ashley DoeGermanyAmy Elsner RENEWAL
Nicolas IturbideGermanyOnyama Limba NEGOTIATION
Emily WhobreyJapanIvan Magalhaes PROPOSAL
Jefferson SchemmerArgentinaAmy Elsner PROPOSAL
Frozen Columns
Name
Octavia Malet
Alejandro Perin
Izzy Garufi
David Darakjy
Greenwood Bolognia
Tony Foller
Stacey Maclead
Salvatore Stockham
Mujtaba Nicka
Faith Gillian
Nicolas Iturbide
Jeanfrancois Venere
Maisha Rulapaugh
Mujtaba Nicka
Alejandro Perin
Chavez Briddick
Maisha Rulapaugh
Aruna Figeroa
Misaki Royster
Maisha Rulapaugh
Adams Morasca
Mayumi Kolmetz
Kaitlin Ostrosky
Maisha Rulapaugh
Jones Vocelka
Francesco Shinko
Antonio Caudy
Morrow Ruta
Leja Caldarera
Stacey Maclead
Jennifer Amigon
Adams Morasca
Maisha Rulapaugh
Smith Glick
Tony Foller
Adams Morasca
Rodrigues Campain
Nicolas Iturbide
Costa Dilliard
Maria Marrier
Juan Wieser
Wickens Nestle
Claire Tollner
Tony Foller
Misaki Royster
Octavia Malet
Jefferson Schemmer
Leja Caldarera
Kadeem Flosi
Izzy Garufi
IdCountryDate
1000France2026-06-02
1001Russia2026-05-30
1002Russia2026-06-18
1003France2026-06-03
1004Italy2026-06-10
1005Italy2026-05-30
1006Argentina2026-06-16
1007Australia2026-06-15
1008Australia2026-06-02
1009India2026-06-13
1010France2026-05-27
1011Australia2026-06-13
1012Germany2026-06-01
1013India2026-06-10
1014Canada2026-05-31
1015Italy2026-06-06
1016Brazil2026-05-25
1017Russia2026-06-12
1018Australia2026-05-22
1019Germany2026-05-24
1020France2026-05-29
1021Germany2026-05-27
1022Argentina2026-06-12
1023Brazil2026-06-09
1024France2026-05-27
1025Canada2026-05-28
1026Russia2026-05-27
1027Australia2026-06-12
1028Argentina2026-06-06
1029Russia2026-05-24
1030Spain2026-06-02
1031Spain2026-06-05
1032Argentina2026-05-27
1033Italy2026-05-25
1034Canada2026-06-14
1035Canada2026-06-13
1036Spain2026-05-27
1037Spain2026-06-06
1038Argentina2026-05-24
1039France2026-06-06
1040France2026-06-16
1041India2026-06-17
1042Italy2026-05-24
1043Spain2026-05-23
1044United Kingdom2026-06-01
1045Russia2026-06-04
1046Argentina2026-05-21
1047United Kingdom2026-06-02
1048India2026-05-30
1049Italy2026-05-21

On-Demand Data

NameIdCountryDate
Smith Glick1000Australia2026-05-30
Cody Saylors1001Germany2026-05-23
Clifford Rim1002Argentina2026-06-19
Tony Foller1003France2026-05-23
Morrow Ruta1004Russia2026-05-21
Rodrigues Campain1005Canada2026-05-21
Jeanfrancois Venere1006Japan2026-06-03
Silvio Slusarski1007Brazil2026-06-12
Antonio Caudy1008United Kingdom2026-05-25
Mujtaba Nicka1009Spain2026-06-06
Cody Saylors1010Spain2026-05-27
Jeanfrancois Venere1011Canada2026-06-11
Mayumi Kolmetz1012Italy2026-05-25
Aika Inouye1013France2026-05-26
Ashley Doe1014France2026-06-12
Smith Glick1015Germany2026-06-03
Kadeem Flosi1016Spain2026-05-21
Isabel Bowley1017United Kingdom2026-06-13
Munro Ferencz1018France2026-06-10
Clifford Rim1019Brazil2026-06-15
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ricardo GauchoAustraliaBernardo Dominic UNQUALIFIED
Darci PoquetteUnited KingdomStephen Shaw NEGOTIATION
Cody SaylorsJapanStephen Shaw PROPOSAL
Leja CaldareraCanadaOnyama Limba PROPOSAL
Alejandro PerinBrazilAmy Elsner RENEWAL
Leja CaldareraAustraliaAnna Fali PROPOSAL
Mayumi KolmetzRussiaXuxue Feng QUALIFIED
David DarakjyItalyAmy Elsner NEGOTIATION
Darci PoquetteRussiaIvan Magalhaes QUALIFIED
Sinclair WaycottItalyStephen Shaw PROPOSAL
Adams MorascaRussiaIoni Bowcher RENEWAL
Adams MorascaFranceIvan Magalhaes RENEWAL
Darci PoquetteCanadaElwin Sharvill NEGOTIATION
Wickens NestleRussiaXuxue Feng NEGOTIATION
Ricardo GauchoUnited KingdomXuxue Feng NEW
Rodrigues CampainGermanyOnyama Limba QUALIFIED
Leja CaldareraSpainIoni Bowcher RENEWAL
Wickens NestleBrazilBernardo Dominic NEGOTIATION
Kaitlin OstroskyIndiaAnna Fali NEW
Darci PoquetteFranceIvan Magalhaes NEGOTIATION
Ashley DoeSpainIoni Bowcher RENEWAL
Nicolas IturbideItalyIvan Magalhaes UNQUALIFIED
Julie StensethIndiaElwin Sharvill NEW
James ButtSpainAmy Elsner NEGOTIATION
Sinclair WaycottIndiaOnyama Limba QUALIFIED
Silvio SlusarskiRussiaXuxue Feng QUALIFIED
Kaitlin OstroskyItalyAmy Elsner QUALIFIED
Antonio CaudyIndiaOnyama Limba QUALIFIED
Wickens NestleCanadaIoni Bowcher RENEWAL
Chavez BriddickUnited KingdomOnyama Limba QUALIFIED
Claire TollnerUnited KingdomStephen Shaw QUALIFIED
Johnson SergiJapanIvan Magalhaes QUALIFIED
Jefferson SchemmerGermanyIvan Magalhaes QUALIFIED
Ricardo GauchoUnited KingdomOnyama Limba QUALIFIED
Jeanfrancois VenereSpainAnna Fali RENEWAL
Munro FerenczArgentinaBernardo Dominic NEW
Costa DilliardSpainIvan Magalhaes UNQUALIFIED
Francesco ShinkoAustraliaAsiya Javayant QUALIFIED
Wickens NestleCanadaIvan Magalhaes NEGOTIATION
Jefferson SchemmerSpainElwin Sharvill 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>