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
Smith GlickUnited KingdomOnyama Limba QUALIFIED
Emily WhobreyUnited KingdomAmy Elsner RENEWAL
Antonio CaudyArgentinaBernardo Dominic UNQUALIFIED
Sinclair WaycottGermanyXuxue Feng NEW
Aditya KuskoFranceBernardo Dominic NEW
Isabel BowleyAustraliaStephen Shaw NEW
Alejandro PerinJapanBernardo Dominic RENEWAL
Greenwood BologniaArgentinaAmy Elsner NEGOTIATION
Maria MarrierItalyAnna Fali NEGOTIATION
Rodrigues CampainAustraliaIoni Bowcher NEW
Claire TollnerAustraliaIoni Bowcher RENEWAL
Jeanfrancois VenereBrazilElwin Sharvill RENEWAL
Chavez BriddickRussiaAnna Fali RENEWAL
Emily WhobreyArgentinaXuxue Feng NEGOTIATION
Tony FollerFranceIoni Bowcher RENEWAL
Ivar PaprockiRussiaIvan Magalhaes NEGOTIATION
Nicolas IturbideUnited KingdomAmy Elsner NEGOTIATION
Morrow RutaItalyIvan Magalhaes NEGOTIATION
Salvatore StockhamRussiaXuxue Feng UNQUALIFIED
Octavia MaletRussiaIvan Magalhaes NEGOTIATION
Chavez BriddickUnited KingdomAnna Fali NEW
Misaki RoysterBrazilIoni Bowcher RENEWAL
Cody SaylorsGermanyIvan Magalhaes PROPOSAL
David DarakjyCanadaElwin Sharvill QUALIFIED
Jeanfrancois VenereGermanyOnyama Limba UNQUALIFIED
Faith GillianAustraliaElwin Sharvill PROPOSAL
Jennifer AmigonIndiaOnyama Limba QUALIFIED
Mujtaba NickaIndiaIoni Bowcher UNQUALIFIED
Juan WieserSpainIvan Magalhaes PROPOSAL
Nicolas IturbideItalyStephen Shaw RENEWAL
Misaki RoysterRussiaAnna Fali QUALIFIED
Kaitlin OstroskyRussiaAsiya Javayant NEW
Wickens NestleJapanAmy Elsner UNQUALIFIED
Smith GlickItalyOnyama Limba QUALIFIED
Maisha RulapaughUnited KingdomIoni Bowcher QUALIFIED
Jeanfrancois VenereAustraliaOnyama Limba PROPOSAL
Mujtaba NickaRussiaIvan Magalhaes QUALIFIED
Costa DilliardGermanyXuxue Feng NEGOTIATION
Leon OldroydAustraliaXuxue Feng NEW
Kaitlin OstroskySpainOnyama Limba NEGOTIATION
Octavia MaletJapanOnyama Limba NEW
Francesco ShinkoIndiaAsiya Javayant QUALIFIED
Cody SaylorsItalyAnna Fali NEW
Juan WieserSpainXuxue Feng NEW
Izzy GarufiFranceIvan Magalhaes QUALIFIED
David DarakjyRussiaBernardo Dominic NEGOTIATION
Mayumi KolmetzJapanIvan Magalhaes RENEWAL
Maisha RulapaughItalyAmy Elsner NEGOTIATION
Jefferson SchemmerArgentinaAsiya Javayant NEGOTIATION
Stacey MacleadGermanyBernardo Dominic NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Costa DilliardCanadaIvan Magalhaes QUALIFIED
Jefferson SchemmerIndiaBernardo Dominic PROPOSAL
Johnson SergiGermanyAmy Elsner PROPOSAL
Juan WieserItalyIvan Magalhaes QUALIFIED
Jones VocelkaArgentinaXuxue Feng UNQUALIFIED
Alejandro PerinIndiaAmy Elsner PROPOSAL
Clifford RimUnited KingdomOnyama Limba NEW
Jones VocelkaUnited KingdomIvan Magalhaes UNQUALIFIED
Adams MorascaJapanBernardo Dominic QUALIFIED
Ashley DoeUnited KingdomIvan Magalhaes NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Johnson SergiBrazil2026-06-14Rousseaux, Michael Esq QUALIFIED6Amy Elsner
1001Nicolas IturbideAustralia2026-06-08Rangoni Of Florence PROPOSAL40Asiya Javayant
1002Rodrigues CampainIndia2026-05-31Commercial Press NEW6Bernardo Dominic
1003Aruna FigeroaArgentina2026-06-12Feiner Bros PROPOSAL87Amy Elsner
1004Claire TollnerBrazil2026-06-17Commercial Press QUALIFIED67Amy Elsner
1005Deepesh ChuiSpain2026-06-06Feiner Bros PROPOSAL61Elwin Sharvill
1006Smith GlickItaly2026-06-01Chemel, James L Cpa RENEWAL46Bernardo Dominic
1007Aika InouyeIndia2026-05-20Chanay, Jeffrey A Esq NEW66Amy Elsner
1008Chavez BriddickAustralia2026-06-06Chemel, James L Cpa NEGOTIATION74Anna Fali
1009Adams MorascaBrazil2026-05-30Rangoni Of Florence NEGOTIATION27Amy Elsner
1010Smith GlickBrazil2026-05-26Benton, John B Jr PROPOSAL46Bernardo Dominic
1011Rodrigues CampainBrazil2026-05-24Commercial Press UNQUALIFIED54Bernardo Dominic
1012Jeanfrancois VenereGermany2026-06-07King, Christopher A Esq PROPOSAL77Xuxue Feng
1013Antonio CaudyRussia2026-06-16Printing Dimensions PROPOSAL60Elwin Sharvill
1014Cody SaylorsUnited Kingdom2026-05-28Chanay, Jeffrey A Esq NEGOTIATION5Ioni Bowcher
1015Julie StensethCanada2026-06-03Printing Dimensions QUALIFIED99Elwin Sharvill
1016James ButtUnited Kingdom2026-06-05Chemel, James L Cpa RENEWAL80Ivan Magalhaes
1017Salvatore StockhamRussia2026-05-31Rangoni Of Florence QUALIFIED76Asiya Javayant
1018Deepesh ChuiFrance2026-05-23Rousseaux, Michael Esq RENEWAL32Elwin Sharvill
1019Ivar PaprockiUnited Kingdom2026-05-21Buckley Miller Wright RENEWAL21Asiya Javayant
1020Mayumi KolmetzCanada2026-06-13Feltz Printing Service PROPOSAL63Xuxue Feng
1021Kaitlin OstroskyFrance2026-06-04Printing Dimensions UNQUALIFIED61Xuxue Feng
1022Morrow RutaSpain2026-06-15Chapman, Ross E Esq UNQUALIFIED71Ioni Bowcher
1023Mujtaba NickaCanada2026-06-11Commercial Press RENEWAL91Xuxue Feng
1024Emily WhobreyBrazil2026-05-25King, Christopher A Esq PROPOSAL24Bernardo Dominic
1025Misaki RoysterGermany2026-06-13Feltz Printing Service RENEWAL28Onyama Limba
1026Claire TollnerJapan2026-05-26Benton, John B Jr QUALIFIED48Stephen Shaw
1027Claire TollnerUnited Kingdom2026-06-12Truhlar And Truhlar Attys RENEWAL20Onyama Limba
1028Julie StensethItaly2026-05-23Chemel, James L Cpa NEW64Xuxue Feng
1029Alejandro PerinJapan2026-06-04Rangoni Of Florence RENEWAL12Ivan Magalhaes
1030Juan WieserUnited Kingdom2026-05-23Dorl, James J Esq UNQUALIFIED6Onyama Limba
1031Nicolas IturbideSpain2026-06-12Benton, John B Jr NEW17Asiya Javayant
1032Isabel BowleyCanada2026-06-02Rousseaux, Michael Esq RENEWAL92Ivan Magalhaes
1033Johnson SergiIndia2026-06-09Rangoni Of Florence RENEWAL4Bernardo Dominic
1034Izzy GarufiCanada2026-06-02Benton, John B Jr UNQUALIFIED31Onyama Limba
1035Murillo MaletIndia2026-06-09Feiner Bros RENEWAL26Onyama Limba
1036Jennifer AmigonSpain2026-05-22Printing Dimensions NEW30Bernardo Dominic
1037Jennifer AmigonJapan2026-05-26Rousseaux, Michael Esq NEW14Xuxue Feng
1038Ivar PaprockiAustralia2026-05-24Benton, John B Jr PROPOSAL31Bernardo Dominic
1039Smith GlickAustralia2026-06-03Dorl, James J Esq UNQUALIFIED0Elwin Sharvill
1040Darci PoquetteItaly2026-05-27Feltz Printing Service PROPOSAL4Ioni Bowcher
1041Maria MarrierItaly2026-05-20Dorl, James J Esq QUALIFIED30Ioni Bowcher
1042Silvio SlusarskiRussia2026-06-02Truhlar And Truhlar Attys QUALIFIED42Elwin Sharvill
1043Greenwood BologniaSpain2026-06-11Rousseaux, Michael Esq UNQUALIFIED80Amy Elsner
1044Wickens NestleJapan2026-05-25Chemel, James L Cpa PROPOSAL31Bernardo Dominic
1045Salvatore StockhamAustralia2026-06-14Chapman, Ross E Esq UNQUALIFIED1Ivan Magalhaes
1046Silvio SlusarskiItaly2026-06-10King, Christopher A Esq UNQUALIFIED30Asiya Javayant
1047Smith GlickCanada2026-06-07Benton, John B Jr QUALIFIED50Ioni Bowcher
1048Stacey MacleadGermany2026-05-30Morlong Associates NEW43Asiya Javayant
1049Costa DilliardItaly2026-06-07Printing Dimensions PROPOSAL70Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Sinclair WaycottRussiaIvan Magalhaes RENEWAL
Jennifer AmigonJapanXuxue Feng PROPOSAL
Costa DilliardSpainIoni Bowcher NEW
Morrow RutaRussiaBernardo Dominic RENEWAL
Ashley DoeItalyOnyama Limba NEGOTIATION
Aika InouyeUnited KingdomAmy Elsner UNQUALIFIED
Rodrigues CampainItalyBernardo Dominic PROPOSAL
Costa DilliardIndiaElwin Sharvill RENEWAL
Isabel BowleySpainAnna Fali RENEWAL
Aditya KuskoGermanyBernardo Dominic UNQUALIFIED
Nicolas IturbideUnited KingdomAsiya Javayant QUALIFIED
Mayumi KolmetzGermanyAnna Fali RENEWAL
Stacey MacleadRussiaAnna Fali NEW
Kadeem FlosiCanadaAnna Fali UNQUALIFIED
Isabel BowleyJapanElwin Sharvill NEGOTIATION
Octavia MaletJapanBernardo Dominic NEGOTIATION
Isabel BowleyJapanXuxue Feng QUALIFIED
David DarakjyIndiaIvan Magalhaes NEW
Adams MorascaArgentinaElwin Sharvill PROPOSAL
Maria MarrierGermanyOnyama Limba PROPOSAL
Ricardo GauchoItalyIoni Bowcher NEGOTIATION
Munro FerenczUnited KingdomAmy Elsner NEGOTIATION
Murillo MaletCanadaIvan Magalhaes NEW
Mayumi KolmetzUnited KingdomIvan Magalhaes NEGOTIATION
Maisha RulapaughIndiaAsiya Javayant RENEWAL
Smith GlickFranceElwin Sharvill RENEWAL
Misaki RoysterRussiaIoni Bowcher RENEWAL
Claire TollnerBrazilAmy Elsner UNQUALIFIED
Mayumi KolmetzRussiaAsiya Javayant NEW
Mujtaba NickaGermanyIoni Bowcher NEW
Stacey MacleadUnited KingdomIoni Bowcher NEW
Silvio SlusarskiIndiaAmy Elsner NEW
Jeanfrancois VenereBrazilAmy Elsner UNQUALIFIED
Maisha RulapaughItalyStephen Shaw NEW
Rodrigues CampainRussiaAmy Elsner NEGOTIATION
Leja CaldareraSpainAnna Fali QUALIFIED
Silvio SlusarskiUnited KingdomBernardo Dominic UNQUALIFIED
Greenwood BologniaJapanBernardo Dominic PROPOSAL
Rodrigues CampainGermanyOnyama Limba PROPOSAL
Deepesh ChuiAustraliaAnna Fali NEGOTIATION
Arvin AlbaresUnited KingdomIoni Bowcher UNQUALIFIED
Sinclair WaycottSpainAmy Elsner NEGOTIATION
Aika InouyeUnited KingdomAsiya Javayant RENEWAL
Faith GillianSpainOnyama Limba NEGOTIATION
Faith GillianJapanOnyama Limba RENEWAL
Faith GillianArgentinaStephen Shaw UNQUALIFIED
Jefferson SchemmerSpainAsiya Javayant NEGOTIATION
Deepesh ChuiRussiaIoni Bowcher NEGOTIATION
Aditya KuskoGermanyAsiya Javayant PROPOSAL
Chavez BriddickRussiaStephen Shaw UNQUALIFIED
Frozen Columns
Name
Clifford Rim
Jones Vocelka
Emily Whobrey
Adams Morasca
Leja Caldarera
Misaki Royster
Stacey Maclead
Arvin Albares
Adams Morasca
Munro Ferencz
Tony Foller
Salvatore Stockham
Clifford Rim
Claire Tollner
Kaitlin Ostrosky
Johnson Sergi
Greenwood Bolognia
Julie Stenseth
Wickens Nestle
Kaitlin Ostrosky
Juan Wieser
Salvatore Stockham
Antonio Caudy
Darci Poquette
Leon Oldroyd
James Butt
Silvio Slusarski
Emily Whobrey
Mujtaba Nicka
Mayumi Kolmetz
Costa Dilliard
Jones Vocelka
Ivar Paprocki
Aika Inouye
Jones Vocelka
James Butt
Jennifer Amigon
Jennifer Amigon
Octavia Malet
Morrow Ruta
Mujtaba Nicka
Mayumi Kolmetz
Munro Ferencz
Jones Vocelka
Emily Whobrey
Costa Dilliard
Greenwood Bolognia
Jennifer Amigon
Salvatore Stockham
Munro Ferencz
IdCountryDate
1000Russia2026-06-14
1001Brazil2026-06-06
1002Spain2026-06-05
1003India2026-05-27
1004Japan2026-05-26
1005India2026-06-17
1006Italy2026-06-06
1007Italy2026-06-18
1008Japan2026-05-27
1009United Kingdom2026-06-07
1010United Kingdom2026-06-01
1011France2026-05-27
1012Germany2026-06-06
1013United Kingdom2026-06-09
1014India2026-06-04
1015Brazil2026-06-04
1016France2026-06-06
1017Germany2026-06-17
1018Russia2026-05-28
1019Canada2026-06-13
1020Russia2026-05-20
1021India2026-05-30
1022Spain2026-06-05
1023Russia2026-06-07
1024United Kingdom2026-06-15
1025Spain2026-06-01
1026Brazil2026-06-01
1027Japan2026-05-30
1028Brazil2026-06-14
1029Russia2026-06-09
1030Australia2026-05-26
1031Australia2026-06-18
1032Australia2026-06-06
1033India2026-06-11
1034Argentina2026-05-20
1035Brazil2026-06-17
1036Brazil2026-06-12
1037France2026-05-31
1038Spain2026-05-21
1039Japan2026-05-28
1040Japan2026-05-31
1041Brazil2026-06-10
1042Australia2026-06-03
1043France2026-06-18
1044India2026-05-24
1045United Kingdom2026-05-28
1046Italy2026-05-28
1047France2026-05-29
1048Germany2026-06-13
1049Italy2026-06-18

