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
Stacey MacleadRussiaElwin Sharvill NEGOTIATION
Leon OldroydAustraliaIvan Magalhaes RENEWAL
Murillo MaletJapanAsiya Javayant RENEWAL
Murillo MaletAustraliaAsiya Javayant UNQUALIFIED
Rodrigues CampainArgentinaXuxue Feng UNQUALIFIED
Antonio CaudyJapanElwin Sharvill NEW
Jefferson SchemmerJapanStephen Shaw NEGOTIATION
Jefferson SchemmerJapanAnna Fali RENEWAL
Jefferson SchemmerIndiaIoni Bowcher NEGOTIATION
Arvin AlbaresBrazilXuxue Feng QUALIFIED
Clifford RimIndiaStephen Shaw NEGOTIATION
Chavez BriddickSpainAmy Elsner NEW
Misaki RoysterArgentinaOnyama Limba UNQUALIFIED
Maisha RulapaughItalyAmy Elsner UNQUALIFIED
Mujtaba NickaIndiaAmy Elsner PROPOSAL
Ivar PaprockiAustraliaAmy Elsner NEGOTIATION
Greenwood BologniaJapanStephen Shaw RENEWAL
Leon OldroydArgentinaAsiya Javayant NEGOTIATION
Leon OldroydGermanyStephen Shaw PROPOSAL
Arvin AlbaresGermanyAsiya Javayant NEGOTIATION
Julie StensethItalyXuxue Feng RENEWAL
Costa DilliardItalyElwin Sharvill RENEWAL
Octavia MaletItalyOnyama Limba NEGOTIATION
Rodrigues CampainRussiaIvan Magalhaes RENEWAL
Murillo MaletItalyAsiya Javayant NEW
James ButtCanadaBernardo Dominic UNQUALIFIED
Smith GlickBrazilIoni Bowcher RENEWAL
Johnson SergiUnited KingdomIoni Bowcher RENEWAL
Cody SaylorsBrazilAmy Elsner PROPOSAL
Adams MorascaSpainStephen Shaw UNQUALIFIED
Kadeem FlosiFranceAsiya Javayant QUALIFIED
Stacey MacleadFranceIoni Bowcher PROPOSAL
Clifford RimFranceAsiya Javayant UNQUALIFIED
James ButtCanadaStephen Shaw RENEWAL
Francesco ShinkoFranceIvan Magalhaes UNQUALIFIED
Antonio CaudyItalyIvan Magalhaes NEW
Smith GlickGermanyIvan Magalhaes QUALIFIED
Juan WieserBrazilAnna Fali NEW
Smith GlickIndiaOnyama Limba RENEWAL
Aruna FigeroaItalyOnyama Limba NEW
Aika InouyeBrazilIvan Magalhaes PROPOSAL
Smith GlickArgentinaAnna Fali NEW
Jefferson SchemmerItalyIoni Bowcher UNQUALIFIED
Salvatore StockhamIndiaStephen Shaw QUALIFIED
Juan WieserArgentinaXuxue Feng UNQUALIFIED
Munro FerenczSpainIvan Magalhaes NEGOTIATION
Tony FollerSpainBernardo Dominic QUALIFIED
Darci PoquetteFranceBernardo Dominic RENEWAL
Arvin AlbaresCanadaElwin Sharvill RENEWAL
Tony FollerGermanyBernardo Dominic NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Francesco ShinkoIndiaIvan Magalhaes UNQUALIFIED
Greenwood BologniaRussiaStephen Shaw UNQUALIFIED
Mujtaba NickaRussiaAmy Elsner NEGOTIATION
Aditya KuskoArgentinaIoni Bowcher QUALIFIED
Clifford RimFranceAmy Elsner NEGOTIATION
Stacey MacleadSpainAmy Elsner QUALIFIED
Emily WhobreyIndiaAnna Fali UNQUALIFIED
Jefferson SchemmerFranceAmy Elsner QUALIFIED
Clifford RimUnited KingdomAsiya Javayant NEW
Stacey MacleadArgentinaBernardo Dominic RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Munro FerenczSpain2026-05-26King, Christopher A Esq UNQUALIFIED79Xuxue Feng
1001Greenwood BologniaFrance2026-06-05Chapman, Ross E Esq UNQUALIFIED3Bernardo Dominic
1002Stacey MacleadFrance2026-05-25King, Christopher A Esq NEGOTIATION21Ioni Bowcher
1003Faith GillianFrance2026-06-01Feltz Printing Service RENEWAL71Bernardo Dominic
1004Emily WhobreyFrance2026-06-06Rangoni Of Florence NEGOTIATION58Xuxue Feng
1005Maria MarrierCanada2026-06-03King, Christopher A Esq NEGOTIATION83Asiya Javayant
1006Claire TollnerAustralia2026-06-13Benton, John B Jr QUALIFIED30Amy Elsner
1007Faith GillianArgentina2026-05-31Buckley Miller Wright QUALIFIED25Elwin Sharvill
1008Juan WieserIndia2026-05-28Printing Dimensions UNQUALIFIED22Ivan Magalhaes
1009Faith GillianRussia2026-05-29Chapman, Ross E Esq UNQUALIFIED65Stephen Shaw
1010Maria MarrierUnited Kingdom2026-06-15Rousseaux, Michael Esq PROPOSAL48Amy Elsner
1011Salvatore StockhamFrance2026-06-10Truhlar And Truhlar Attys PROPOSAL34Amy Elsner
1012Julie StensethFrance2026-06-02Rangoni Of Florence PROPOSAL66Xuxue Feng
1013Kaitlin OstroskyFrance2026-06-19Chemel, James L Cpa UNQUALIFIED57Asiya Javayant
1014Mujtaba NickaGermany2026-06-18Rangoni Of Florence QUALIFIED37Bernardo Dominic
1015Munro FerenczGermany2026-05-27Chanay, Jeffrey A Esq RENEWAL39Stephen Shaw
1016Greenwood BologniaAustralia2026-06-02Chapman, Ross E Esq QUALIFIED79Elwin Sharvill
1017Aditya KuskoUnited Kingdom2026-06-09Rousseaux, Michael Esq NEW33Ioni Bowcher
1018Murillo MaletAustralia2026-06-16Dorl, James J Esq NEGOTIATION62Bernardo Dominic
1019Ashley DoeAustralia2026-06-13Dorl, James J Esq QUALIFIED47Amy Elsner
1020Ashley DoeFrance2026-06-03Morlong Associates UNQUALIFIED45Anna Fali
1021Nicolas IturbideUnited Kingdom2026-05-21Benton, John B Jr UNQUALIFIED86Ioni Bowcher
1022Jefferson SchemmerGermany2026-06-09Buckley Miller Wright NEGOTIATION0Stephen Shaw
1023Alejandro PerinIndia2026-06-09Feltz Printing Service RENEWAL4Elwin Sharvill
1024Emily WhobreyJapan2026-06-05King, Christopher A Esq NEW27Xuxue Feng
1025Sinclair WaycottRussia2026-06-13Rangoni Of Florence NEW44Ivan Magalhaes
1026Stacey MacleadIndia2026-06-04Morlong Associates UNQUALIFIED80Anna Fali
1027Smith GlickRussia2026-06-19Rousseaux, Michael Esq RENEWAL58Anna Fali
1028Murillo MaletAustralia2026-05-30Commercial Press QUALIFIED18Xuxue Feng
1029Chavez BriddickGermany2026-06-02Chanay, Jeffrey A Esq UNQUALIFIED70Elwin Sharvill
1030Murillo MaletJapan2026-06-18Chanay, Jeffrey A Esq UNQUALIFIED71Elwin Sharvill
1031Claire TollnerBrazil2026-06-04Commercial Press RENEWAL47Elwin Sharvill
1032Arvin AlbaresBrazil2026-06-01Commercial Press NEGOTIATION79Bernardo Dominic
1033Rodrigues CampainSpain2026-05-29Dorl, James J Esq RENEWAL70Stephen Shaw
1034Greenwood BologniaGermany2026-06-18Dorl, James J Esq PROPOSAL54Xuxue Feng
1035Cody SaylorsBrazil2026-06-05Morlong Associates RENEWAL92Ioni Bowcher
1036Isabel BowleyBrazil2026-06-14Feltz Printing Service QUALIFIED44Ivan Magalhaes
1037Murillo MaletCanada2026-05-21Feltz Printing Service PROPOSAL20Ivan Magalhaes
1038Alejandro PerinAustralia2026-05-21Feltz Printing Service RENEWAL76Onyama Limba
1039Aditya KuskoIndia2026-06-08Chemel, James L Cpa RENEWAL25Elwin Sharvill
1040Leja CaldareraJapan2026-05-23Rangoni Of Florence RENEWAL85Ivan Magalhaes
1041Alejandro PerinJapan2026-05-31Chanay, Jeffrey A Esq PROPOSAL78Elwin Sharvill
1042Francesco ShinkoJapan2026-06-06Morlong Associates UNQUALIFIED68Ioni Bowcher
1043Murillo MaletSpain2026-06-02Truhlar And Truhlar Attys QUALIFIED71Bernardo Dominic
1044Emily WhobreySpain2026-05-27Chemel, James L Cpa QUALIFIED44Ioni Bowcher
1045Ivar PaprockiBrazil2026-05-22Chapman, Ross E Esq PROPOSAL75Xuxue Feng
1046Jennifer AmigonBrazil2026-06-16Printing Dimensions NEW21Ivan Magalhaes
1047Jeanfrancois VenereItaly2026-06-07Printing Dimensions PROPOSAL31Amy Elsner
1048Arvin AlbaresArgentina2026-05-31Rangoni Of Florence NEGOTIATION52Ioni Bowcher
1049Maisha RulapaughRussia2026-06-19Morlong Associates QUALIFIED29Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Deepesh ChuiCanadaXuxue Feng QUALIFIED
Emily WhobreyFranceStephen Shaw QUALIFIED
Emily WhobreyUnited KingdomOnyama Limba RENEWAL
Isabel BowleyIndiaAnna Fali QUALIFIED
Mujtaba NickaSpainAsiya Javayant RENEWAL
Jeanfrancois VenereGermanyAmy Elsner UNQUALIFIED
Jefferson SchemmerArgentinaXuxue Feng PROPOSAL
Rodrigues CampainJapanBernardo Dominic NEGOTIATION
Kaitlin OstroskyRussiaIvan Magalhaes RENEWAL
Antonio CaudyUnited KingdomAnna Fali NEGOTIATION
Jeanfrancois VenereCanadaStephen Shaw UNQUALIFIED
Maisha RulapaughRussiaIvan Magalhaes QUALIFIED
Alejandro PerinArgentinaAnna Fali QUALIFIED
Salvatore StockhamItalyAnna Fali NEGOTIATION
Jeanfrancois VenereSpainAnna Fali NEGOTIATION
Silvio SlusarskiCanadaAnna Fali RENEWAL
Antonio CaudyUnited KingdomOnyama Limba NEW
Ricardo GauchoIndiaIoni Bowcher QUALIFIED
Cody SaylorsUnited KingdomXuxue Feng NEW
Kadeem FlosiBrazilStephen Shaw PROPOSAL
Rodrigues CampainArgentinaStephen Shaw UNQUALIFIED
Juan WieserUnited KingdomAnna Fali UNQUALIFIED
Clifford RimCanadaXuxue Feng PROPOSAL
Tony FollerIndiaAsiya Javayant RENEWAL
Sinclair WaycottArgentinaOnyama Limba RENEWAL
Kadeem FlosiIndiaXuxue Feng NEW
Ivar PaprockiSpainElwin Sharvill NEGOTIATION
Tony FollerCanadaBernardo Dominic UNQUALIFIED
Salvatore StockhamSpainAsiya Javayant NEGOTIATION
Aika InouyeRussiaAsiya Javayant NEW
Juan WieserSpainStephen Shaw NEGOTIATION
Greenwood BologniaArgentinaAsiya Javayant NEGOTIATION
Adams MorascaRussiaXuxue Feng PROPOSAL
Aika InouyeFranceXuxue Feng NEW
Juan WieserAustraliaXuxue Feng NEGOTIATION
James ButtJapanAsiya Javayant UNQUALIFIED
Munro FerenczRussiaAmy Elsner PROPOSAL
Kadeem FlosiAustraliaAsiya Javayant NEW
Costa DilliardSpainIvan Magalhaes UNQUALIFIED
Kadeem FlosiAustraliaBernardo Dominic RENEWAL
Nicolas IturbideArgentinaOnyama Limba NEGOTIATION
Juan WieserUnited KingdomAsiya Javayant QUALIFIED
Isabel BowleyAustraliaIvan Magalhaes PROPOSAL
Arvin AlbaresAustraliaBernardo Dominic NEW
Sinclair WaycottJapanAmy Elsner UNQUALIFIED
Leon OldroydAustraliaStephen Shaw UNQUALIFIED
Ricardo GauchoUnited KingdomOnyama Limba RENEWAL
Darci PoquetteAustraliaAnna Fali QUALIFIED
Wickens NestleFranceElwin Sharvill QUALIFIED
Ashley DoeRussiaOnyama Limba QUALIFIED
Frozen Columns
Name
Leja Caldarera
Smith Glick
Jones Vocelka
Izzy Garufi
Ivar Paprocki
Cody Saylors
Emily Whobrey
David Darakjy
Francesco Shinko
Izzy Garufi
Maria Marrier
Jones Vocelka
Ivar Paprocki
Salvatore Stockham
Isabel Bowley
Mayumi Kolmetz
Juan Wieser
Jones Vocelka
Leon Oldroyd
James Butt
Clifford Rim
Arvin Albares
Aditya Kusko
Octavia Malet
Maria Marrier
Ivar Paprocki
Aditya Kusko
Kaitlin Ostrosky
Adams Morasca
Alejandro Perin
Faith Gillian
Adams Morasca
Jennifer Amigon
Kaitlin Ostrosky
Aruna Figeroa
Ashley Doe
Alejandro Perin
Francesco Shinko
Salvatore Stockham
Ivar Paprocki
Cody Saylors
Adams Morasca
Aika Inouye
Morrow Ruta
Cody Saylors
Isabel Bowley
Murillo Malet
Ashley Doe
Faith Gillian
Sinclair Waycott
IdCountryDate
1000France2026-06-11
1001Brazil2026-06-06
1002France2026-06-18
1003Australia2026-06-11
1004United Kingdom2026-05-30
1005Russia2026-05-22
1006Japan2026-06-09
1007India2026-05-29
1008Argentina2026-06-10
1009Japan2026-06-13
1010Brazil2026-06-04
1011Germany2026-06-09
1012Japan2026-06-13
1013Argentina2026-06-04
1014France2026-06-10
1015India2026-06-04
1016Canada2026-06-04
1017Spain2026-06-16
1018Australia2026-05-29
1019United Kingdom2026-06-09
1020Spain2026-06-03
1021Argentina2026-06-19
1022Russia2026-06-19
1023Germany2026-06-16
1024Australia2026-06-09
1025Spain2026-06-08
1026Brazil2026-05-25
1027Italy2026-06-11
1028Australia2026-05-27
1029Japan2026-05-30
1030Australia2026-05-27
1031Canada2026-05-30
1032Canada2026-05-22
1033United Kingdom2026-06-05
1034Canada2026-05-24
1035Italy2026-05-28
1036Australia2026-06-05
1037United Kingdom2026-06-17
1038France2026-06-13
1039Argentina2026-06-06
1040Italy2026-05-29
1041Germany2026-06-06
1042Germany2026-05-27
1043United Kingdom2026-06-02
1044Brazil2026-06-13
1045Canada2026-06-18
1046France2026-06-14
1047Germany2026-06-04
1048Italy2026-05-29
1049Germany2026-06-11

