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
Leon OldroydRussiaAmy Elsner NEGOTIATION
Tony FollerAustraliaAsiya Javayant UNQUALIFIED
Juan WieserIndiaXuxue Feng PROPOSAL
Francesco ShinkoFranceAsiya Javayant RENEWAL
Leja CaldareraJapanIvan Magalhaes QUALIFIED
Chavez BriddickIndiaAmy Elsner NEW
Aruna FigeroaUnited KingdomOnyama Limba PROPOSAL
Mayumi KolmetzFranceElwin Sharvill NEW
Izzy GarufiArgentinaAmy Elsner NEW
Jefferson SchemmerBrazilOnyama Limba PROPOSAL
Claire TollnerGermanyAsiya Javayant UNQUALIFIED
Jennifer AmigonAustraliaIoni Bowcher QUALIFIED
Murillo MaletFranceIoni Bowcher RENEWAL
Alejandro PerinGermanyAnna Fali QUALIFIED
Jeanfrancois VenereRussiaAnna Fali PROPOSAL
Sinclair WaycottJapanXuxue Feng NEW
Aika InouyeGermanyAsiya Javayant NEGOTIATION
Francesco ShinkoIndiaIvan Magalhaes QUALIFIED
Costa DilliardCanadaAnna Fali NEW
Mayumi KolmetzArgentinaAnna Fali UNQUALIFIED
Stacey MacleadAustraliaStephen Shaw NEW
Cody SaylorsBrazilElwin Sharvill NEGOTIATION
Mujtaba NickaSpainBernardo Dominic QUALIFIED
Arvin AlbaresRussiaAsiya Javayant RENEWAL
Greenwood BologniaArgentinaAmy Elsner PROPOSAL
Mayumi KolmetzRussiaElwin Sharvill UNQUALIFIED
Adams MorascaArgentinaXuxue Feng QUALIFIED
Juan WieserBrazilAnna Fali QUALIFIED
Aditya KuskoIndiaAnna Fali UNQUALIFIED
Jefferson SchemmerFranceBernardo Dominic PROPOSAL
Claire TollnerCanadaXuxue Feng PROPOSAL
Ricardo GauchoItalyAnna Fali NEW
Kaitlin OstroskyIndiaIoni Bowcher QUALIFIED
Jennifer AmigonItalyBernardo Dominic QUALIFIED
Antonio CaudyCanadaStephen Shaw NEGOTIATION
Kadeem FlosiItalyAmy Elsner NEW
Alejandro PerinItalyOnyama Limba UNQUALIFIED
Maisha RulapaughItalyAnna Fali QUALIFIED
Juan WieserSpainElwin Sharvill PROPOSAL
Jennifer AmigonGermanyAsiya Javayant RENEWAL
Chavez BriddickJapanAmy Elsner PROPOSAL
Smith GlickAustraliaIoni Bowcher UNQUALIFIED
Kadeem FlosiAustraliaXuxue Feng NEGOTIATION
Jeanfrancois VenereFranceElwin Sharvill UNQUALIFIED
Jones VocelkaGermanyIvan Magalhaes NEW
Juan WieserJapanIoni Bowcher QUALIFIED
Kaitlin OstroskyItalyElwin Sharvill UNQUALIFIED
Antonio CaudyBrazilStephen Shaw PROPOSAL
David DarakjyFranceAmy Elsner QUALIFIED
Johnson SergiAustraliaStephen Shaw NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Ricardo GauchoFranceAmy Elsner RENEWAL
Julie StensethArgentinaStephen Shaw NEW
Jeanfrancois VenereJapanIoni Bowcher PROPOSAL
Jones VocelkaSpainOnyama Limba PROPOSAL
Rodrigues CampainCanadaAsiya Javayant RENEWAL
Maria MarrierBrazilIoni Bowcher NEGOTIATION
Aruna FigeroaItalyBernardo Dominic UNQUALIFIED
Adams MorascaBrazilAmy Elsner RENEWAL
Wickens NestleFranceOnyama Limba RENEWAL
Johnson SergiCanadaIvan Magalhaes NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jefferson SchemmerGermany2026-04-28Commercial Press NEW29Bernardo Dominic
1001Aika InouyeUnited Kingdom2026-05-01Printing Dimensions NEW60Anna Fali
1002Kaitlin OstroskyCanada2026-05-05Commercial Press RENEWAL93Ioni Bowcher
1003Aika InouyeCanada2026-05-22Benton, John B Jr NEGOTIATION3Onyama Limba
1004Misaki RoysterJapan2026-05-17Printing Dimensions UNQUALIFIED60Ioni Bowcher
1005Costa DilliardFrance2026-05-01Rangoni Of Florence NEW57Elwin Sharvill
1006Ricardo GauchoAustralia2026-05-17Benton, John B Jr UNQUALIFIED0Bernardo Dominic
1007Morrow RutaRussia2026-05-17Buckley Miller Wright UNQUALIFIED22Anna Fali
1008Smith GlickBrazil2026-05-04Chapman, Ross E Esq RENEWAL50Stephen Shaw
1009Stacey MacleadBrazil2026-04-30Printing Dimensions QUALIFIED28Xuxue Feng
1010Claire TollnerAustralia2026-05-11Feltz Printing Service RENEWAL96Elwin Sharvill
1011Salvatore StockhamArgentina2026-04-30Buckley Miller Wright UNQUALIFIED50Elwin Sharvill
1012Clifford RimCanada2026-05-04Chapman, Ross E Esq QUALIFIED61Bernardo Dominic
1013Mayumi KolmetzJapan2026-05-20King, Christopher A Esq UNQUALIFIED57Ioni Bowcher
1014Salvatore StockhamBrazil2026-05-04Chanay, Jeffrey A Esq UNQUALIFIED3Xuxue Feng
1015Smith GlickIndia2026-05-22Chemel, James L Cpa PROPOSAL38Ivan Magalhaes
1016Deepesh ChuiUnited Kingdom2026-04-30Chapman, Ross E Esq NEW1Ioni Bowcher
1017Kaitlin OstroskySpain2026-05-06Rangoni Of Florence UNQUALIFIED52Elwin Sharvill
1018Kaitlin OstroskyArgentina2026-05-06Feltz Printing Service UNQUALIFIED43Ivan Magalhaes
1019Stacey MacleadUnited Kingdom2026-05-24Printing Dimensions QUALIFIED40Xuxue Feng
1020Claire TollnerBrazil2026-05-24Rangoni Of Florence PROPOSAL40Onyama Limba
1021Jennifer AmigonBrazil2026-05-09Rousseaux, Michael Esq RENEWAL41Ivan Magalhaes
1022Stacey MacleadRussia2026-05-02Buckley Miller Wright NEGOTIATION8Amy Elsner
1023Kadeem FlosiIndia2026-05-11Chanay, Jeffrey A Esq RENEWAL60Anna Fali
1024Antonio CaudySpain2026-05-12Rousseaux, Michael Esq RENEWAL8Anna Fali
1025Johnson SergiItaly2026-05-06Commercial Press NEW55Bernardo Dominic
1026Darci PoquetteBrazil2026-05-23Chapman, Ross E Esq UNQUALIFIED75Xuxue Feng
1027Alejandro PerinRussia2026-05-23Chemel, James L Cpa UNQUALIFIED26Stephen Shaw
1028Mujtaba NickaJapan2026-05-23Printing Dimensions UNQUALIFIED31Anna Fali
1029Chavez BriddickCanada2026-05-12Benton, John B Jr QUALIFIED2Bernardo Dominic
1030Julie StensethCanada2026-05-12Morlong Associates NEGOTIATION38Asiya Javayant
1031Izzy GarufiBrazil2026-05-23Commercial Press QUALIFIED22Stephen Shaw
1032Julie StensethBrazil2026-05-09Rousseaux, Michael Esq RENEWAL15Stephen Shaw
1033Smith GlickRussia2026-05-22Benton, John B Jr UNQUALIFIED2Ivan Magalhaes
1034Ivar PaprockiBrazil2026-05-20Printing Dimensions PROPOSAL16Asiya Javayant
1035Johnson SergiFrance2026-05-09Buckley Miller Wright NEGOTIATION83Anna Fali
1036Nicolas IturbideCanada2026-05-26King, Christopher A Esq UNQUALIFIED44Onyama Limba
1037Francesco ShinkoAustralia2026-05-15Buckley Miller Wright RENEWAL83Ivan Magalhaes
1038Chavez BriddickJapan2026-05-04Dorl, James J Esq RENEWAL68Asiya Javayant
1039Francesco ShinkoBrazil2026-04-29Feiner Bros QUALIFIED51Asiya Javayant
1040Emily WhobreyJapan2026-05-10Chapman, Ross E Esq QUALIFIED12Xuxue Feng
1041David DarakjyArgentina2026-05-13Feiner Bros PROPOSAL68Elwin Sharvill
1042Silvio SlusarskiSpain2026-05-16Chemel, James L Cpa QUALIFIED31Elwin Sharvill
1043Ricardo GauchoSpain2026-05-10Benton, John B Jr NEGOTIATION94Ioni Bowcher
1044Jeanfrancois VenereRussia2026-04-27Benton, John B Jr PROPOSAL21Ioni Bowcher
1045Misaki RoysterFrance2026-05-07Chanay, Jeffrey A Esq NEW71Onyama Limba
1046Aika InouyeJapan2026-04-29King, Christopher A Esq QUALIFIED55Ivan Magalhaes
1047Ricardo GauchoRussia2026-05-17Chanay, Jeffrey A Esq NEW64Asiya Javayant
1048Morrow RutaGermany2026-05-05Rangoni Of Florence UNQUALIFIED66Onyama Limba
1049Chavez BriddickAustralia2026-05-08Buckley Miller Wright QUALIFIED8Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Mayumi KolmetzUnited KingdomXuxue Feng NEW
Jefferson SchemmerUnited KingdomAnna Fali RENEWAL
Aika InouyeCanadaStephen Shaw RENEWAL
Greenwood BologniaArgentinaElwin Sharvill RENEWAL
Aika InouyeRussiaAnna Fali PROPOSAL
Stacey MacleadSpainOnyama Limba UNQUALIFIED
Octavia MaletBrazilIoni Bowcher PROPOSAL
Morrow RutaBrazilAsiya Javayant PROPOSAL
Mayumi KolmetzAustraliaIoni Bowcher NEGOTIATION
Tony FollerJapanAmy Elsner UNQUALIFIED
Tony FollerJapanElwin Sharvill RENEWAL
Julie StensethUnited KingdomIvan Magalhaes NEGOTIATION
Izzy GarufiSpainStephen Shaw QUALIFIED
Murillo MaletCanadaAsiya Javayant NEGOTIATION
Stacey MacleadIndiaAmy Elsner UNQUALIFIED
Johnson SergiRussiaStephen Shaw PROPOSAL
Ricardo GauchoArgentinaOnyama Limba QUALIFIED
Leja CaldareraFranceElwin Sharvill QUALIFIED
Tony FollerGermanyAsiya Javayant RENEWAL
Tony FollerSpainStephen Shaw RENEWAL
Misaki RoysterIndiaStephen Shaw RENEWAL
Mayumi KolmetzAustraliaIvan Magalhaes NEGOTIATION
Silvio SlusarskiBrazilBernardo Dominic NEGOTIATION
Morrow RutaSpainAnna Fali UNQUALIFIED
Costa DilliardIndiaAnna Fali NEW
Silvio SlusarskiIndiaOnyama Limba NEGOTIATION
Adams MorascaGermanyBernardo Dominic QUALIFIED
Mayumi KolmetzIndiaAnna Fali QUALIFIED
Emily WhobreyArgentinaIvan Magalhaes PROPOSAL
Ricardo GauchoBrazilIvan Magalhaes NEGOTIATION
Silvio SlusarskiGermanyAsiya Javayant RENEWAL
Tony FollerRussiaIoni Bowcher UNQUALIFIED
Adams MorascaRussiaXuxue Feng UNQUALIFIED
Jeanfrancois VenereCanadaIoni Bowcher QUALIFIED
Jefferson SchemmerFranceIvan Magalhaes PROPOSAL
Faith GillianItalyOnyama Limba NEGOTIATION
Salvatore StockhamItalyIoni Bowcher NEW
Ashley DoeFranceElwin Sharvill RENEWAL
Claire TollnerJapanIvan Magalhaes QUALIFIED
Kaitlin OstroskyUnited KingdomXuxue Feng PROPOSAL
Mayumi KolmetzGermanyElwin Sharvill RENEWAL
Jennifer AmigonAustraliaOnyama Limba NEW
Jeanfrancois VenereFranceXuxue Feng RENEWAL
James ButtSpainIoni Bowcher NEW
Octavia MaletUnited KingdomElwin Sharvill PROPOSAL
Aditya KuskoIndiaStephen Shaw RENEWAL
Antonio CaudyJapanAnna Fali NEW
Clifford RimItalyOnyama Limba NEW
Stacey MacleadBrazilAmy Elsner QUALIFIED
Aruna FigeroaUnited KingdomIoni Bowcher UNQUALIFIED
Frozen Columns
Name
Arvin Albares
Leja Caldarera
Octavia Malet
Johnson Sergi
Claire Tollner
Deepesh Chui
Leon Oldroyd
Ivar Paprocki
Johnson Sergi
Adams Morasca
Jennifer Amigon
Izzy Garufi
Nicolas Iturbide
Jefferson Schemmer
Maisha Rulapaugh
Greenwood Bolognia
Aditya Kusko
Alejandro Perin
Kaitlin Ostrosky
Mayumi Kolmetz
Costa Dilliard
David Darakjy
Maisha Rulapaugh
Adams Morasca
Maria Marrier
Rodrigues Campain
Octavia Malet
Smith Glick
Ashley Doe
Kaitlin Ostrosky
James Butt
Izzy Garufi
Leon Oldroyd
Emily Whobrey
Murillo Malet
Julie Stenseth
Aika Inouye
Aika Inouye
Murillo Malet
Kaitlin Ostrosky
Ivar Paprocki
Murillo Malet
Arvin Albares
Stacey Maclead
Jones Vocelka
Aika Inouye
Munro Ferencz
Munro Ferencz
Mayumi Kolmetz
Francesco Shinko
IdCountryDate
1000Russia2026-04-28
1001Brazil2026-05-16
1002Brazil2026-04-28
1003United Kingdom2026-05-10
1004France2026-04-30
1005Canada2026-05-02
1006Argentina2026-05-25
1007India2026-05-24
1008India2026-05-22
1009Spain2026-04-29
1010United Kingdom2026-05-11
1011France2026-05-13
1012United Kingdom2026-05-08
1013Spain2026-04-29
1014France2026-05-08
1015Germany2026-05-19
1016Russia2026-05-26
1017Germany2026-05-20
1018Spain2026-05-11
1019Spain2026-05-07
1020Spain2026-05-22
1021Canada2026-05-22
1022Japan2026-05-15
1023Argentina2026-05-01
1024Japan2026-05-16
1025Brazil2026-05-01
1026Brazil2026-05-01
1027India2026-05-08
1028Canada2026-04-28
1029Spain2026-04-29
1030India2026-05-13
1031Canada2026-05-02
1032Spain2026-05-01
1033India2026-05-25
1034Australia2026-04-29
1035Canada2026-05-22
1036Brazil2026-05-02
1037Argentina2026-05-18
1038Spain2026-04-29
1039India2026-05-03
1040Brazil2026-05-09
1041France2026-05-23
1042Germany2026-05-18
1043United Kingdom2026-05-02
1044Argentina2026-05-13
1045Spain2026-05-20
1046Germany2026-05-25
1047France2026-05-12
1048United Kingdom2026-05-08
1049India2026-05-18

