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
Aruna FigeroaRussiaOnyama Limba QUALIFIED
Kaitlin OstroskySpainIoni Bowcher PROPOSAL
Alejandro PerinItalyIvan Magalhaes RENEWAL
Deepesh ChuiJapanIoni Bowcher RENEWAL
Clifford RimCanadaAmy Elsner NEGOTIATION
Tony FollerJapanBernardo Dominic NEW
Silvio SlusarskiItalyAnna Fali UNQUALIFIED
Stacey MacleadArgentinaElwin Sharvill RENEWAL
Jeanfrancois VenereArgentinaBernardo Dominic RENEWAL
Aditya KuskoFranceIvan Magalhaes NEGOTIATION
David DarakjyCanadaBernardo Dominic PROPOSAL
David DarakjyArgentinaElwin Sharvill RENEWAL
Juan WieserRussiaBernardo Dominic NEW
Rodrigues CampainJapanAsiya Javayant NEGOTIATION
Salvatore StockhamCanadaIoni Bowcher NEGOTIATION
Smith GlickSpainIoni Bowcher UNQUALIFIED
Aruna FigeroaBrazilIvan Magalhaes UNQUALIFIED
Munro FerenczRussiaAmy Elsner NEW
Jones VocelkaSpainBernardo Dominic QUALIFIED
Kaitlin OstroskyJapanAsiya Javayant QUALIFIED
Misaki RoysterBrazilOnyama Limba QUALIFIED
Wickens NestleFranceXuxue Feng QUALIFIED
Jeanfrancois VenereSpainAsiya Javayant QUALIFIED
Maisha RulapaughIndiaElwin Sharvill RENEWAL
David DarakjyArgentinaXuxue Feng PROPOSAL
Jennifer AmigonRussiaIvan Magalhaes PROPOSAL
Jones VocelkaJapanAsiya Javayant NEGOTIATION
Arvin AlbaresSpainAnna Fali QUALIFIED
Arvin AlbaresUnited KingdomElwin Sharvill QUALIFIED
Stacey MacleadAustraliaAmy Elsner QUALIFIED
Murillo MaletCanadaElwin Sharvill NEW
Murillo MaletBrazilElwin Sharvill PROPOSAL
Costa DilliardJapanElwin Sharvill NEGOTIATION
Isabel BowleySpainStephen Shaw NEW
Morrow RutaAustraliaBernardo Dominic UNQUALIFIED
Jefferson SchemmerFranceBernardo Dominic PROPOSAL
Costa DilliardSpainStephen Shaw RENEWAL
Aditya KuskoAustraliaIvan Magalhaes NEGOTIATION
Izzy GarufiCanadaOnyama Limba QUALIFIED
Kadeem FlosiGermanyIvan Magalhaes QUALIFIED
Jennifer AmigonArgentinaElwin Sharvill RENEWAL
Faith GillianItalyIvan Magalhaes QUALIFIED
Smith GlickIndiaStephen Shaw NEGOTIATION
James ButtGermanyElwin Sharvill PROPOSAL
Aditya KuskoJapanAnna Fali NEGOTIATION
Tony FollerItalyStephen Shaw NEGOTIATION
Jeanfrancois VenereItalyAnna Fali UNQUALIFIED
Kadeem FlosiFranceAnna Fali PROPOSAL
Silvio SlusarskiIndiaAmy Elsner PROPOSAL
Chavez BriddickRussiaIvan Magalhaes NEW
Horizontal
NameCountryRepresentativeStatus
Smith GlickSpainIoni Bowcher UNQUALIFIED
Ashley DoeArgentinaOnyama Limba RENEWAL
Mayumi KolmetzIndiaBernardo Dominic NEGOTIATION
Greenwood BologniaAustraliaOnyama Limba UNQUALIFIED
Izzy GarufiItalyXuxue Feng RENEWAL
Silvio SlusarskiIndiaIoni Bowcher UNQUALIFIED
Adams MorascaItalyElwin Sharvill PROPOSAL
Adams MorascaArgentinaElwin Sharvill UNQUALIFIED
Alejandro PerinRussiaIoni Bowcher PROPOSAL
Jennifer AmigonUnited KingdomOnyama Limba QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aika InouyeSpain2026-04-08King, Christopher A Esq RENEWAL23Amy Elsner
1001Maisha RulapaughRussia2026-04-19Rousseaux, Michael Esq UNQUALIFIED25Ivan Magalhaes
1002Murillo MaletArgentina2026-04-14Chapman, Ross E Esq UNQUALIFIED30Elwin Sharvill
1003Emily WhobreyJapan2026-04-04Feiner Bros UNQUALIFIED37Ivan Magalhaes
1004Julie StensethFrance2026-05-02Benton, John B Jr RENEWAL85Ioni Bowcher
1005Octavia MaletArgentina2026-04-24Chapman, Ross E Esq NEGOTIATION60Stephen Shaw
1006Claire TollnerSpain2026-04-29Commercial Press NEGOTIATION26Ivan Magalhaes
1007Munro FerenczCanada2026-04-04Chanay, Jeffrey A Esq RENEWAL59Ioni Bowcher
1008Faith GillianCanada2026-04-25Commercial Press QUALIFIED4Amy Elsner
1009Ashley DoeArgentina2026-04-23Chapman, Ross E Esq PROPOSAL17Elwin Sharvill
1010Jeanfrancois VenereBrazil2026-05-03Chapman, Ross E Esq UNQUALIFIED86Bernardo Dominic
1011Salvatore StockhamCanada2026-05-03King, Christopher A Esq RENEWAL48Xuxue Feng
1012Rodrigues CampainIndia2026-04-11Chanay, Jeffrey A Esq RENEWAL53Asiya Javayant
1013Cody SaylorsRussia2026-04-13Benton, John B Jr NEGOTIATION81Ioni Bowcher
1014Wickens NestleBrazil2026-04-11Chapman, Ross E Esq NEGOTIATION17Asiya Javayant
1015Misaki RoysterFrance2026-05-01King, Christopher A Esq NEGOTIATION33Stephen Shaw
1016Aditya KuskoUnited Kingdom2026-04-06Benton, John B Jr NEGOTIATION84Anna Fali
1017Juan WieserJapan2026-04-06Chapman, Ross E Esq QUALIFIED82Asiya Javayant
1018Arvin AlbaresArgentina2026-04-18Truhlar And Truhlar Attys NEGOTIATION53Onyama Limba
1019Mujtaba NickaGermany2026-04-08King, Christopher A Esq NEGOTIATION39Stephen Shaw
1020Jones VocelkaItaly2026-04-27Truhlar And Truhlar Attys PROPOSAL79Asiya Javayant
1021Jennifer AmigonFrance2026-04-18Chanay, Jeffrey A Esq RENEWAL82Anna Fali
1022Ashley DoeArgentina2026-04-30Morlong Associates NEGOTIATION47Ivan Magalhaes
1023Aika InouyeItaly2026-04-26King, Christopher A Esq UNQUALIFIED87Ioni Bowcher
1024Octavia MaletFrance2026-04-19Benton, John B Jr NEW36Ivan Magalhaes
1025Darci PoquetteSpain2026-04-24Feltz Printing Service QUALIFIED70Onyama Limba
1026Jennifer AmigonRussia2026-04-21Rousseaux, Michael Esq NEGOTIATION48Ioni Bowcher
1027Clifford RimIndia2026-04-16Truhlar And Truhlar Attys RENEWAL90Amy Elsner
1028Chavez BriddickArgentina2026-04-11Chanay, Jeffrey A Esq NEW92Bernardo Dominic
1029Maisha RulapaughArgentina2026-04-16King, Christopher A Esq QUALIFIED0Elwin Sharvill
1030Deepesh ChuiBrazil2026-04-12Rousseaux, Michael Esq PROPOSAL57Ioni Bowcher
1031Morrow RutaArgentina2026-04-06Chapman, Ross E Esq RENEWAL72Bernardo Dominic
1032Isabel BowleyGermany2026-04-08Feltz Printing Service QUALIFIED31Bernardo Dominic
1033David DarakjyGermany2026-04-18Morlong Associates QUALIFIED42Ioni Bowcher
1034Darci PoquetteSpain2026-04-20Rangoni Of Florence NEGOTIATION51Elwin Sharvill
1035Alejandro PerinIndia2026-04-10Rousseaux, Michael Esq QUALIFIED9Asiya Javayant
1036Smith GlickSpain2026-04-27Morlong Associates RENEWAL50Anna Fali
1037David DarakjyCanada2026-04-09Truhlar And Truhlar Attys UNQUALIFIED93Bernardo Dominic
1038Octavia MaletItaly2026-04-20Truhlar And Truhlar Attys QUALIFIED62Ivan Magalhaes
1039Smith GlickBrazil2026-04-28King, Christopher A Esq NEW92Anna Fali
1040Francesco ShinkoArgentina2026-04-14Dorl, James J Esq NEGOTIATION24Ioni Bowcher
1041Maria MarrierArgentina2026-05-03Commercial Press NEGOTIATION58Onyama Limba
1042Adams MorascaCanada2026-05-03Chemel, James L Cpa NEW40Elwin Sharvill
1043Faith GillianArgentina2026-04-14Chanay, Jeffrey A Esq UNQUALIFIED81Elwin Sharvill
1044Leon OldroydCanada2026-04-16Commercial Press UNQUALIFIED54Bernardo Dominic
1045Francesco ShinkoSpain2026-04-17Commercial Press QUALIFIED46Ioni Bowcher
1046Aruna FigeroaCanada2026-04-17Feiner Bros NEGOTIATION77Elwin Sharvill
1047Octavia MaletCanada2026-04-30Rousseaux, Michael Esq UNQUALIFIED62Stephen Shaw
1048Costa DilliardArgentina2026-04-27Feiner Bros UNQUALIFIED29Asiya Javayant
1049Aditya KuskoItaly2026-04-22Chemel, James L Cpa PROPOSAL67Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Mujtaba NickaFranceAsiya Javayant NEW
Silvio SlusarskiJapanOnyama Limba RENEWAL
Smith GlickItalyAsiya Javayant RENEWAL
Darci PoquetteFranceIvan Magalhaes UNQUALIFIED
Chavez BriddickUnited KingdomAsiya Javayant QUALIFIED
Stacey MacleadRussiaOnyama Limba UNQUALIFIED
Murillo MaletIndiaBernardo Dominic RENEWAL
Leon OldroydGermanyAsiya Javayant UNQUALIFIED
Jeanfrancois VenereCanadaAnna Fali RENEWAL
Misaki RoysterBrazilStephen Shaw NEW
Kaitlin OstroskyUnited KingdomOnyama Limba UNQUALIFIED
Jones VocelkaGermanyAsiya Javayant PROPOSAL
Leja CaldareraBrazilBernardo Dominic NEW
Leja CaldareraAustraliaIoni Bowcher UNQUALIFIED
Alejandro PerinJapanAnna Fali QUALIFIED
Jefferson SchemmerUnited KingdomIvan Magalhaes PROPOSAL
Claire TollnerAustraliaIvan Magalhaes PROPOSAL
Tony FollerItalyIoni Bowcher NEGOTIATION
Deepesh ChuiGermanyStephen Shaw NEW
Stacey MacleadArgentinaIvan Magalhaes QUALIFIED
Ashley DoeArgentinaElwin Sharvill NEW
Leon OldroydArgentinaOnyama Limba UNQUALIFIED
Sinclair WaycottBrazilAnna Fali NEW
Antonio CaudyGermanyOnyama Limba PROPOSAL
Adams MorascaAustraliaXuxue Feng NEGOTIATION
Francesco ShinkoAustraliaIvan Magalhaes NEGOTIATION
Aditya KuskoCanadaBernardo Dominic RENEWAL
Misaki RoysterBrazilBernardo Dominic RENEWAL
Francesco ShinkoFranceAsiya Javayant UNQUALIFIED
Aditya KuskoItalyXuxue Feng NEGOTIATION
Smith GlickSpainIvan Magalhaes RENEWAL
Maisha RulapaughRussiaAmy Elsner RENEWAL
Octavia MaletCanadaAmy Elsner RENEWAL
Emily WhobreySpainAsiya Javayant QUALIFIED
Maria MarrierFranceOnyama Limba RENEWAL
Clifford RimRussiaBernardo Dominic RENEWAL
Sinclair WaycottGermanyAnna Fali PROPOSAL
Silvio SlusarskiSpainAmy Elsner NEGOTIATION
Isabel BowleyUnited KingdomOnyama Limba NEW
Stacey MacleadSpainAnna Fali QUALIFIED
James ButtAustraliaAsiya Javayant RENEWAL
Kadeem FlosiAustraliaAmy Elsner NEW
Jefferson SchemmerRussiaElwin Sharvill NEGOTIATION
Maria MarrierItalyElwin Sharvill QUALIFIED
Izzy GarufiSpainAmy Elsner NEGOTIATION
Smith GlickAustraliaIoni Bowcher NEGOTIATION
Jefferson SchemmerJapanIoni Bowcher RENEWAL
Darci PoquetteBrazilStephen Shaw QUALIFIED
Leja CaldareraAustraliaAmy Elsner RENEWAL
Leon OldroydUnited KingdomElwin Sharvill UNQUALIFIED
Frozen Columns
Name
Wickens Nestle
Octavia Malet
Wickens Nestle
Leon Oldroyd
Wickens Nestle
Deepesh Chui
Jones Vocelka
Faith Gillian
Wickens Nestle
Salvatore Stockham
Sinclair Waycott
James Butt
Jennifer Amigon
Aditya Kusko
Aditya Kusko
Jennifer Amigon
James Butt
Antonio Caudy
Adams Morasca
Isabel Bowley
Aika Inouye
Kaitlin Ostrosky
Emily Whobrey
Jennifer Amigon
Francesco Shinko
Adams Morasca
Misaki Royster
Ivar Paprocki
Jeanfrancois Venere
Isabel Bowley
Jones Vocelka
Costa Dilliard
Greenwood Bolognia
James Butt
Mayumi Kolmetz
Darci Poquette
Faith Gillian
Greenwood Bolognia
Salvatore Stockham
Octavia Malet
Smith Glick
Leon Oldroyd
Clifford Rim
Smith Glick
Isabel Bowley
Wickens Nestle
Misaki Royster
Octavia Malet
Aruna Figeroa
Maisha Rulapaugh
IdCountryDate
1000Argentina2026-04-05
1001Russia2026-04-12
1002Spain2026-04-11
1003Australia2026-04-29
1004Canada2026-04-15
1005Japan2026-05-01
1006Russia2026-05-01
1007Brazil2026-04-22
1008Australia2026-04-10
1009United Kingdom2026-04-22
1010Brazil2026-04-25
1011Japan2026-04-16
1012Russia2026-04-28
1013Spain2026-05-02
1014Russia2026-04-27
1015Spain2026-04-14
1016Argentina2026-05-03
1017Australia2026-04-12
1018Italy2026-04-21
1019France2026-04-16
1020Russia2026-05-03
1021Italy2026-04-19
1022Spain2026-04-09
1023Argentina2026-04-09
1024Argentina2026-04-13
1025Argentina2026-04-30
1026Italy2026-04-29
1027Argentina2026-04-29
1028Japan2026-04-14
1029India2026-04-24
1030Brazil2026-04-29
1031Brazil2026-04-15
1032India2026-04-08
1033Argentina2026-04-24
1034Japan2026-04-14
1035Argentina2026-04-11
1036Brazil2026-04-15
1037Brazil2026-04-14
1038India2026-04-28
1039Germany2026-04-13
1040Brazil2026-04-19
1041Italy2026-04-07
1042United Kingdom2026-04-19
1043United Kingdom2026-04-19
1044Canada2026-04-07
1045United Kingdom2026-04-12
1046Italy2026-04-14
1047Argentina2026-04-23
1048Japan2026-04-17
1049Italy2026-04-22