On-Demand Data

NameIdCountryDate
Arvin Albares1000Japan2026-06-08
Wickens Nestle1001France2026-06-04
Jefferson Schemmer1002Japan2026-05-26
Ashley Doe1003Germany2026-06-14
David Darakjy1004Spain2026-06-01
David Darakjy1005Germany2026-05-22
Tony Foller1006United Kingdom2026-05-22
Deepesh Chui1007Germany2026-06-01
Munro Ferencz1008Italy2026-06-01
Morrow Ruta1009Spain2026-06-17
Francesco Shinko1010Japan2026-06-13
Juan Wieser1011India2026-05-28
Johnson Sergi1012Italy2026-06-14
Munro Ferencz1013Australia2026-06-18
Darci Poquette1014Canada2026-06-13
Antonio Caudy1015Brazil2026-05-24
Arvin Albares1016United Kingdom2026-05-23
Kadeem Flosi1017Russia2026-05-27
Julie Stenseth1018Australia2026-06-02
Aika Inouye1019Brazil2026-05-28
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ashley DoeCanadaStephen Shaw UNQUALIFIED
Ashley DoeAustraliaOnyama Limba QUALIFIED
Mayumi KolmetzBrazilIoni Bowcher NEGOTIATION
Claire TollnerRussiaBernardo Dominic NEGOTIATION
Darci PoquetteBrazilIvan Magalhaes QUALIFIED
Greenwood BologniaRussiaOnyama Limba UNQUALIFIED
Tony FollerIndiaOnyama Limba NEGOTIATION
Cody SaylorsGermanyIoni Bowcher UNQUALIFIED
Chavez BriddickJapanIvan Magalhaes QUALIFIED
Kadeem FlosiItalyBernardo Dominic PROPOSAL
Greenwood BologniaItalyXuxue Feng PROPOSAL
Munro FerenczFranceOnyama Limba QUALIFIED
Leja CaldareraGermanyStephen Shaw QUALIFIED
Alejandro PerinRussiaOnyama Limba QUALIFIED
Wickens NestleSpainStephen Shaw QUALIFIED
Izzy GarufiBrazilOnyama Limba PROPOSAL
Jones VocelkaBrazilIoni Bowcher NEGOTIATION
Silvio SlusarskiGermanyIvan Magalhaes PROPOSAL
Munro FerenczItalyXuxue Feng RENEWAL
Octavia MaletRussiaXuxue Feng RENEWAL
Jefferson SchemmerBrazilOnyama Limba QUALIFIED
Nicolas IturbideFranceAmy Elsner UNQUALIFIED
Silvio SlusarskiRussiaStephen Shaw NEGOTIATION
Alejandro PerinIndiaElwin Sharvill UNQUALIFIED
Emily WhobreyGermanyXuxue Feng NEW
Morrow RutaCanadaStephen Shaw PROPOSAL
Silvio SlusarskiGermanyIoni Bowcher NEW
Faith GillianRussiaOnyama Limba UNQUALIFIED
Murillo MaletCanadaOnyama Limba NEW
Jeanfrancois VenereRussiaAnna Fali NEW
Rodrigues CampainUnited KingdomOnyama Limba QUALIFIED
Darci PoquetteAustraliaAmy Elsner RENEWAL
Jeanfrancois VenereCanadaBernardo Dominic NEW
Mujtaba NickaFranceBernardo Dominic UNQUALIFIED
Kaitlin OstroskyItalyElwin Sharvill NEGOTIATION
Nicolas IturbideFranceOnyama Limba UNQUALIFIED
Kadeem FlosiGermanyStephen Shaw QUALIFIED
Darci PoquetteItalyAsiya Javayant NEGOTIATION
David DarakjyArgentinaBernardo Dominic RENEWAL
Johnson SergiArgentinaXuxue Feng 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>