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
Salvatore StockhamFranceAsiya Javayant NEW
Aika InouyeUnited KingdomAsiya Javayant NEGOTIATION
Chavez BriddickBrazilElwin Sharvill QUALIFIED
Antonio CaudyGermanyAmy Elsner NEGOTIATION
Costa DilliardBrazilElwin Sharvill QUALIFIED
Chavez BriddickBrazilStephen Shaw QUALIFIED
Greenwood BologniaArgentinaBernardo Dominic RENEWAL
Claire TollnerCanadaElwin Sharvill QUALIFIED
Arvin AlbaresBrazilIoni Bowcher QUALIFIED
Costa DilliardAustraliaOnyama Limba NEGOTIATION
Mujtaba NickaAustraliaAsiya Javayant RENEWAL
Aditya KuskoCanadaIvan Magalhaes PROPOSAL
Jones VocelkaGermanyAnna Fali NEGOTIATION
Arvin AlbaresSpainAnna Fali RENEWAL
Aruna FigeroaJapanAmy Elsner PROPOSAL
Wickens NestleAustraliaXuxue Feng RENEWAL
Misaki RoysterJapanAsiya Javayant PROPOSAL
Tony FollerJapanAsiya Javayant QUALIFIED
Munro FerenczRussiaAnna Fali NEGOTIATION
Jeanfrancois VenereGermanyAmy Elsner RENEWAL
Johnson SergiRussiaAmy Elsner NEW
Wickens NestleIndiaXuxue Feng QUALIFIED
James ButtFranceElwin Sharvill QUALIFIED
Sinclair WaycottItalyIvan Magalhaes PROPOSAL
Cody SaylorsItalyElwin Sharvill UNQUALIFIED
Ricardo GauchoIndiaIvan Magalhaes RENEWAL
Emily WhobreyGermanyElwin Sharvill QUALIFIED
Mujtaba NickaRussiaXuxue Feng NEGOTIATION
Isabel BowleySpainBernardo Dominic QUALIFIED
Jefferson SchemmerFranceIoni Bowcher PROPOSAL
Alejandro PerinUnited KingdomOnyama Limba PROPOSAL
Tony FollerFranceIvan Magalhaes RENEWAL
Antonio CaudySpainXuxue Feng NEGOTIATION
Munro FerenczFranceAsiya Javayant RENEWAL
Leon OldroydGermanyStephen Shaw NEW
Jeanfrancois VenereAustraliaBernardo Dominic UNQUALIFIED
Juan WieserArgentinaOnyama Limba QUALIFIED
Cody SaylorsArgentinaIoni Bowcher NEGOTIATION
Nicolas IturbideCanadaXuxue Feng RENEWAL
Arvin AlbaresFranceXuxue Feng PROPOSAL
Tony FollerFranceAnna Fali UNQUALIFIED
Octavia MaletBrazilStephen Shaw RENEWAL
Deepesh ChuiAustraliaIoni Bowcher PROPOSAL
Leon OldroydFranceAnna Fali PROPOSAL
Kadeem FlosiBrazilElwin Sharvill PROPOSAL
Johnson SergiBrazilAsiya Javayant RENEWAL
Mayumi KolmetzBrazilBernardo Dominic RENEWAL
Kaitlin OstroskyRussiaAmy Elsner NEGOTIATION
Cody SaylorsJapanXuxue Feng UNQUALIFIED
Jones VocelkaGermanyAmy Elsner UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Stacey MacleadCanadaXuxue Feng NEW
Mujtaba NickaSpainXuxue Feng PROPOSAL
Jefferson SchemmerAustraliaAmy Elsner PROPOSAL
Jefferson SchemmerSpainOnyama Limba RENEWAL
Juan WieserGermanyAnna Fali RENEWAL
Julie StensethRussiaAmy Elsner RENEWAL
Aruna FigeroaItalyXuxue Feng PROPOSAL
Misaki RoysterBrazilAsiya Javayant RENEWAL
Kadeem FlosiAustraliaAnna Fali NEGOTIATION
Stacey MacleadItalyAsiya Javayant RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Juan WieserGermany2026-04-05Rousseaux, Michael Esq NEGOTIATION67Xuxue Feng
1001Clifford RimUnited Kingdom2026-04-20Morlong Associates PROPOSAL43Ioni Bowcher
1002Smith GlickFrance2026-04-12Benton, John B Jr UNQUALIFIED81Bernardo Dominic
1003Chavez BriddickIndia2026-04-13Buckley Miller Wright QUALIFIED82Asiya Javayant
1004Cody SaylorsRussia2026-03-23Benton, John B Jr QUALIFIED12Asiya Javayant
1005Octavia MaletBrazil2026-04-05Rousseaux, Michael Esq RENEWAL71Stephen Shaw
1006Stacey MacleadJapan2026-04-08Chanay, Jeffrey A Esq NEW58Ivan Magalhaes
1007Maria MarrierJapan2026-03-31Commercial Press UNQUALIFIED53Elwin Sharvill
1008Maria MarrierUnited Kingdom2026-03-25Rangoni Of Florence PROPOSAL29Elwin Sharvill
1009Ricardo GauchoItaly2026-03-28Chanay, Jeffrey A Esq RENEWAL63Xuxue Feng
1010Deepesh ChuiSpain2026-04-18Rangoni Of Florence NEGOTIATION96Bernardo Dominic
1011Alejandro PerinSpain2026-04-18King, Christopher A Esq PROPOSAL81Anna Fali
1012Octavia MaletIndia2026-04-05Commercial Press NEGOTIATION40Asiya Javayant
1013Julie StensethItaly2026-03-25Chapman, Ross E Esq UNQUALIFIED50Asiya Javayant
1014Nicolas IturbideBrazil2026-04-08Feltz Printing Service PROPOSAL64Asiya Javayant
1015Mayumi KolmetzAustralia2026-04-04Dorl, James J Esq NEW42Xuxue Feng
1016Johnson SergiSpain2026-04-01Buckley Miller Wright RENEWAL2Onyama Limba
1017Aruna FigeroaArgentina2026-03-30Chapman, Ross E Esq UNQUALIFIED16Ivan Magalhaes
1018David DarakjyFrance2026-04-09Commercial Press NEW72Ioni Bowcher
1019Ivar PaprockiUnited Kingdom2026-03-25Dorl, James J Esq PROPOSAL18Ivan Magalhaes
1020Morrow RutaArgentina2026-03-29Dorl, James J Esq UNQUALIFIED16Asiya Javayant
1021James ButtAustralia2026-03-27Buckley Miller Wright UNQUALIFIED23Anna Fali
1022Chavez BriddickIndia2026-04-20Commercial Press QUALIFIED80Onyama Limba
1023James ButtCanada2026-04-19Printing Dimensions RENEWAL33Ivan Magalhaes
1024Misaki RoysterIndia2026-04-17King, Christopher A Esq UNQUALIFIED39Amy Elsner
1025Silvio SlusarskiIndia2026-03-25Feiner Bros PROPOSAL73Asiya Javayant
1026Claire TollnerCanada2026-04-11Buckley Miller Wright NEGOTIATION84Ioni Bowcher
1027Leja CaldareraFrance2026-04-01Dorl, James J Esq RENEWAL91Stephen Shaw
1028Johnson SergiFrance2026-04-02Dorl, James J Esq QUALIFIED56Anna Fali
1029Mujtaba NickaUnited Kingdom2026-04-04Truhlar And Truhlar Attys NEGOTIATION67Anna Fali
1030Aditya KuskoRussia2026-03-28Benton, John B Jr QUALIFIED53Xuxue Feng
1031Kaitlin OstroskyItaly2026-04-02Buckley Miller Wright PROPOSAL87Bernardo Dominic
1032Chavez BriddickBrazil2026-04-04Feltz Printing Service UNQUALIFIED68Asiya Javayant
1033Smith GlickJapan2026-04-07Commercial Press PROPOSAL28Onyama Limba
1034Aditya KuskoGermany2026-04-20King, Christopher A Esq NEGOTIATION36Onyama Limba
1035Aruna FigeroaUnited Kingdom2026-03-23King, Christopher A Esq NEGOTIATION66Bernardo Dominic
1036Emily WhobreySpain2026-04-18Truhlar And Truhlar Attys NEW15Bernardo Dominic
1037Rodrigues CampainSpain2026-04-11King, Christopher A Esq QUALIFIED22Ivan Magalhaes
1038Julie StensethAustralia2026-04-03Rangoni Of Florence RENEWAL82Anna Fali
1039Morrow RutaSpain2026-03-25King, Christopher A Esq RENEWAL86Amy Elsner
1040Maisha RulapaughSpain2026-04-05Buckley Miller Wright UNQUALIFIED21Elwin Sharvill
1041Murillo MaletGermany2026-04-04Truhlar And Truhlar Attys QUALIFIED48Anna Fali
1042Clifford RimAustralia2026-04-13Chemel, James L Cpa QUALIFIED55Anna Fali
1043David DarakjyBrazil2026-04-20Chapman, Ross E Esq UNQUALIFIED14Elwin Sharvill
1044Francesco ShinkoAustralia2026-04-04Buckley Miller Wright UNQUALIFIED17Anna Fali
1045Ashley DoeSpain2026-04-18Chapman, Ross E Esq QUALIFIED24Elwin Sharvill
1046Kaitlin OstroskyItaly2026-03-28Feltz Printing Service RENEWAL38Amy Elsner
1047Aruna FigeroaItaly2026-04-16Rousseaux, Michael Esq PROPOSAL63Stephen Shaw
1048Emily WhobreyRussia2026-04-21Printing Dimensions RENEWAL12Bernardo Dominic
1049Greenwood BologniaUnited Kingdom2026-04-05Chapman, Ross E Esq UNQUALIFIED22Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Isabel BowleyFranceAsiya Javayant NEW
Silvio SlusarskiRussiaElwin Sharvill PROPOSAL
Francesco ShinkoGermanyAnna Fali UNQUALIFIED
Chavez BriddickGermanyIvan Magalhaes QUALIFIED
David DarakjyArgentinaIoni Bowcher RENEWAL
Kaitlin OstroskyArgentinaElwin Sharvill QUALIFIED
Munro FerenczArgentinaIoni Bowcher NEGOTIATION
Juan WieserGermanyAsiya Javayant QUALIFIED
Silvio SlusarskiRussiaOnyama Limba NEW
Julie StensethFranceStephen Shaw RENEWAL
Mayumi KolmetzSpainAmy Elsner NEW
Morrow RutaRussiaAsiya Javayant UNQUALIFIED
Nicolas IturbideArgentinaIoni Bowcher UNQUALIFIED
Darci PoquetteRussiaElwin Sharvill PROPOSAL
Ivar PaprockiFranceAnna Fali NEW
Tony FollerIndiaBernardo Dominic NEGOTIATION
Antonio CaudyRussiaIvan Magalhaes RENEWAL
Leja CaldareraItalyAmy Elsner RENEWAL
Octavia MaletCanadaAnna Fali NEW
Misaki RoysterFranceStephen Shaw PROPOSAL
Salvatore StockhamItalyIoni Bowcher NEGOTIATION
Kadeem FlosiCanadaElwin Sharvill RENEWAL
Ashley DoeBrazilXuxue Feng NEW
Jeanfrancois VenereRussiaIvan Magalhaes QUALIFIED
Ivar PaprockiGermanyAnna Fali QUALIFIED
Maisha RulapaughJapanAnna Fali PROPOSAL
Alejandro PerinCanadaAmy Elsner QUALIFIED
Rodrigues CampainGermanyStephen Shaw QUALIFIED
James ButtBrazilOnyama Limba QUALIFIED
Mujtaba NickaSpainBernardo Dominic UNQUALIFIED
Smith GlickJapanAsiya Javayant NEGOTIATION
Julie StensethJapanElwin Sharvill PROPOSAL
Morrow RutaArgentinaIoni Bowcher RENEWAL
Octavia MaletAustraliaIoni Bowcher PROPOSAL
Deepesh ChuiArgentinaOnyama Limba QUALIFIED
Ivar PaprockiUnited KingdomElwin Sharvill QUALIFIED
Maria MarrierGermanyIoni Bowcher NEW
Salvatore StockhamGermanyOnyama Limba NEW
Aruna FigeroaItalyXuxue Feng RENEWAL
Sinclair WaycottArgentinaAmy Elsner PROPOSAL
Jones VocelkaSpainElwin Sharvill NEGOTIATION
Kaitlin OstroskyBrazilAmy Elsner QUALIFIED
Arvin AlbaresIndiaOnyama Limba UNQUALIFIED
Alejandro PerinJapanIvan Magalhaes PROPOSAL
Faith GillianBrazilAsiya Javayant UNQUALIFIED
Ivar PaprockiIndiaIoni Bowcher NEGOTIATION
Chavez BriddickUnited KingdomAnna Fali NEGOTIATION
Jefferson SchemmerRussiaStephen Shaw QUALIFIED
Misaki RoysterIndiaElwin Sharvill NEGOTIATION
Ashley DoeCanadaElwin Sharvill QUALIFIED
Frozen Columns
Name
Darci Poquette
Emily Whobrey
Clifford Rim
Kadeem Flosi
Jefferson Schemmer
Adams Morasca
Misaki Royster
Costa Dilliard
Costa Dilliard
Aruna Figeroa
Silvio Slusarski
Francesco Shinko
Salvatore Stockham
James Butt
Leon Oldroyd
Salvatore Stockham
Aditya Kusko
Aruna Figeroa
Alejandro Perin
Nicolas Iturbide
Maria Marrier
Ricardo Gaucho
Ricardo Gaucho
Sinclair Waycott
Adams Morasca
Jones Vocelka
Izzy Garufi
Tony Foller
Cody Saylors
Juan Wieser
Izzy Garufi
Greenwood Bolognia
Cody Saylors
Jennifer Amigon
Deepesh Chui
Smith Glick
Munro Ferencz
Juan Wieser
Chavez Briddick
Mujtaba Nicka
Julie Stenseth
Leja Caldarera
Clifford Rim
Jennifer Amigon
Deepesh Chui
Antonio Caudy
Francesco Shinko
Costa Dilliard
Smith Glick
Arvin Albares
IdCountryDate
1000India2026-04-05
1001Germany2026-04-07
1002United Kingdom2026-04-12
1003Australia2026-03-29
1004Japan2026-04-09
1005Argentina2026-03-29
1006Japan2026-04-09
1007Argentina2026-04-09
1008Russia2026-04-13
1009Italy2026-04-12
1010Japan2026-04-21
1011Spain2026-04-05
1012India2026-04-12
1013Italy2026-04-18
1014France2026-03-24
1015Argentina2026-04-15
1016Canada2026-03-25
1017Australia2026-04-16
1018India2026-04-20
1019Italy2026-04-05
1020Germany2026-04-05
1021Spain2026-03-23
1022Spain2026-03-23
1023Japan2026-03-23
1024Spain2026-04-08
1025United Kingdom2026-03-23
1026Argentina2026-04-13
1027India2026-04-20
1028France2026-03-29
1029Japan2026-04-10
1030United Kingdom2026-04-07
1031India2026-04-02
1032Canada2026-04-14
1033Canada2026-04-11
1034Brazil2026-04-01
1035Russia2026-04-05
1036Argentina2026-04-04
1037Germany2026-03-30
1038Canada2026-03-26
1039United Kingdom2026-03-29
1040Japan2026-03-27
1041Australia2026-04-04
1042Japan2026-03-31
1043Germany2026-04-20
1044Spain2026-03-30
1045Spain2026-03-28
1046Japan2026-03-24
1047Australia2026-03-27
1048Germany2026-04-18
1049United Kingdom2026-04-13