On-Demand Data

NameIdCountryDate
Ricardo Gaucho1000Australia2026-05-25
Munro Ferencz1001Japan2026-05-15
Wickens Nestle1002Italy2026-05-18
Stacey Maclead1003Russia2026-05-24
Johnson Sergi1004Australia2026-05-11
David Darakjy1005India2026-05-11
Rodrigues Campain1006Australia2026-05-20
Ivar Paprocki1007India2026-05-20
Munro Ferencz1008Canada2026-04-30
Johnson Sergi1009Argentina2026-05-21
Murillo Malet1010India2026-05-13
Francesco Shinko1011Argentina2026-05-12
Jones Vocelka1012France2026-05-24
Rodrigues Campain1013Canada2026-05-04
Izzy Garufi1014Canada2026-05-09
Izzy Garufi1015Canada2026-04-29
Munro Ferencz1016France2026-05-25
Morrow Ruta1017Japan2026-04-30
Leon Oldroyd1018Canada2026-05-11
Jeanfrancois Venere1019Russia2026-05-19
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Wickens NestleBrazilOnyama Limba UNQUALIFIED
Jones VocelkaArgentinaAmy Elsner PROPOSAL
Costa DilliardGermanyOnyama Limba RENEWAL
Silvio SlusarskiUnited KingdomAmy Elsner NEGOTIATION
Tony FollerFranceXuxue Feng NEGOTIATION
Kaitlin OstroskySpainOnyama Limba NEW
Leja CaldareraAustraliaAnna Fali NEW
Clifford RimBrazilStephen Shaw NEW
Wickens NestleCanadaIoni Bowcher RENEWAL
Salvatore StockhamGermanyElwin Sharvill NEGOTIATION
Kadeem FlosiArgentinaOnyama Limba RENEWAL
Emily WhobreyUnited KingdomXuxue Feng PROPOSAL
Costa DilliardIndiaOnyama Limba QUALIFIED
Stacey MacleadIndiaXuxue Feng UNQUALIFIED
David DarakjyCanadaXuxue Feng UNQUALIFIED
Kadeem FlosiJapanIoni Bowcher NEW
Darci PoquetteAustraliaAnna Fali PROPOSAL
Cody SaylorsRussiaAnna Fali UNQUALIFIED
Maisha RulapaughJapanAsiya Javayant RENEWAL
Greenwood BologniaRussiaBernardo Dominic UNQUALIFIED
Jones VocelkaJapanAnna Fali QUALIFIED
Jones VocelkaSpainIvan Magalhaes UNQUALIFIED
Jefferson SchemmerFranceAsiya Javayant QUALIFIED
Isabel BowleyRussiaXuxue Feng QUALIFIED
Aika InouyeUnited KingdomBernardo Dominic QUALIFIED
Munro FerenczFranceAsiya Javayant QUALIFIED
Mujtaba NickaJapanBernardo Dominic NEW
Munro FerenczFranceIoni Bowcher NEGOTIATION
Costa DilliardSpainAsiya Javayant RENEWAL
Jones VocelkaSpainStephen Shaw UNQUALIFIED
Mujtaba NickaSpainAsiya Javayant QUALIFIED
Emily WhobreyJapanStephen Shaw NEW
Jennifer AmigonIndiaOnyama Limba NEW
Murillo MaletAustraliaAsiya Javayant QUALIFIED
Adams MorascaJapanOnyama Limba QUALIFIED
Juan WieserIndiaIoni Bowcher NEW
Claire TollnerIndiaIvan Magalhaes PROPOSAL
Adams MorascaCanadaIoni Bowcher QUALIFIED
Sinclair WaycottItalyIvan Magalhaes PROPOSAL
Leja CaldareraAustraliaIoni Bowcher 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>