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
Jefferson SchemmerBrazilIvan Magalhaes RENEWAL
David DarakjyAustraliaAnna Fali NEGOTIATION
Faith GillianSpainElwin Sharvill QUALIFIED
Johnson SergiUnited KingdomBernardo Dominic QUALIFIED
Smith GlickJapanOnyama Limba NEW
Salvatore StockhamUnited KingdomElwin Sharvill NEGOTIATION
Clifford RimSpainOnyama Limba PROPOSAL
Murillo MaletAustraliaBernardo Dominic UNQUALIFIED
Rodrigues CampainAustraliaAmy Elsner RENEWAL
Aruna FigeroaUnited KingdomElwin Sharvill QUALIFIED
Stacey MacleadSpainAsiya Javayant RENEWAL
Costa DilliardFranceStephen Shaw NEW
Cody SaylorsRussiaIvan Magalhaes RENEWAL
Ashley DoeBrazilOnyama Limba NEGOTIATION
Octavia MaletArgentinaIoni Bowcher NEGOTIATION
Maria MarrierAustraliaIoni Bowcher UNQUALIFIED
Darci PoquetteFranceElwin Sharvill NEW
Darci PoquetteUnited KingdomIvan Magalhaes QUALIFIED
Juan WieserBrazilStephen Shaw RENEWAL
Emily WhobreyRussiaAnna Fali PROPOSAL
Costa DilliardBrazilBernardo Dominic NEW
Mayumi KolmetzGermanyIoni Bowcher QUALIFIED
Aditya KuskoUnited KingdomAnna Fali PROPOSAL
Jefferson SchemmerIndiaIoni Bowcher NEW
Murillo MaletCanadaBernardo Dominic PROPOSAL
Smith GlickJapanIvan Magalhaes QUALIFIED
Munro FerenczUnited KingdomXuxue Feng RENEWAL
Claire TollnerBrazilElwin Sharvill QUALIFIED
Mujtaba NickaArgentinaElwin Sharvill UNQUALIFIED
Kadeem FlosiBrazilAmy Elsner NEGOTIATION
Jones VocelkaCanadaAmy Elsner NEGOTIATION
Ricardo GauchoUnited KingdomElwin Sharvill RENEWAL
Munro FerenczSpainAnna Fali NEW
Johnson SergiRussiaBernardo Dominic UNQUALIFIED
Adams MorascaRussiaAsiya Javayant NEW
Ashley DoeIndiaIoni Bowcher RENEWAL
Johnson SergiUnited KingdomAmy Elsner UNQUALIFIED
Kadeem FlosiAustraliaAmy Elsner UNQUALIFIED
Costa DilliardGermanyBernardo Dominic NEGOTIATION
Adams MorascaSpainStephen Shaw UNQUALIFIED
Jennifer AmigonJapanIoni Bowcher NEGOTIATION
Ricardo GauchoAustraliaAsiya Javayant PROPOSAL
Nicolas IturbideArgentinaOnyama Limba PROPOSAL
Ivar PaprockiBrazilAnna Fali NEGOTIATION
Jefferson SchemmerJapanIoni Bowcher RENEWAL
Jeanfrancois VenereFranceBernardo Dominic QUALIFIED
Leon OldroydAustraliaStephen Shaw NEW
Chavez BriddickGermanyAnna Fali RENEWAL
Aruna FigeroaFranceAmy Elsner NEGOTIATION
Faith GillianFranceXuxue Feng RENEWAL
Horizontal
NameCountryRepresentativeStatus
Antonio CaudyArgentinaBernardo Dominic RENEWAL
Ricardo GauchoBrazilElwin Sharvill NEW
Sinclair WaycottRussiaAmy Elsner NEW
Isabel BowleyItalyAmy Elsner NEGOTIATION
Claire TollnerSpainAmy Elsner NEGOTIATION
Antonio CaudyArgentinaElwin Sharvill NEGOTIATION
Darci PoquetteIndiaOnyama Limba UNQUALIFIED
Mayumi KolmetzIndiaStephen Shaw NEGOTIATION
Munro FerenczBrazilIoni Bowcher NEGOTIATION
James ButtItalyAnna Fali NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Alejandro PerinArgentina2026-05-04Chapman, Ross E Esq PROPOSAL7Bernardo Dominic
1001Jefferson SchemmerAustralia2026-04-24Buckley Miller Wright PROPOSAL21Elwin Sharvill
1002Antonio CaudyUnited Kingdom2026-04-23Truhlar And Truhlar Attys QUALIFIED40Ioni Bowcher
1003Leja CaldareraFrance2026-04-26Feiner Bros UNQUALIFIED41Ivan Magalhaes
1004Jefferson SchemmerCanada2026-05-04Printing Dimensions NEW76Asiya Javayant
1005Jennifer AmigonFrance2026-04-20Printing Dimensions QUALIFIED12Asiya Javayant
1006Rodrigues CampainAustralia2026-04-18Truhlar And Truhlar Attys QUALIFIED85Asiya Javayant
1007Kadeem FlosiSpain2026-04-20Morlong Associates NEW42Onyama Limba
1008Smith GlickCanada2026-05-06Printing Dimensions PROPOSAL28Ivan Magalhaes
1009Morrow RutaRussia2026-05-05Commercial Press RENEWAL67Onyama Limba
1010Aruna FigeroaAustralia2026-04-21Feiner Bros UNQUALIFIED72Ioni Bowcher
1011James ButtIndia2026-04-20Morlong Associates QUALIFIED53Ivan Magalhaes
1012Munro FerenczArgentina2026-04-25Buckley Miller Wright UNQUALIFIED23Stephen Shaw
1013James ButtCanada2026-05-06Rousseaux, Michael Esq NEGOTIATION66Anna Fali
1014James ButtFrance2026-04-13King, Christopher A Esq QUALIFIED77Ioni Bowcher
1015Clifford RimArgentina2026-04-24Benton, John B Jr NEW5Anna Fali
1016Jennifer AmigonGermany2026-04-24Chapman, Ross E Esq NEW43Ioni Bowcher
1017Deepesh ChuiItaly2026-04-27King, Christopher A Esq NEGOTIATION29Stephen Shaw
1018Emily WhobreyRussia2026-04-22Morlong Associates UNQUALIFIED1Stephen Shaw
1019Jeanfrancois VenereIndia2026-04-19Rangoni Of Florence UNQUALIFIED96Bernardo Dominic
1020Aika InouyeUnited Kingdom2026-04-30Feltz Printing Service QUALIFIED18Amy Elsner
1021Leja CaldareraIndia2026-04-19Printing Dimensions PROPOSAL84Elwin Sharvill
1022Clifford RimFrance2026-04-20Rousseaux, Michael Esq QUALIFIED70Amy Elsner
1023Chavez BriddickIndia2026-04-23Commercial Press RENEWAL27Anna Fali
1024Alejandro PerinFrance2026-05-02Printing Dimensions NEGOTIATION19Ioni Bowcher
1025Jennifer AmigonJapan2026-05-01Chanay, Jeffrey A Esq NEGOTIATION36Amy Elsner
1026Ashley DoeAustralia2026-05-06Chapman, Ross E Esq NEW1Xuxue Feng
1027Jennifer AmigonItaly2026-05-05Feiner Bros PROPOSAL69Asiya Javayant
1028Sinclair WaycottGermany2026-04-29Rousseaux, Michael Esq UNQUALIFIED77Ivan Magalhaes
1029Maisha RulapaughJapan2026-04-24Printing Dimensions RENEWAL2Asiya Javayant
1030Misaki RoysterJapan2026-04-11Rangoni Of Florence NEGOTIATION32Anna Fali
1031Aruna FigeroaBrazil2026-04-15Dorl, James J Esq UNQUALIFIED66Anna Fali
1032Aditya KuskoArgentina2026-05-02Benton, John B Jr RENEWAL8Onyama Limba
1033James ButtRussia2026-04-14Commercial Press NEGOTIATION3Bernardo Dominic
1034Ricardo GauchoCanada2026-04-24Dorl, James J Esq NEGOTIATION46Anna Fali
1035Francesco ShinkoGermany2026-04-11Benton, John B Jr QUALIFIED33Bernardo Dominic
1036Murillo MaletUnited Kingdom2026-04-29Chemel, James L Cpa PROPOSAL58Anna Fali
1037Smith GlickSpain2026-05-02Buckley Miller Wright PROPOSAL99Asiya Javayant
1038Julie StensethFrance2026-04-25Chemel, James L Cpa NEGOTIATION24Amy Elsner
1039Kadeem FlosiBrazil2026-04-23Feltz Printing Service QUALIFIED94Stephen Shaw
1040Darci PoquetteUnited Kingdom2026-04-15Chemel, James L Cpa UNQUALIFIED36Stephen Shaw
1041Juan WieserFrance2026-04-20Commercial Press PROPOSAL90Ioni Bowcher
1042Leja CaldareraItaly2026-04-13Rousseaux, Michael Esq RENEWAL61Ivan Magalhaes
1043Aika InouyeFrance2026-04-09Feiner Bros QUALIFIED86Bernardo Dominic
1044Emily WhobreyAustralia2026-04-21Truhlar And Truhlar Attys UNQUALIFIED10Stephen Shaw
1045Alejandro PerinCanada2026-04-10Rousseaux, Michael Esq UNQUALIFIED67Ioni Bowcher
1046Antonio CaudyArgentina2026-04-25Rousseaux, Michael Esq RENEWAL40Stephen Shaw
1047Aika InouyeJapan2026-05-02Rousseaux, Michael Esq QUALIFIED4Elwin Sharvill
1048Leon OldroydGermany2026-05-07Feltz Printing Service NEW41Bernardo Dominic
1049Francesco ShinkoAustralia2026-04-09Commercial Press UNQUALIFIED89Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Sinclair WaycottCanadaOnyama Limba UNQUALIFIED
Costa DilliardAustraliaOnyama Limba NEW
Emily WhobreyItalyBernardo Dominic NEGOTIATION
Faith GillianFranceIvan Magalhaes RENEWAL
Ricardo GauchoIndiaBernardo Dominic NEW
Silvio SlusarskiFranceBernardo Dominic NEGOTIATION
Salvatore StockhamFranceBernardo Dominic NEW
Francesco ShinkoItalyOnyama Limba QUALIFIED
Smith GlickAustraliaIoni Bowcher NEW
Salvatore StockhamIndiaAmy Elsner NEW
Francesco ShinkoArgentinaIvan Magalhaes QUALIFIED
Stacey MacleadJapanElwin Sharvill NEW
Izzy GarufiAustraliaBernardo Dominic NEW
Kaitlin OstroskyAustraliaIvan Magalhaes NEW
Alejandro PerinAustraliaXuxue Feng NEGOTIATION
Emily WhobreyGermanyAsiya Javayant PROPOSAL
Aruna FigeroaArgentinaAnna Fali NEGOTIATION
Costa DilliardCanadaAmy Elsner UNQUALIFIED
Antonio CaudyIndiaStephen Shaw QUALIFIED
Chavez BriddickAustraliaXuxue Feng NEGOTIATION
Clifford RimFranceIvan Magalhaes RENEWAL
Misaki RoysterJapanIoni Bowcher QUALIFIED
David DarakjyAustraliaElwin Sharvill NEGOTIATION
Claire TollnerAustraliaAmy Elsner QUALIFIED
Jeanfrancois VenereArgentinaIoni Bowcher QUALIFIED
Aditya KuskoJapanElwin Sharvill NEGOTIATION
Jennifer AmigonCanadaElwin Sharvill RENEWAL
Misaki RoysterGermanyElwin Sharvill NEGOTIATION
Salvatore StockhamFranceOnyama Limba UNQUALIFIED
Emily WhobreyBrazilIvan Magalhaes QUALIFIED
Stacey MacleadIndiaElwin Sharvill NEW
Faith GillianFranceAmy Elsner UNQUALIFIED
Mujtaba NickaFranceIoni Bowcher UNQUALIFIED
Costa DilliardCanadaAsiya Javayant PROPOSAL
Greenwood BologniaUnited KingdomOnyama Limba QUALIFIED
Sinclair WaycottCanadaIoni Bowcher NEW
Aditya KuskoAustraliaStephen Shaw NEGOTIATION
Octavia MaletGermanyIoni Bowcher NEGOTIATION
Jones VocelkaFranceIoni Bowcher UNQUALIFIED
Sinclair WaycottSpainBernardo Dominic UNQUALIFIED
Wickens NestleGermanyXuxue Feng UNQUALIFIED
Murillo MaletRussiaIvan Magalhaes UNQUALIFIED
Tony FollerJapanXuxue Feng NEW
Faith GillianItalyAsiya Javayant RENEWAL
Izzy GarufiItalyAsiya Javayant UNQUALIFIED
Misaki RoysterUnited KingdomAmy Elsner NEW
Jennifer AmigonRussiaAnna Fali PROPOSAL
Leon OldroydCanadaXuxue Feng RENEWAL
Isabel BowleyUnited KingdomOnyama Limba NEW
Jones VocelkaUnited KingdomXuxue Feng RENEWAL
Frozen Columns
Name
Maisha Rulapaugh
Isabel Bowley
Nicolas Iturbide
Costa Dilliard
Stacey Maclead
Faith Gillian
Silvio Slusarski
Alejandro Perin
Rodrigues Campain
Smith Glick
Alejandro Perin
Leja Caldarera
Johnson Sergi
Jones Vocelka
David Darakjy
Deepesh Chui
Sinclair Waycott
Juan Wieser
Ashley Doe
Ivar Paprocki
Adams Morasca
Aditya Kusko
Kadeem Flosi
Aruna Figeroa
James Butt
Leja Caldarera
Ivar Paprocki
Adams Morasca
Silvio Slusarski
Ivar Paprocki
Salvatore Stockham
Wickens Nestle
Rodrigues Campain
Izzy Garufi
Aika Inouye
Ricardo Gaucho
Wickens Nestle
Aditya Kusko
Jeanfrancois Venere
Leon Oldroyd
Morrow Ruta
Faith Gillian
Smith Glick
Leon Oldroyd
Jeanfrancois Venere
Kaitlin Ostrosky
Claire Tollner
Maisha Rulapaugh
Emily Whobrey
Johnson Sergi
IdCountryDate
1000Canada2026-04-24
1001Brazil2026-05-01
1002Spain2026-04-26
1003Australia2026-04-25
1004Canada2026-05-06
1005Canada2026-04-09
1006Germany2026-04-19
1007Russia2026-04-21
1008Canada2026-05-06
1009Germany2026-04-18
1010France2026-05-01
1011Brazil2026-05-08
1012Australia2026-04-18
1013Canada2026-04-21
1014Spain2026-04-21
1015France2026-05-01
1016India2026-04-23
1017Russia2026-05-04
1018Brazil2026-04-19
1019United Kingdom2026-05-08
1020France2026-04-28
1021Russia2026-04-22
1022Germany2026-04-28
1023Germany2026-05-08
1024France2026-04-30
1025India2026-05-03
1026Australia2026-04-29
1027Japan2026-05-02
1028Argentina2026-04-21
1029India2026-05-07
1030Russia2026-04-09
1031Russia2026-05-05
1032Germany2026-05-04
1033Spain2026-05-07
1034Italy2026-04-16
1035Japan2026-04-13
1036Italy2026-04-21
1037Spain2026-04-24
1038United Kingdom2026-04-24
1039Australia2026-05-06
1040Italy2026-04-10
1041Argentina2026-05-01
1042Australia2026-04-21
1043United Kingdom2026-04-30
1044Italy2026-04-12
1045Argentina2026-04-16
1046Canada2026-04-16
1047Argentina2026-04-19
1048Japan2026-04-17
1049Brazil2026-04-13