On-Demand Data

NameIdCountryDate
Jennifer Amigon1000Canada2026-06-04
Greenwood Bolognia1001France2026-06-17
Cody Saylors1002Germany2026-06-02
Adams Morasca1003Canada2026-06-18
Greenwood Bolognia1004Australia2026-06-06
Deepesh Chui1005Argentina2026-05-31
Clifford Rim1006France2026-05-26
Stacey Maclead1007Canada2026-06-04
Isabel Bowley1008India2026-06-13
Silvio Slusarski1009Russia2026-05-31
Nicolas Iturbide1010India2026-06-11
Silvio Slusarski1011Russia2026-05-29
Silvio Slusarski1012Argentina2026-06-07
Adams Morasca1013Spain2026-06-14
Kadeem Flosi1014United Kingdom2026-06-03
Jennifer Amigon1015India2026-05-25
Johnson Sergi1016United Kingdom2026-05-29
Ricardo Gaucho1017Japan2026-06-06
Jennifer Amigon1018Italy2026-06-09
Aika Inouye1019Spain2026-06-13
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Misaki RoysterItalyIoni Bowcher QUALIFIED
Claire TollnerUnited KingdomIvan Magalhaes QUALIFIED
Leon OldroydIndiaAmy Elsner UNQUALIFIED
Morrow RutaUnited KingdomAnna Fali QUALIFIED
Adams MorascaJapanXuxue Feng RENEWAL
Izzy GarufiSpainElwin Sharvill RENEWAL
Aruna FigeroaFranceStephen Shaw NEW
Leon OldroydJapanBernardo Dominic NEGOTIATION
Aruna FigeroaArgentinaAmy Elsner NEGOTIATION
Salvatore StockhamFranceElwin Sharvill NEGOTIATION
Juan WieserBrazilElwin Sharvill PROPOSAL
Cody SaylorsUnited KingdomAmy Elsner RENEWAL
Kadeem FlosiJapanAmy Elsner QUALIFIED
Wickens NestleRussiaOnyama Limba QUALIFIED
Smith GlickAustraliaAmy Elsner QUALIFIED
Octavia MaletItalyAmy Elsner UNQUALIFIED
Ricardo GauchoBrazilIvan Magalhaes RENEWAL
Francesco ShinkoBrazilIoni Bowcher RENEWAL
Arvin AlbaresUnited KingdomStephen Shaw QUALIFIED
Leon OldroydGermanyAsiya Javayant NEW
Deepesh ChuiJapanStephen Shaw NEW
Aruna FigeroaJapanAmy Elsner NEW
Sinclair WaycottAustraliaAmy Elsner RENEWAL
Aruna FigeroaUnited KingdomXuxue Feng NEGOTIATION
Jefferson SchemmerAustraliaAsiya Javayant NEGOTIATION
Tony FollerRussiaOnyama Limba NEGOTIATION
Murillo MaletFranceElwin Sharvill PROPOSAL
Deepesh ChuiRussiaXuxue Feng PROPOSAL
Greenwood BologniaJapanElwin Sharvill UNQUALIFIED
Ashley DoeRussiaIvan Magalhaes UNQUALIFIED
Chavez BriddickJapanElwin Sharvill UNQUALIFIED
Mayumi KolmetzAustraliaAnna Fali QUALIFIED
Darci PoquetteArgentinaStephen Shaw PROPOSAL
Julie StensethFranceAmy Elsner QUALIFIED
Octavia MaletIndiaXuxue Feng QUALIFIED
Alejandro PerinGermanyAsiya Javayant QUALIFIED
Kaitlin OstroskyItalyAmy Elsner RENEWAL
Misaki RoysterGermanyBernardo Dominic UNQUALIFIED
Deepesh ChuiRussiaStephen Shaw NEW
Ricardo GauchoAustraliaIvan Magalhaes 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>