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
Faith GillianGermanyXuxue Feng QUALIFIED
Faith GillianAustraliaElwin Sharvill UNQUALIFIED
Faith GillianFranceBernardo Dominic PROPOSAL
James ButtIndiaAmy Elsner QUALIFIED
Maisha RulapaughFranceIoni Bowcher QUALIFIED
Clifford RimCanadaIoni Bowcher QUALIFIED
Ivar PaprockiArgentinaXuxue Feng QUALIFIED
Morrow RutaRussiaOnyama Limba UNQUALIFIED
Kadeem FlosiFranceOnyama Limba NEGOTIATION
Jennifer AmigonCanadaAnna Fali UNQUALIFIED
Rodrigues CampainBrazilElwin Sharvill QUALIFIED
Maisha RulapaughCanadaElwin Sharvill NEW
James ButtGermanyBernardo Dominic PROPOSAL
Octavia MaletFranceElwin Sharvill PROPOSAL
Aditya KuskoIndiaStephen Shaw RENEWAL
Aditya KuskoJapanIoni Bowcher UNQUALIFIED
Julie StensethGermanyStephen Shaw NEW
Johnson SergiCanadaIoni Bowcher PROPOSAL
Jeanfrancois VenereRussiaAmy Elsner NEW
Maria MarrierRussiaOnyama Limba QUALIFIED
Claire TollnerUnited KingdomAsiya Javayant NEW
Ashley DoeUnited KingdomAmy Elsner PROPOSAL
Johnson SergiFranceAmy Elsner NEGOTIATION
Deepesh ChuiBrazilAnna Fali NEW
Clifford RimIndiaOnyama Limba PROPOSAL
Deepesh ChuiCanadaStephen Shaw PROPOSAL
Misaki RoysterFranceAsiya Javayant RENEWAL
Ashley DoeRussiaOnyama Limba NEGOTIATION
Ashley DoeItalyIvan Magalhaes UNQUALIFIED
James ButtRussiaAnna Fali QUALIFIED
Jennifer AmigonCanadaIvan Magalhaes NEW
Jennifer AmigonSpainAmy Elsner RENEWAL
Wickens NestleCanadaBernardo Dominic NEGOTIATION
Ivar PaprockiUnited KingdomStephen Shaw RENEWAL
Julie StensethItalyIvan Magalhaes PROPOSAL
Costa DilliardArgentinaBernardo Dominic QUALIFIED
Wickens NestleFranceXuxue Feng RENEWAL
Faith GillianFranceAmy Elsner PROPOSAL
Nicolas IturbideArgentinaAmy Elsner UNQUALIFIED
Chavez BriddickBrazilStephen Shaw UNQUALIFIED
Wickens NestleRussiaXuxue Feng PROPOSAL
Costa DilliardSpainBernardo Dominic QUALIFIED
Mayumi KolmetzAustraliaIvan Magalhaes PROPOSAL
Clifford RimAustraliaElwin Sharvill NEW
Octavia MaletFranceXuxue Feng NEW
Mayumi KolmetzSpainAnna Fali NEGOTIATION
Leja CaldareraCanadaAmy Elsner QUALIFIED
Aditya KuskoSpainBernardo Dominic UNQUALIFIED
Silvio SlusarskiGermanyStephen Shaw RENEWAL
Kadeem FlosiArgentinaElwin Sharvill PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Faith GillianCanadaBernardo Dominic NEW
Aditya KuskoItalyIoni Bowcher QUALIFIED
Greenwood BologniaItalyAnna Fali RENEWAL
Jefferson SchemmerIndiaAsiya Javayant NEW
Jefferson SchemmerJapanIvan Magalhaes NEGOTIATION
Izzy GarufiAustraliaIvan Magalhaes RENEWAL
Jefferson SchemmerBrazilIoni Bowcher UNQUALIFIED
Octavia MaletItalyElwin Sharvill NEGOTIATION
Alejandro PerinFranceOnyama Limba UNQUALIFIED
Clifford RimFranceAmy Elsner NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Kaitlin OstroskyRussia2026-04-28Rousseaux, Michael Esq RENEWAL65Anna Fali
1001Jefferson SchemmerIndia2026-05-06Printing Dimensions UNQUALIFIED95Xuxue Feng
1002Ricardo GauchoArgentina2026-05-23Benton, John B Jr NEW72Ioni Bowcher
1003Greenwood BologniaUnited Kingdom2026-05-01Truhlar And Truhlar Attys PROPOSAL23Asiya Javayant
1004Sinclair WaycottItaly2026-05-17Dorl, James J Esq QUALIFIED44Onyama Limba
1005Alejandro PerinBrazil2026-05-16Commercial Press NEGOTIATION82Amy Elsner
1006Maria MarrierArgentina2026-05-09Dorl, James J Esq PROPOSAL88Amy Elsner
1007Smith GlickRussia2026-05-22Benton, John B Jr QUALIFIED46Amy Elsner
1008Jefferson SchemmerCanada2026-05-18Chanay, Jeffrey A Esq QUALIFIED67Ioni Bowcher
1009Jones VocelkaRussia2026-05-05Feiner Bros QUALIFIED99Amy Elsner
1010Rodrigues CampainRussia2026-05-09Commercial Press UNQUALIFIED22Ivan Magalhaes
1011Stacey MacleadUnited Kingdom2026-05-09Feltz Printing Service UNQUALIFIED89Asiya Javayant
1012Sinclair WaycottBrazil2026-05-05Chemel, James L Cpa UNQUALIFIED98Xuxue Feng
1013Leon OldroydFrance2026-05-24Chanay, Jeffrey A Esq RENEWAL23Ioni Bowcher
1014Silvio SlusarskiUnited Kingdom2026-05-03Dorl, James J Esq UNQUALIFIED27Asiya Javayant
1015Adams MorascaBrazil2026-05-24Benton, John B Jr NEW71Amy Elsner
1016Darci PoquetteRussia2026-05-15Truhlar And Truhlar Attys PROPOSAL66Asiya Javayant
1017Ashley DoeIndia2026-05-19Chanay, Jeffrey A Esq NEW20Onyama Limba
1018Smith GlickAustralia2026-05-10Truhlar And Truhlar Attys QUALIFIED59Ioni Bowcher
1019Clifford RimIndia2026-05-20Feltz Printing Service NEGOTIATION2Anna Fali
1020Mujtaba NickaArgentina2026-05-13Feltz Printing Service QUALIFIED15Elwin Sharvill
1021Jeanfrancois VenereBrazil2026-05-21Dorl, James J Esq NEGOTIATION75Asiya Javayant
1022Adams MorascaJapan2026-05-09Buckley Miller Wright PROPOSAL6Stephen Shaw
1023Silvio SlusarskiCanada2026-05-26Morlong Associates PROPOSAL0Stephen Shaw
1024Aditya KuskoSpain2026-05-01King, Christopher A Esq QUALIFIED57Elwin Sharvill
1025Juan WieserUnited Kingdom2026-05-23Buckley Miller Wright PROPOSAL53Bernardo Dominic
1026Jones VocelkaItaly2026-05-08Commercial Press PROPOSAL84Elwin Sharvill
1027Tony FollerGermany2026-05-11Printing Dimensions UNQUALIFIED97Elwin Sharvill
1028Mayumi KolmetzItaly2026-05-23Feiner Bros PROPOSAL25Onyama Limba
1029Greenwood BologniaUnited Kingdom2026-05-03Commercial Press UNQUALIFIED29Xuxue Feng
1030Munro FerenczCanada2026-05-27Benton, John B Jr NEW38Onyama Limba
1031Morrow RutaArgentina2026-05-14Chapman, Ross E Esq UNQUALIFIED80Anna Fali
1032Aika InouyeAustralia2026-05-13Truhlar And Truhlar Attys RENEWAL5Ivan Magalhaes
1033Leja CaldareraJapan2026-05-06Commercial Press PROPOSAL92Onyama Limba
1034Ricardo GauchoUnited Kingdom2026-05-04Chemel, James L Cpa QUALIFIED43Xuxue Feng
1035Sinclair WaycottBrazil2026-05-11Rousseaux, Michael Esq UNQUALIFIED14Onyama Limba
1036Alejandro PerinAustralia2026-05-27Feltz Printing Service QUALIFIED58Ivan Magalhaes
1037Darci PoquetteUnited Kingdom2026-05-18Chapman, Ross E Esq NEGOTIATION16Stephen Shaw
1038Jones VocelkaJapan2026-05-25Chanay, Jeffrey A Esq NEW27Ioni Bowcher
1039Chavez BriddickAustralia2026-05-15Morlong Associates NEGOTIATION5Ivan Magalhaes
1040Costa DilliardSpain2026-05-20Printing Dimensions PROPOSAL67Xuxue Feng
1041James ButtIndia2026-05-02Commercial Press UNQUALIFIED68Bernardo Dominic
1042Francesco ShinkoItaly2026-04-28Rangoni Of Florence NEW21Onyama Limba
1043Morrow RutaArgentina2026-05-09Chapman, Ross E Esq NEGOTIATION93Amy Elsner
1044Aika InouyeItaly2026-04-30Rousseaux, Michael Esq UNQUALIFIED28Anna Fali
1045Faith GillianItaly2026-05-24Printing Dimensions UNQUALIFIED88Amy Elsner
1046Smith GlickItaly2026-05-20Chemel, James L Cpa RENEWAL98Amy Elsner
1047Octavia MaletArgentina2026-05-02Rousseaux, Michael Esq UNQUALIFIED71Amy Elsner
1048Ricardo GauchoSpain2026-05-07King, Christopher A Esq PROPOSAL97Onyama Limba
1049Jefferson SchemmerBrazil2026-05-17Feiner Bros QUALIFIED86Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Mujtaba NickaFranceAsiya Javayant QUALIFIED
Johnson SergiCanadaAsiya Javayant PROPOSAL
Deepesh ChuiCanadaAsiya Javayant PROPOSAL
Jefferson SchemmerUnited KingdomIoni Bowcher RENEWAL
Jefferson SchemmerJapanElwin Sharvill PROPOSAL
Mayumi KolmetzArgentinaStephen Shaw RENEWAL
Aika InouyeJapanElwin Sharvill QUALIFIED
Kadeem FlosiArgentinaIvan Magalhaes NEGOTIATION
Jefferson SchemmerArgentinaStephen Shaw PROPOSAL
Alejandro PerinArgentinaAsiya Javayant PROPOSAL
Emily WhobreyGermanyXuxue Feng RENEWAL
Isabel BowleyItalyXuxue Feng QUALIFIED
Leja CaldareraRussiaBernardo Dominic QUALIFIED
Ivar PaprockiUnited KingdomIoni Bowcher QUALIFIED
Arvin AlbaresCanadaIoni Bowcher PROPOSAL
Adams MorascaFranceAnna Fali UNQUALIFIED
Jeanfrancois VenereJapanElwin Sharvill NEGOTIATION
Ivar PaprockiArgentinaAmy Elsner NEGOTIATION
Isabel BowleyCanadaIvan Magalhaes NEGOTIATION
Emily WhobreyUnited KingdomIoni Bowcher UNQUALIFIED
Aditya KuskoRussiaOnyama Limba NEGOTIATION
Nicolas IturbideIndiaIvan Magalhaes RENEWAL
Sinclair WaycottArgentinaStephen Shaw NEGOTIATION
Deepesh ChuiCanadaOnyama Limba RENEWAL
Costa DilliardSpainOnyama Limba QUALIFIED
Deepesh ChuiCanadaElwin Sharvill UNQUALIFIED
Octavia MaletRussiaBernardo Dominic NEGOTIATION
Sinclair WaycottJapanIvan Magalhaes PROPOSAL
Adams MorascaBrazilStephen Shaw UNQUALIFIED
Octavia MaletFranceAsiya Javayant NEGOTIATION
Ashley DoeFranceAsiya Javayant QUALIFIED
Jefferson SchemmerGermanyIvan Magalhaes RENEWAL
Emily WhobreyJapanBernardo Dominic NEW
Kadeem FlosiFranceStephen Shaw NEW
Jennifer AmigonAustraliaIvan Magalhaes QUALIFIED
Claire TollnerUnited KingdomStephen Shaw QUALIFIED
Rodrigues CampainAustraliaBernardo Dominic UNQUALIFIED
Ashley DoeItalyAmy Elsner QUALIFIED
Clifford RimRussiaAnna Fali UNQUALIFIED
Munro FerenczSpainXuxue Feng UNQUALIFIED
Julie StensethIndiaStephen Shaw UNQUALIFIED
Murillo MaletSpainIoni Bowcher NEGOTIATION
Cody SaylorsArgentinaStephen Shaw PROPOSAL
Mujtaba NickaJapanAmy Elsner NEW
Johnson SergiJapanAsiya Javayant NEW
Leon OldroydAustraliaAsiya Javayant NEW
Cody SaylorsSpainIoni Bowcher NEGOTIATION
Leon OldroydBrazilXuxue Feng NEW
Misaki RoysterGermanyAsiya Javayant QUALIFIED
Aruna FigeroaJapanBernardo Dominic PROPOSAL
Frozen Columns
Name
Rodrigues Campain
Julie Stenseth
Juan Wieser
Kadeem Flosi
Jones Vocelka
Ivar Paprocki
Morrow Ruta
Izzy Garufi
Maria Marrier
Chavez Briddick
Leja Caldarera
Maisha Rulapaugh
David Darakjy
James Butt
Tony Foller
Mujtaba Nicka
Arvin Albares
Adams Morasca
Ricardo Gaucho
Emily Whobrey
Izzy Garufi
Salvatore Stockham
Francesco Shinko
Jeanfrancois Venere
Kaitlin Ostrosky
Deepesh Chui
Leon Oldroyd
Ashley Doe
Aruna Figeroa
Arvin Albares
Francesco Shinko
Izzy Garufi
Deepesh Chui
Sinclair Waycott
Ashley Doe
Jefferson Schemmer
Jeanfrancois Venere
Jeanfrancois Venere
Tony Foller
Munro Ferencz
Mayumi Kolmetz
Isabel Bowley
Arvin Albares
James Butt
Adams Morasca
Tony Foller
Smith Glick
Octavia Malet
Cody Saylors
Claire Tollner
IdCountryDate
1000Canada2026-05-27
1001Brazil2026-05-04
1002United Kingdom2026-05-16
1003Germany2026-05-03
1004Brazil2026-05-14
1005France2026-05-24
1006Spain2026-05-01
1007United Kingdom2026-05-01
1008Australia2026-05-24
1009Spain2026-05-01
1010Germany2026-05-12
1011Spain2026-05-20
1012Japan2026-05-22
1013Canada2026-05-01
1014Italy2026-05-17
1015Italy2026-05-13
1016Spain2026-05-15
1017Germany2026-05-11
1018Japan2026-05-15
1019Australia2026-05-26
1020India2026-04-28
1021United Kingdom2026-05-23
1022Russia2026-05-26
1023United Kingdom2026-05-19
1024Russia2026-05-16
1025Russia2026-05-11
1026United Kingdom2026-05-11
1027Brazil2026-05-25
1028Spain2026-05-11
1029Italy2026-05-02
1030Russia2026-05-11
1031Spain2026-05-26
1032Japan2026-04-28
1033Germany2026-05-15
1034Argentina2026-05-27
1035Russia2026-05-13
1036Argentina2026-05-20
1037Brazil2026-04-28
1038Australia2026-05-03
1039Germany2026-04-30
1040India2026-04-29
1041Russia2026-05-26
1042Argentina2026-05-16
1043France2026-05-03
1044Germany2026-05-08
1045Argentina2026-04-29
1046Russia2026-05-23
1047Argentina2026-04-30
1048Australia2026-05-05
1049France2026-05-07