On-Demand Data

NameIdCountryDate
Juan Wieser1000Japan2026-05-07
Maisha Rulapaugh1001India2026-05-04
Jones Vocelka1002Russia2026-04-25
Julie Stenseth1003Russia2026-04-29
Salvatore Stockham1004Russia2026-05-01
Stacey Maclead1005India2026-05-01
Murillo Malet1006Japan2026-05-03
Arvin Albares1007Canada2026-04-17
Arvin Albares1008Australia2026-04-28
Arvin Albares1009Brazil2026-04-24
Rodrigues Campain1010Japan2026-04-11
Antonio Caudy1011Spain2026-04-22
Murillo Malet1012United Kingdom2026-04-21
Morrow Ruta1013Brazil2026-04-14
Cody Saylors1014Spain2026-04-21
Jefferson Schemmer1015France2026-04-16
Jones Vocelka1016Argentina2026-04-19
Munro Ferencz1017Italy2026-05-07
Greenwood Bolognia1018Japan2026-04-13
Ivar Paprocki1019Australia2026-04-19
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Leja CaldareraRussiaAmy Elsner RENEWAL
Johnson SergiSpainBernardo Dominic NEGOTIATION
Adams MorascaIndiaElwin Sharvill QUALIFIED
Mayumi KolmetzFranceOnyama Limba RENEWAL
Ricardo GauchoJapanIoni Bowcher NEW
Tony FollerFranceAmy Elsner UNQUALIFIED
Jones VocelkaArgentinaOnyama Limba PROPOSAL
Ricardo GauchoSpainAsiya Javayant UNQUALIFIED
Ivar PaprockiJapanOnyama Limba QUALIFIED
Izzy GarufiGermanyElwin Sharvill QUALIFIED
Jones VocelkaRussiaOnyama Limba UNQUALIFIED
Alejandro PerinCanadaXuxue Feng RENEWAL
Mujtaba NickaFranceIoni Bowcher QUALIFIED
Isabel BowleyRussiaOnyama Limba UNQUALIFIED
Sinclair WaycottArgentinaIoni Bowcher NEW
Claire TollnerFranceStephen Shaw PROPOSAL
Alejandro PerinIndiaAnna Fali NEGOTIATION
Mujtaba NickaJapanAsiya Javayant PROPOSAL
Murillo MaletGermanyXuxue Feng QUALIFIED
Arvin AlbaresSpainXuxue Feng NEW
Julie StensethSpainIvan Magalhaes NEGOTIATION
David DarakjyBrazilOnyama Limba NEW
Octavia MaletGermanyStephen Shaw QUALIFIED
Kaitlin OstroskyRussiaStephen Shaw PROPOSAL
Jones VocelkaArgentinaElwin Sharvill UNQUALIFIED
Stacey MacleadUnited KingdomBernardo Dominic QUALIFIED
Emily WhobreyArgentinaElwin Sharvill PROPOSAL
James ButtJapanXuxue Feng PROPOSAL
Rodrigues CampainItalyAsiya Javayant QUALIFIED
Smith GlickArgentinaOnyama Limba NEW
Leon OldroydAustraliaElwin Sharvill UNQUALIFIED
Emily WhobreyJapanElwin Sharvill UNQUALIFIED
Clifford RimFranceIoni Bowcher UNQUALIFIED
Costa DilliardAustraliaAmy Elsner UNQUALIFIED
Izzy GarufiAustraliaAsiya Javayant QUALIFIED
Faith GillianAustraliaElwin Sharvill NEGOTIATION
Kadeem FlosiItalyAsiya Javayant PROPOSAL
Kaitlin OstroskyFranceAsiya Javayant PROPOSAL
Maisha RulapaughFranceAmy Elsner NEW
Wickens NestleItalyAsiya Javayant UNQUALIFIED

<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>