On-Demand Data

NameIdCountryDate
Clifford Rim1000Australia2026-05-02
Rodrigues Campain1001Japan2026-05-01
Salvatore Stockham1002Australia2026-04-26
Tony Foller1003Australia2026-04-18
Chavez Briddick1004Canada2026-04-16
Chavez Briddick1005Canada2026-04-15
Ricardo Gaucho1006Germany2026-04-14
Julie Stenseth1007Italy2026-04-19
Maria Marrier1008France2026-04-30
Costa Dilliard1009Italy2026-04-17
Stacey Maclead1010Brazil2026-04-10
James Butt1011Argentina2026-04-06
Ivar Paprocki1012Italy2026-04-08
Izzy Garufi1013Australia2026-04-17
Chavez Briddick1014France2026-04-05
Claire Tollner1015United Kingdom2026-04-19
Leon Oldroyd1016Italy2026-04-23
Leon Oldroyd1017Italy2026-04-23
Greenwood Bolognia1018United Kingdom2026-04-21
Maisha Rulapaugh1019Brazil2026-04-10
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Wickens NestleRussiaAsiya Javayant QUALIFIED
Emily WhobreySpainOnyama Limba QUALIFIED
Sinclair WaycottFranceStephen Shaw PROPOSAL
Kaitlin OstroskyCanadaIvan Magalhaes NEGOTIATION
Adams MorascaCanadaStephen Shaw QUALIFIED
Johnson SergiCanadaIoni Bowcher NEGOTIATION
Clifford RimItalyIvan Magalhaes NEW
Rodrigues CampainFranceOnyama Limba RENEWAL
Rodrigues CampainBrazilBernardo Dominic NEW
Mujtaba NickaBrazilIvan Magalhaes UNQUALIFIED
Kadeem FlosiFranceIvan Magalhaes RENEWAL
Maisha RulapaughArgentinaIvan Magalhaes UNQUALIFIED
Mujtaba NickaAustraliaAmy Elsner QUALIFIED
Morrow RutaUnited KingdomOnyama Limba QUALIFIED
James ButtSpainIoni Bowcher UNQUALIFIED
Julie StensethIndiaElwin Sharvill RENEWAL
Faith GillianArgentinaIoni Bowcher UNQUALIFIED
Chavez BriddickItalyOnyama Limba UNQUALIFIED
Cody SaylorsJapanStephen Shaw PROPOSAL
Jennifer AmigonRussiaIoni Bowcher QUALIFIED
Chavez BriddickUnited KingdomXuxue Feng RENEWAL
Alejandro PerinIndiaAsiya Javayant QUALIFIED
Mujtaba NickaAustraliaAmy Elsner PROPOSAL
Silvio SlusarskiJapanOnyama Limba NEW
Greenwood BologniaGermanyAnna Fali UNQUALIFIED
Salvatore StockhamCanadaStephen Shaw NEGOTIATION
Antonio CaudyBrazilAnna Fali QUALIFIED
Cody SaylorsRussiaStephen Shaw QUALIFIED
Faith GillianAustraliaAnna Fali NEGOTIATION
Leja CaldareraItalyElwin Sharvill PROPOSAL
Aditya KuskoIndiaXuxue Feng RENEWAL
Ashley DoeUnited KingdomIoni Bowcher PROPOSAL
Stacey MacleadJapanIoni Bowcher QUALIFIED
Silvio SlusarskiCanadaIoni Bowcher PROPOSAL
Faith GillianCanadaXuxue Feng UNQUALIFIED
Stacey MacleadBrazilIvan Magalhaes NEGOTIATION
Deepesh ChuiJapanAnna Fali RENEWAL
Misaki RoysterRussiaElwin Sharvill NEW
Jones VocelkaFranceXuxue Feng RENEWAL
Johnson SergiIndiaAmy Elsner 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>