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
Francesco ShinkoBrazilAsiya Javayant RENEWAL
Kadeem FlosiItalyStephen Shaw RENEWAL
Juan WieserSpainXuxue Feng QUALIFIED
Francesco ShinkoRussiaIvan Magalhaes NEGOTIATION
Maria MarrierAustraliaXuxue Feng PROPOSAL
Emily WhobreyGermanyStephen Shaw PROPOSAL
Octavia MaletArgentinaStephen Shaw NEW
Arvin AlbaresCanadaAnna Fali RENEWAL
Salvatore StockhamSpainAsiya Javayant NEGOTIATION
Francesco ShinkoAustraliaIoni Bowcher NEGOTIATION
Tony FollerIndiaBernardo Dominic QUALIFIED
Kaitlin OstroskyItalyIoni Bowcher NEW
Izzy GarufiGermanyAnna Fali NEW
James ButtIndiaOnyama Limba RENEWAL
Kaitlin OstroskyGermanyElwin Sharvill PROPOSAL
Deepesh ChuiRussiaAsiya Javayant QUALIFIED
Ricardo GauchoAustraliaXuxue Feng QUALIFIED
Munro FerenczCanadaAmy Elsner NEW
Johnson SergiGermanyIvan Magalhaes RENEWAL
Ricardo GauchoBrazilOnyama Limba QUALIFIED
Octavia MaletCanadaAsiya Javayant QUALIFIED
Sinclair WaycottArgentinaXuxue Feng NEGOTIATION
James ButtGermanyOnyama Limba RENEWAL
David DarakjyJapanBernardo Dominic NEW
Aditya KuskoRussiaOnyama Limba NEGOTIATION
Mayumi KolmetzArgentinaXuxue Feng UNQUALIFIED
Ashley DoeIndiaBernardo Dominic NEW
James ButtFranceOnyama Limba NEW
Misaki RoysterCanadaAmy Elsner NEGOTIATION
Stacey MacleadUnited KingdomIoni Bowcher PROPOSAL
Costa DilliardRussiaStephen Shaw NEGOTIATION
Sinclair WaycottFranceStephen Shaw RENEWAL
Jeanfrancois VenereItalyAnna Fali NEGOTIATION
Smith GlickAustraliaAnna Fali PROPOSAL
Ricardo GauchoCanadaBernardo Dominic RENEWAL
Kaitlin OstroskyCanadaAmy Elsner PROPOSAL
Greenwood BologniaAustraliaOnyama Limba QUALIFIED
Morrow RutaItalyBernardo Dominic QUALIFIED
Arvin AlbaresAustraliaElwin Sharvill QUALIFIED
Mayumi KolmetzFranceOnyama Limba RENEWAL
James ButtItalyBernardo Dominic NEW
Ashley DoeAustraliaOnyama Limba PROPOSAL
Maria MarrierGermanyAnna Fali NEW
Salvatore StockhamItalyBernardo Dominic NEGOTIATION
Jefferson SchemmerUnited KingdomIoni Bowcher RENEWAL
Francesco ShinkoIndiaOnyama Limba NEGOTIATION
Alejandro PerinJapanOnyama Limba UNQUALIFIED
David DarakjySpainOnyama Limba RENEWAL
Morrow RutaGermanyOnyama Limba NEGOTIATION
Antonio CaudyIndiaBernardo Dominic RENEWAL
Horizontal
NameCountryRepresentativeStatus
Johnson SergiBrazilBernardo Dominic NEGOTIATION
James ButtGermanyAnna Fali NEGOTIATION
Sinclair WaycottSpainStephen Shaw QUALIFIED
Alejandro PerinJapanAsiya Javayant QUALIFIED
Deepesh ChuiItalyAmy Elsner QUALIFIED
Juan WieserFranceXuxue Feng QUALIFIED
Morrow RutaCanadaIoni Bowcher PROPOSAL
Costa DilliardBrazilOnyama Limba UNQUALIFIED
Faith GillianFranceBernardo Dominic QUALIFIED
Maisha RulapaughAustraliaAmy Elsner RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Alejandro PerinFrance2026-04-08Feiner Bros NEGOTIATION12Ioni Bowcher
1001Adams MorascaSpain2026-04-17Chanay, Jeffrey A Esq UNQUALIFIED36Ivan Magalhaes
1002Maria MarrierRussia2026-03-30King, Christopher A Esq RENEWAL8Asiya Javayant
1003Aditya KuskoUnited Kingdom2026-04-15Rousseaux, Michael Esq PROPOSAL2Asiya Javayant
1004Nicolas IturbideArgentina2026-04-15Dorl, James J Esq UNQUALIFIED53Stephen Shaw
1005Rodrigues CampainCanada2026-04-13Rousseaux, Michael Esq RENEWAL54Stephen Shaw
1006Mujtaba NickaFrance2026-03-27Feiner Bros RENEWAL96Onyama Limba
1007Juan WieserRussia2026-04-01Morlong Associates UNQUALIFIED78Anna Fali
1008Clifford RimSpain2026-03-28Buckley Miller Wright NEGOTIATION62Stephen Shaw
1009Kaitlin OstroskyAustralia2026-04-03Truhlar And Truhlar Attys NEGOTIATION42Ivan Magalhaes
1010Jones VocelkaUnited Kingdom2026-04-05Truhlar And Truhlar Attys PROPOSAL58Anna Fali
1011Leon OldroydSpain2026-04-18King, Christopher A Esq QUALIFIED23Xuxue Feng
1012Leja CaldareraRussia2026-03-28Feltz Printing Service RENEWAL44Ioni Bowcher
1013Munro FerenczCanada2026-03-29Benton, John B Jr NEGOTIATION55Ivan Magalhaes
1014Octavia MaletIndia2026-04-16Rangoni Of Florence UNQUALIFIED78Anna Fali
1015Isabel BowleyArgentina2026-03-29Feiner Bros NEW72Bernardo Dominic
1016Faith GillianUnited Kingdom2026-03-30Printing Dimensions NEGOTIATION52Stephen Shaw
1017Izzy GarufiUnited Kingdom2026-04-15Truhlar And Truhlar Attys UNQUALIFIED16Xuxue Feng
1018Jeanfrancois VenereFrance2026-04-04Rousseaux, Michael Esq RENEWAL85Asiya Javayant
1019Munro FerenczCanada2026-04-04Dorl, James J Esq PROPOSAL46Bernardo Dominic
1020Kaitlin OstroskyItaly2026-04-07Benton, John B Jr UNQUALIFIED14Ivan Magalhaes
1021Clifford RimJapan2026-04-14Truhlar And Truhlar Attys UNQUALIFIED95Asiya Javayant
1022Faith GillianFrance2026-03-28Chanay, Jeffrey A Esq UNQUALIFIED44Bernardo Dominic
1023Deepesh ChuiRussia2026-04-17Buckley Miller Wright RENEWAL86Asiya Javayant
1024Octavia MaletFrance2026-04-11Commercial Press UNQUALIFIED60Stephen Shaw
1025Claire TollnerFrance2026-04-15Benton, John B Jr RENEWAL12Elwin Sharvill
1026Nicolas IturbideUnited Kingdom2026-04-19Dorl, James J Esq PROPOSAL31Stephen Shaw
1027Sinclair WaycottArgentina2026-03-28Feiner Bros QUALIFIED25Onyama Limba
1028Izzy GarufiCanada2026-03-30Truhlar And Truhlar Attys UNQUALIFIED83Xuxue Feng
1029Munro FerenczGermany2026-04-20Feiner Bros UNQUALIFIED33Ioni Bowcher
1030Leja CaldareraBrazil2026-04-05King, Christopher A Esq QUALIFIED12Ioni Bowcher
1031Cody SaylorsUnited Kingdom2026-04-18Morlong Associates NEW39Ivan Magalhaes
1032Costa DilliardUnited Kingdom2026-03-28Dorl, James J Esq NEW42Amy Elsner
1033Alejandro PerinIndia2026-04-12Rangoni Of Florence QUALIFIED58Onyama Limba
1034Tony FollerUnited Kingdom2026-04-09Chemel, James L Cpa NEGOTIATION38Onyama Limba
1035Silvio SlusarskiRussia2026-03-28Dorl, James J Esq RENEWAL22Bernardo Dominic
1036Stacey MacleadSpain2026-04-17Rousseaux, Michael Esq QUALIFIED72Ioni Bowcher
1037Cody SaylorsUnited Kingdom2026-04-17King, Christopher A Esq PROPOSAL95Anna Fali
1038Faith GillianAustralia2026-04-01Chanay, Jeffrey A Esq PROPOSAL10Asiya Javayant
1039Ricardo GauchoRussia2026-04-11Dorl, James J Esq NEW77Onyama Limba
1040Johnson SergiRussia2026-04-13Printing Dimensions NEW87Bernardo Dominic
1041Darci PoquetteSpain2026-04-08Rangoni Of Florence RENEWAL51Elwin Sharvill
1042Isabel BowleyRussia2026-03-30Commercial Press PROPOSAL16Asiya Javayant
1043Izzy GarufiFrance2026-04-05Printing Dimensions PROPOSAL94Ioni Bowcher
1044Aika InouyeRussia2026-04-12Benton, John B Jr NEGOTIATION53Ioni Bowcher
1045Ashley DoeJapan2026-03-26Buckley Miller Wright NEW16Amy Elsner
1046Arvin AlbaresCanada2026-03-31Dorl, James J Esq NEW69Onyama Limba
1047Jennifer AmigonItaly2026-04-01Chapman, Ross E Esq UNQUALIFIED31Onyama Limba
1048Faith GillianAustralia2026-03-26Commercial Press NEGOTIATION61Elwin Sharvill
1049Salvatore StockhamFrance2026-04-21Buckley Miller Wright UNQUALIFIED64Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Isabel BowleyArgentinaAnna Fali PROPOSAL
Greenwood BologniaIndiaAsiya Javayant RENEWAL
Ricardo GauchoBrazilIvan Magalhaes UNQUALIFIED
Aika InouyeUnited KingdomStephen Shaw NEW
Kadeem FlosiRussiaAmy Elsner NEGOTIATION
Octavia MaletArgentinaIoni Bowcher PROPOSAL
Morrow RutaFranceBernardo Dominic QUALIFIED
Johnson SergiRussiaAmy Elsner NEW
Silvio SlusarskiRussiaIoni Bowcher QUALIFIED
Alejandro PerinCanadaAnna Fali PROPOSAL
Mayumi KolmetzCanadaXuxue Feng RENEWAL
Stacey MacleadCanadaOnyama Limba PROPOSAL
Claire TollnerUnited KingdomAsiya Javayant UNQUALIFIED
Francesco ShinkoRussiaBernardo Dominic QUALIFIED
Jeanfrancois VenereCanadaAsiya Javayant NEGOTIATION
Chavez BriddickArgentinaXuxue Feng QUALIFIED
Costa DilliardAustraliaOnyama Limba QUALIFIED
Claire TollnerItalyXuxue Feng PROPOSAL
Aika InouyeFranceAsiya Javayant QUALIFIED
Leon OldroydIndiaAnna Fali QUALIFIED
Tony FollerCanadaElwin Sharvill UNQUALIFIED
Mujtaba NickaAustraliaAsiya Javayant PROPOSAL
Morrow RutaAustraliaXuxue Feng UNQUALIFIED
Alejandro PerinItalyAmy Elsner NEGOTIATION
Ricardo GauchoIndiaXuxue Feng QUALIFIED
David DarakjyItalyStephen Shaw NEW
Isabel BowleyFranceOnyama Limba RENEWAL
Murillo MaletAustraliaOnyama Limba NEGOTIATION
Johnson SergiFranceElwin Sharvill QUALIFIED
Ashley DoeRussiaIvan Magalhaes NEW
Jennifer AmigonCanadaElwin Sharvill NEGOTIATION
Aika InouyeFranceOnyama Limba QUALIFIED
Claire TollnerBrazilElwin Sharvill UNQUALIFIED
Wickens NestleJapanStephen Shaw NEW
Kaitlin OstroskyArgentinaStephen Shaw RENEWAL
Deepesh ChuiCanadaIoni Bowcher NEGOTIATION
Juan WieserJapanAsiya Javayant RENEWAL
Mujtaba NickaAustraliaIoni Bowcher NEGOTIATION
Salvatore StockhamAustraliaAmy Elsner UNQUALIFIED
Cody SaylorsAustraliaIoni Bowcher UNQUALIFIED
Silvio SlusarskiJapanXuxue Feng RENEWAL
Leon OldroydArgentinaIoni Bowcher NEGOTIATION
Morrow RutaCanadaOnyama Limba PROPOSAL
Emily WhobreyArgentinaIvan Magalhaes UNQUALIFIED
Claire TollnerItalyBernardo Dominic NEGOTIATION
Greenwood BologniaGermanyXuxue Feng NEW
Mayumi KolmetzIndiaBernardo Dominic NEGOTIATION
Darci PoquetteBrazilStephen Shaw UNQUALIFIED
Misaki RoysterSpainXuxue Feng UNQUALIFIED
Izzy GarufiAustraliaElwin Sharvill UNQUALIFIED
Frozen Columns
Name
Julie Stenseth
Ivar Paprocki
Ricardo Gaucho
Ivar Paprocki
Mujtaba Nicka
Leja Caldarera
Ricardo Gaucho
Aruna Figeroa
Costa Dilliard
Morrow Ruta
Cody Saylors
Adams Morasca
Alejandro Perin
Costa Dilliard
Emily Whobrey
Johnson Sergi
Maisha Rulapaugh
Leon Oldroyd
Ivar Paprocki
Costa Dilliard
Nicolas Iturbide
Jeanfrancois Venere
Jennifer Amigon
Salvatore Stockham
Kadeem Flosi
Emily Whobrey
Juan Wieser
Leon Oldroyd
Rodrigues Campain
Salvatore Stockham
Leon Oldroyd
Ashley Doe
Clifford Rim
Misaki Royster
Cody Saylors
Aika Inouye
Murillo Malet
David Darakjy
Wickens Nestle
Claire Tollner
Ashley Doe
Silvio Slusarski
Darci Poquette
Jones Vocelka
Alejandro Perin
Munro Ferencz
Maria Marrier
Octavia Malet
Antonio Caudy
Silvio Slusarski
IdCountryDate
1000Brazil2026-04-17
1001Italy2026-03-25
1002Italy2026-04-15
1003United Kingdom2026-04-08
1004Australia2026-03-27
1005Japan2026-04-18
1006France2026-03-26
1007Australia2026-03-27
1008Russia2026-04-09
1009United Kingdom2026-04-14
1010Canada2026-04-01
1011Argentina2026-04-06
1012Brazil2026-04-16
1013Argentina2026-03-28
1014Brazil2026-04-18
1015Argentina2026-04-18
1016Australia2026-04-22
1017India2026-03-28
1018Japan2026-04-20
1019India2026-04-14
1020Australia2026-03-31
1021Australia2026-04-08
1022France2026-03-30
1023Russia2026-04-09
1024France2026-04-22
1025Russia2026-04-04
1026United Kingdom2026-04-06
1027Canada2026-03-30
1028Argentina2026-04-16
1029Japan2026-03-25
1030Russia2026-04-04
1031France2026-04-17
1032Russia2026-04-18
1033France2026-04-01
1034Argentina2026-04-09
1035Australia2026-04-07
1036Russia2026-04-19
1037Australia2026-04-09
1038Brazil2026-03-31
1039Australia2026-04-07
1040Spain2026-04-13
1041France2026-04-04
1042Japan2026-03-31
1043Argentina2026-04-21
1044Italy2026-04-11
1045Australia2026-04-07
1046Argentina2026-04-02
1047India2026-04-20
1048Italy2026-04-15
1049Japan2026-03-31