On-Demand Data

NameIdCountryDate
Jennifer Amigon1000Japan2026-05-02
Maria Marrier1001India2026-05-13
Clifford Rim1002Russia2026-05-19
Faith Gillian1003Canada2026-05-19
Ivar Paprocki1004France2026-05-04
Ashley Doe1005Italy2026-04-29
Jefferson Schemmer1006India2026-05-02
Clifford Rim1007United Kingdom2026-05-22
Wickens Nestle1008France2026-05-15
Adams Morasca1009Australia2026-05-13
Francesco Shinko1010Russia2026-05-08
Emily Whobrey1011Canada2026-05-20
Mujtaba Nicka1012Argentina2026-05-05
Deepesh Chui1013Australia2026-04-30
Sinclair Waycott1014Canada2026-05-20
David Darakjy1015Spain2026-04-28
Kadeem Flosi1016Japan2026-05-19
Faith Gillian1017France2026-05-13
Sinclair Waycott1018Argentina2026-05-12
Munro Ferencz1019Germany2026-05-15
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jeanfrancois VenereSpainBernardo Dominic RENEWAL
Mayumi KolmetzUnited KingdomAnna Fali PROPOSAL
Sinclair WaycottAustraliaAmy Elsner PROPOSAL
Aditya KuskoItalyAmy Elsner UNQUALIFIED
Maisha RulapaughFranceAmy Elsner PROPOSAL
Ashley DoeFranceElwin Sharvill PROPOSAL
James ButtAustraliaAsiya Javayant PROPOSAL
Cody SaylorsAustraliaAsiya Javayant UNQUALIFIED
Kadeem FlosiRussiaOnyama Limba UNQUALIFIED
Darci PoquetteIndiaStephen Shaw PROPOSAL
Mayumi KolmetzArgentinaAnna Fali NEGOTIATION
Faith GillianCanadaIvan Magalhaes QUALIFIED
Julie StensethBrazilElwin Sharvill NEW
Cody SaylorsIndiaOnyama Limba NEW
Cody SaylorsFranceAmy Elsner QUALIFIED
Kaitlin OstroskyCanadaAmy Elsner UNQUALIFIED
Kaitlin OstroskyIndiaOnyama Limba RENEWAL
Kaitlin OstroskyRussiaStephen Shaw PROPOSAL
Aruna FigeroaJapanAnna Fali UNQUALIFIED
Chavez BriddickJapanOnyama Limba NEW
Aruna FigeroaItalyElwin Sharvill NEGOTIATION
Izzy GarufiUnited KingdomIoni Bowcher NEGOTIATION
Misaki RoysterCanadaAsiya Javayant QUALIFIED
Greenwood BologniaItalyIoni Bowcher PROPOSAL
Silvio SlusarskiRussiaAsiya Javayant QUALIFIED
Aditya KuskoItalyIoni Bowcher QUALIFIED
Nicolas IturbideRussiaIvan Magalhaes QUALIFIED
Emily WhobreyFranceIoni Bowcher NEGOTIATION
Misaki RoysterItalyStephen Shaw QUALIFIED
Kadeem FlosiJapanElwin Sharvill NEGOTIATION
Smith GlickSpainAmy Elsner NEW
Stacey MacleadCanadaAmy Elsner NEW
Greenwood BologniaUnited KingdomAmy Elsner UNQUALIFIED
Faith GillianBrazilIvan Magalhaes QUALIFIED
Sinclair WaycottBrazilAmy Elsner QUALIFIED
Izzy GarufiJapanIoni Bowcher QUALIFIED
Clifford RimJapanElwin Sharvill NEW
Emily WhobreyIndiaOnyama Limba UNQUALIFIED
Maisha RulapaughAustraliaAnna Fali NEGOTIATION
Mujtaba NickaUnited KingdomIoni Bowcher 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>