On-Demand Data

NameIdCountryDate
Francesco Shinko1000India2026-04-10
Jennifer Amigon1001Italy2026-04-13
Nicolas Iturbide1002France2026-04-10
Ricardo Gaucho1003India2026-04-15
Mujtaba Nicka1004India2026-04-07
Kadeem Flosi1005France2026-03-29
Johnson Sergi1006United Kingdom2026-04-12
Aika Inouye1007India2026-04-01
Izzy Garufi1008Canada2026-03-27
Juan Wieser1009France2026-04-08
Aruna Figeroa1010United Kingdom2026-04-01
Deepesh Chui1011Canada2026-04-09
Maria Marrier1012Canada2026-04-08
Tony Foller1013Australia2026-04-06
Jefferson Schemmer1014Canada2026-04-17
Sinclair Waycott1015Brazil2026-03-26
Deepesh Chui1016India2026-03-28
Aika Inouye1017Russia2026-04-02
Jefferson Schemmer1018France2026-04-02
Jones Vocelka1019Spain2026-04-04
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Emily WhobreyIndiaXuxue Feng UNQUALIFIED
Ivar PaprockiUnited KingdomStephen Shaw NEGOTIATION
Francesco ShinkoAustraliaAsiya Javayant QUALIFIED
Claire TollnerUnited KingdomAnna Fali UNQUALIFIED
Nicolas IturbideArgentinaXuxue Feng QUALIFIED
Silvio SlusarskiBrazilElwin Sharvill QUALIFIED
Jennifer AmigonSpainAsiya Javayant QUALIFIED
Misaki RoysterCanadaIoni Bowcher NEW
Adams MorascaFranceAsiya Javayant UNQUALIFIED
Greenwood BologniaUnited KingdomAmy Elsner RENEWAL
Sinclair WaycottArgentinaBernardo Dominic UNQUALIFIED
Francesco ShinkoSpainBernardo Dominic RENEWAL
Ashley DoeAustraliaIoni Bowcher RENEWAL
Deepesh ChuiGermanyIvan Magalhaes QUALIFIED
Ivar PaprockiBrazilOnyama Limba QUALIFIED
Costa DilliardBrazilIoni Bowcher NEGOTIATION
Mujtaba NickaBrazilIoni Bowcher UNQUALIFIED
Darci PoquetteBrazilXuxue Feng PROPOSAL
David DarakjyRussiaIvan Magalhaes RENEWAL
Mujtaba NickaJapanElwin Sharvill NEGOTIATION
Leja CaldareraItalyAmy Elsner RENEWAL
Tony FollerIndiaElwin Sharvill NEW
Maisha RulapaughAustraliaXuxue Feng RENEWAL
Adams MorascaAustraliaBernardo Dominic NEGOTIATION
Misaki RoysterItalyAnna Fali UNQUALIFIED
Jefferson SchemmerArgentinaIvan Magalhaes PROPOSAL
Chavez BriddickRussiaElwin Sharvill PROPOSAL
Kaitlin OstroskyArgentinaIvan Magalhaes NEW
Izzy GarufiRussiaXuxue Feng NEGOTIATION
Salvatore StockhamFranceAmy Elsner UNQUALIFIED
Greenwood BologniaIndiaIoni Bowcher RENEWAL
Jeanfrancois VenereCanadaAnna Fali NEGOTIATION
Emily WhobreyArgentinaOnyama Limba NEW
Jefferson SchemmerJapanAmy Elsner PROPOSAL
Ivar PaprockiRussiaIvan Magalhaes UNQUALIFIED
Leon OldroydItalyElwin Sharvill UNQUALIFIED
Claire TollnerSpainAmy Elsner NEGOTIATION
Izzy GarufiRussiaXuxue Feng RENEWAL
Adams MorascaRussiaAsiya Javayant UNQUALIFIED
Ivar PaprockiGermanyOnyama Limba QUALIFIED

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