On-Demand Data

NameIdCountryDate
Clifford Rim1000Canada2026-04-03
Juan Wieser1001Russia2026-04-21
Mayumi Kolmetz1002Argentina2026-03-30
Jefferson Schemmer1003Spain2026-03-31
Julie Stenseth1004Japan2026-04-20
Nicolas Iturbide1005United Kingdom2026-03-29
Leon Oldroyd1006Italy2026-04-03
Jennifer Amigon1007Australia2026-04-18
Faith Gillian1008France2026-04-11
Misaki Royster1009Canada2026-04-09
Munro Ferencz1010Argentina2026-03-27
Kaitlin Ostrosky1011Canada2026-04-05
Antonio Caudy1012Russia2026-04-12
Mayumi Kolmetz1013Germany2026-03-26
Greenwood Bolognia1014Australia2026-04-22
Sinclair Waycott1015Italy2026-04-21
Nicolas Iturbide1016Germany2026-04-13
Ashley Doe1017Australia2026-04-23
Jones Vocelka1018Russia2026-04-08
Smith Glick1019United Kingdom2026-03-28
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Leja CaldareraGermanyStephen Shaw RENEWAL
Arvin AlbaresItalyBernardo Dominic NEW
Deepesh ChuiFranceAmy Elsner NEGOTIATION
Izzy GarufiJapanAsiya Javayant PROPOSAL
Kadeem FlosiFranceIvan Magalhaes QUALIFIED
David DarakjyCanadaAsiya Javayant QUALIFIED
Wickens NestleItalyIoni Bowcher RENEWAL
Ricardo GauchoGermanyElwin Sharvill PROPOSAL
Smith GlickGermanyAnna Fali QUALIFIED
Aditya KuskoRussiaIoni Bowcher RENEWAL
Jones VocelkaSpainStephen Shaw RENEWAL
Jennifer AmigonCanadaBernardo Dominic NEW
Greenwood BologniaIndiaXuxue Feng NEGOTIATION
Cody SaylorsJapanXuxue Feng UNQUALIFIED
Claire TollnerUnited KingdomOnyama Limba UNQUALIFIED
Mujtaba NickaArgentinaStephen Shaw UNQUALIFIED
Misaki RoysterFranceAmy Elsner PROPOSAL
Maria MarrierAustraliaAsiya Javayant NEW
Cody SaylorsAustraliaElwin Sharvill QUALIFIED
Cody SaylorsIndiaAsiya Javayant NEGOTIATION
Jennifer AmigonUnited KingdomStephen Shaw PROPOSAL
Nicolas IturbideItalyAnna Fali NEW
Ashley DoeUnited KingdomIvan Magalhaes UNQUALIFIED
Deepesh ChuiGermanyIvan Magalhaes NEW
Munro FerenczBrazilAsiya Javayant NEW
Maisha RulapaughArgentinaElwin Sharvill NEGOTIATION
Rodrigues CampainGermanyIoni Bowcher RENEWAL
Maisha RulapaughBrazilOnyama Limba PROPOSAL
Morrow RutaUnited KingdomIoni Bowcher RENEWAL
Jennifer AmigonAustraliaIvan Magalhaes RENEWAL
Adams MorascaFranceIvan Magalhaes UNQUALIFIED
Clifford RimIndiaOnyama Limba RENEWAL
Deepesh ChuiIndiaStephen Shaw RENEWAL
Misaki RoysterRussiaBernardo Dominic PROPOSAL
Morrow RutaIndiaXuxue Feng QUALIFIED
Aruna FigeroaFranceAmy Elsner NEGOTIATION
Jones VocelkaRussiaAnna Fali QUALIFIED
Rodrigues CampainItalyAsiya Javayant NEW
Murillo MaletAustraliaElwin Sharvill NEGOTIATION
Kadeem FlosiUnited 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>