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
Munro FerenczRussiaAsiya Javayant UNQUALIFIED
Sinclair WaycottAustraliaIvan Magalhaes UNQUALIFIED
Arvin AlbaresBrazilAnna Fali NEGOTIATION
Stacey MacleadUnited KingdomAnna Fali UNQUALIFIED
Sinclair WaycottGermanyAsiya Javayant PROPOSAL
Jennifer AmigonSpainOnyama Limba NEW
Ashley DoeCanadaIoni Bowcher NEGOTIATION
Jennifer AmigonIndiaAnna Fali NEGOTIATION
Munro FerenczItalyIvan Magalhaes QUALIFIED
Salvatore StockhamArgentinaBernardo Dominic QUALIFIED
Isabel BowleyGermanyAsiya Javayant PROPOSAL
Izzy GarufiArgentinaXuxue Feng NEGOTIATION
Tony FollerUnited KingdomIoni Bowcher NEGOTIATION
Julie StensethIndiaAsiya Javayant RENEWAL
Silvio SlusarskiCanadaIvan Magalhaes RENEWAL
Julie StensethIndiaIoni Bowcher NEGOTIATION
Izzy GarufiJapanIvan Magalhaes NEGOTIATION
Aditya KuskoFranceBernardo Dominic NEW
Wickens NestleIndiaAsiya Javayant PROPOSAL
Jeanfrancois VenereSpainIvan Magalhaes NEW
Claire TollnerUnited KingdomIoni Bowcher RENEWAL
Maisha RulapaughSpainAnna Fali PROPOSAL
Ivar PaprockiAustraliaBernardo Dominic PROPOSAL
Arvin AlbaresJapanAmy Elsner NEW
Alejandro PerinGermanyXuxue Feng NEGOTIATION
Arvin AlbaresAustraliaIoni Bowcher QUALIFIED
Ricardo GauchoGermanyAsiya Javayant NEGOTIATION
Isabel BowleyRussiaOnyama Limba PROPOSAL
Aditya KuskoSpainIoni Bowcher PROPOSAL
Salvatore StockhamIndiaIoni Bowcher NEGOTIATION
Adams MorascaJapanAsiya Javayant PROPOSAL
Stacey MacleadSpainIvan Magalhaes NEW
Misaki RoysterArgentinaAsiya Javayant PROPOSAL
Wickens NestleCanadaAmy Elsner RENEWAL
Julie StensethFranceIvan Magalhaes NEW
Kaitlin OstroskyIndiaAmy Elsner NEGOTIATION
Octavia MaletBrazilOnyama Limba RENEWAL
Mayumi KolmetzRussiaAnna Fali QUALIFIED
Leon OldroydFranceBernardo Dominic PROPOSAL
Clifford RimIndiaAmy Elsner NEW
Greenwood BologniaIndiaXuxue Feng NEGOTIATION
Salvatore StockhamCanadaOnyama Limba NEW
Claire TollnerCanadaXuxue Feng NEW
Ivar PaprockiUnited KingdomIoni Bowcher PROPOSAL
Francesco ShinkoSpainIoni Bowcher UNQUALIFIED
Francesco ShinkoBrazilIoni Bowcher NEW
Morrow RutaJapanElwin Sharvill QUALIFIED
Murillo MaletAustraliaIoni Bowcher UNQUALIFIED
Jefferson SchemmerCanadaIvan Magalhaes QUALIFIED
Chavez BriddickRussiaAmy Elsner PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Aditya KuskoRussiaAsiya Javayant RENEWAL
Kaitlin OstroskyItalyElwin Sharvill PROPOSAL
Ricardo GauchoRussiaStephen Shaw NEW
Aika InouyeAustraliaOnyama Limba PROPOSAL
Francesco ShinkoSpainAsiya Javayant QUALIFIED
Rodrigues CampainItalyOnyama Limba QUALIFIED
Sinclair WaycottAustraliaXuxue Feng RENEWAL
Tony FollerIndiaAnna Fali NEGOTIATION
Isabel BowleyGermanyAsiya Javayant UNQUALIFIED
Aika InouyeUnited KingdomAnna Fali NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Izzy GarufiFrance2026-03-28Morlong Associates UNQUALIFIED23Stephen Shaw
1001Morrow RutaAustralia2026-04-11Rousseaux, Michael Esq NEGOTIATION79Ivan Magalhaes
1002Faith GillianJapan2026-04-02Dorl, James J Esq NEGOTIATION67Anna Fali
1003Salvatore StockhamCanada2026-04-18Chanay, Jeffrey A Esq RENEWAL24Bernardo Dominic
1004Darci PoquetteItaly2026-04-11Chanay, Jeffrey A Esq PROPOSAL65Xuxue Feng
1005Jennifer AmigonBrazil2026-04-18Chapman, Ross E Esq PROPOSAL75Asiya Javayant
1006Alejandro PerinBrazil2026-04-13Commercial Press UNQUALIFIED2Xuxue Feng
1007Wickens NestleFrance2026-04-01Benton, John B Jr NEW16Onyama Limba
1008Smith GlickUnited Kingdom2026-03-31King, Christopher A Esq NEW14Anna Fali
1009Greenwood BologniaIndia2026-04-14Rousseaux, Michael Esq PROPOSAL22Xuxue Feng
1010Arvin AlbaresBrazil2026-03-31Benton, John B Jr UNQUALIFIED59Asiya Javayant
1011Nicolas IturbideSpain2026-03-27Chanay, Jeffrey A Esq NEGOTIATION39Ioni Bowcher
1012Smith GlickCanada2026-04-17Printing Dimensions QUALIFIED90Anna Fali
1013Kaitlin OstroskyAustralia2026-04-13Morlong Associates NEGOTIATION40Onyama Limba
1014Isabel BowleyItaly2026-04-14Feltz Printing Service NEW52Onyama Limba
1015Cody SaylorsArgentina2026-04-03Dorl, James J Esq QUALIFIED70Bernardo Dominic
1016Jennifer AmigonBrazil2026-03-31Commercial Press PROPOSAL29Ivan Magalhaes
1017Jennifer AmigonRussia2026-03-22Commercial Press RENEWAL94Amy Elsner
1018Julie StensethCanada2026-04-06Benton, John B Jr PROPOSAL11Asiya Javayant
1019Clifford RimBrazil2026-03-31Chanay, Jeffrey A Esq NEGOTIATION43Anna Fali
1020Kaitlin OstroskyArgentina2026-04-20Morlong Associates NEGOTIATION14Ivan Magalhaes
1021Morrow RutaCanada2026-03-23Chanay, Jeffrey A Esq QUALIFIED96Amy Elsner
1022Murillo MaletFrance2026-04-05Buckley Miller Wright NEGOTIATION15Ivan Magalhaes
1023Mayumi KolmetzArgentina2026-04-19Truhlar And Truhlar Attys PROPOSAL34Elwin Sharvill
1024Aruna FigeroaAustralia2026-04-17Chanay, Jeffrey A Esq NEGOTIATION68Ivan Magalhaes
1025Antonio CaudyArgentina2026-04-13Chanay, Jeffrey A Esq NEW9Stephen Shaw
1026Juan WieserAustralia2026-04-20Commercial Press NEGOTIATION18Elwin Sharvill
1027Jeanfrancois VenereGermany2026-04-16Feltz Printing Service QUALIFIED60Bernardo Dominic
1028Emily WhobreyUnited Kingdom2026-04-09Buckley Miller Wright PROPOSAL11Ioni Bowcher
1029Kadeem FlosiJapan2026-03-24Benton, John B Jr NEW91Ivan Magalhaes
1030David DarakjyAustralia2026-03-30Chemel, James L Cpa NEW99Xuxue Feng
1031Misaki RoysterAustralia2026-04-07Feltz Printing Service UNQUALIFIED74Anna Fali
1032Clifford RimArgentina2026-03-22Benton, John B Jr QUALIFIED22Asiya Javayant
1033Johnson SergiSpain2026-04-07Benton, John B Jr NEGOTIATION6Anna Fali
1034Izzy GarufiSpain2026-03-27Chapman, Ross E Esq QUALIFIED12Ivan Magalhaes
1035Stacey MacleadUnited Kingdom2026-04-12Rousseaux, Michael Esq RENEWAL4Anna Fali
1036Darci PoquetteBrazil2026-04-11Feiner Bros NEGOTIATION1Ivan Magalhaes
1037Maria MarrierArgentina2026-03-22Feiner Bros UNQUALIFIED25Anna Fali
1038Wickens NestleAustralia2026-03-24Benton, John B Jr PROPOSAL12Xuxue Feng
1039Smith GlickGermany2026-04-08Rangoni Of Florence UNQUALIFIED53Bernardo Dominic
1040Julie StensethIndia2026-04-19Buckley Miller Wright NEW62Asiya Javayant
1041Adams MorascaJapan2026-03-28Dorl, James J Esq PROPOSAL61Ioni Bowcher
1042Tony FollerCanada2026-03-30Chanay, Jeffrey A Esq RENEWAL47Stephen Shaw
1043Faith GillianArgentina2026-04-18Commercial Press NEGOTIATION15Ioni Bowcher
1044Isabel BowleySpain2026-04-06King, Christopher A Esq QUALIFIED2Amy Elsner
1045Jeanfrancois VenereBrazil2026-04-15Buckley Miller Wright PROPOSAL30Anna Fali
1046Jones VocelkaArgentina2026-04-20Rangoni Of Florence NEW21Elwin Sharvill
1047Smith GlickUnited Kingdom2026-03-24Printing Dimensions NEGOTIATION33Stephen Shaw
1048Chavez BriddickFrance2026-03-31Chanay, Jeffrey A Esq RENEWAL44Xuxue Feng
1049Arvin AlbaresBrazil2026-03-22Rangoni Of Florence PROPOSAL47Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Izzy GarufiJapanAmy Elsner NEGOTIATION
Juan WieserRussiaStephen Shaw NEW
Nicolas IturbideFranceAnna Fali RENEWAL
Adams MorascaUnited KingdomIoni Bowcher NEW
Nicolas IturbideGermanyStephen Shaw PROPOSAL
Jeanfrancois VenereAustraliaStephen Shaw NEGOTIATION
Munro FerenczJapanIoni Bowcher UNQUALIFIED
Kaitlin OstroskyJapanOnyama Limba NEW
Darci PoquetteAustraliaIoni Bowcher QUALIFIED
Kaitlin OstroskyRussiaBernardo Dominic QUALIFIED
Emily WhobreyAustraliaAnna Fali RENEWAL
Rodrigues CampainBrazilAnna Fali QUALIFIED
Ashley DoeAustraliaXuxue Feng RENEWAL
James ButtGermanyAsiya Javayant NEGOTIATION
Aditya KuskoFranceAmy Elsner UNQUALIFIED
Clifford RimSpainXuxue Feng UNQUALIFIED
Isabel BowleyRussiaIoni Bowcher NEGOTIATION
Emily WhobreyBrazilIvan Magalhaes NEGOTIATION
Mayumi KolmetzAustraliaIvan Magalhaes UNQUALIFIED
Faith GillianRussiaOnyama Limba PROPOSAL
Johnson SergiJapanBernardo Dominic UNQUALIFIED
Kadeem FlosiAustraliaIvan Magalhaes RENEWAL
Wickens NestleSpainIvan Magalhaes QUALIFIED
Maisha RulapaughArgentinaAmy Elsner NEW
Tony FollerItalyIoni Bowcher RENEWAL
Alejandro PerinFranceBernardo Dominic UNQUALIFIED
Jones VocelkaArgentinaOnyama Limba UNQUALIFIED
Alejandro PerinIndiaElwin Sharvill NEGOTIATION
Wickens NestleBrazilIoni Bowcher QUALIFIED
Sinclair WaycottItalyElwin Sharvill RENEWAL
Greenwood BologniaFranceOnyama Limba NEGOTIATION
Antonio CaudyArgentinaAsiya Javayant NEGOTIATION
Chavez BriddickItalyStephen Shaw QUALIFIED
Octavia MaletSpainElwin Sharvill NEGOTIATION
Rodrigues CampainRussiaBernardo Dominic RENEWAL
Arvin AlbaresItalyIoni Bowcher RENEWAL
Juan WieserJapanStephen Shaw PROPOSAL
Antonio CaudyBrazilAsiya Javayant UNQUALIFIED
Ivar PaprockiAustraliaIoni Bowcher RENEWAL
Maisha RulapaughUnited KingdomOnyama Limba RENEWAL
Misaki RoysterJapanOnyama Limba UNQUALIFIED
Maisha RulapaughItalyOnyama Limba QUALIFIED
Rodrigues CampainSpainIvan Magalhaes NEW
Wickens NestleItalyOnyama Limba NEGOTIATION
Sinclair WaycottCanadaIvan Magalhaes RENEWAL
Maria MarrierAustraliaElwin Sharvill NEGOTIATION
Costa DilliardUnited KingdomAnna Fali RENEWAL
Munro FerenczArgentinaOnyama Limba NEGOTIATION
Greenwood BologniaSpainStephen Shaw NEW
Murillo MaletBrazilBernardo Dominic QUALIFIED
Frozen Columns
Name
Sinclair Waycott
Arvin Albares
Aruna Figeroa
Izzy Garufi
Ashley Doe
Leja Caldarera
Sinclair Waycott
Aditya Kusko
Octavia Malet
Clifford Rim
Deepesh Chui
Octavia Malet
Isabel Bowley
Claire Tollner
Misaki Royster
Aditya Kusko
Chavez Briddick
Antonio Caudy
Jennifer Amigon
Izzy Garufi
Sinclair Waycott
Antonio Caudy
Clifford Rim
Alejandro Perin
Leja Caldarera
Morrow Ruta
Greenwood Bolognia
Deepesh Chui
Leon Oldroyd
Cody Saylors
Aika Inouye
Emily Whobrey
Kadeem Flosi
Maisha Rulapaugh
Deepesh Chui
Maria Marrier
Antonio Caudy
Cody Saylors
Misaki Royster
Ivar Paprocki
Julie Stenseth
Stacey Maclead
Isabel Bowley
Morrow Ruta
Mayumi Kolmetz
Leja Caldarera
Juan Wieser
Sinclair Waycott
Costa Dilliard
Aruna Figeroa
IdCountryDate
1000Germany2026-04-11
1001United Kingdom2026-04-09
1002Brazil2026-03-22
1003Spain2026-04-05
1004Argentina2026-04-14
1005India2026-04-19
1006Germany2026-03-30
1007Italy2026-03-22
1008Spain2026-03-25
1009Brazil2026-03-22
1010Russia2026-04-15
1011Russia2026-04-13
1012Italy2026-03-31
1013Russia2026-03-31
1014France2026-04-03
1015India2026-04-15
1016Australia2026-03-25
1017Germany2026-04-20
1018France2026-04-08
1019United Kingdom2026-04-13
1020Argentina2026-04-18
1021Spain2026-03-25
1022Canada2026-03-30
1023France2026-04-14
1024Spain2026-04-10
1025France2026-04-02
1026France2026-04-18
1027United Kingdom2026-04-04
1028France2026-03-28
1029Brazil2026-04-03
1030Argentina2026-04-13
1031Germany2026-04-05
1032Spain2026-04-06
1033Spain2026-04-05
1034Australia2026-03-24
1035Japan2026-04-18
1036India2026-04-03
1037Canada2026-04-17
1038Russia2026-04-12
1039Spain2026-03-27
1040Italy2026-04-07
1041Italy2026-04-15
1042Australia2026-03-30
1043Germany2026-03-28
1044Australia2026-03-27
1045Germany2026-03-28
1046Argentina2026-04-06
1047Germany2026-03-27
1048United Kingdom2026-04-04
1049United Kingdom2026-03-30

On-Demand Data

NameIdCountryDate
Leja Caldarera1000Japan2026-03-22
Murillo Malet1001France2026-04-14
Leja Caldarera1002Italy2026-04-15
Antonio Caudy1003Brazil2026-04-10
Rodrigues Campain1004France2026-04-12
Maisha Rulapaugh1005United Kingdom2026-03-27
David Darakjy1006France2026-03-29
Smith Glick1007France2026-04-13
Maria Marrier1008India2026-03-27
Salvatore Stockham1009United Kingdom2026-04-13
Murillo Malet1010Australia2026-04-15
Chavez Briddick1011India2026-04-16
Jennifer Amigon1012Italy2026-04-06
Ricardo Gaucho1013Italy2026-03-30
Wickens Nestle1014Brazil2026-03-31
Kadeem Flosi1015Spain2026-04-12
Julie Stenseth1016Russia2026-04-14
Costa Dilliard1017Canada2026-04-07
Adams Morasca1018Australia2026-04-16
Stacey Maclead1019Canada2026-03-23
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Faith GillianGermanyIoni Bowcher QUALIFIED
Maisha RulapaughGermanyAsiya Javayant QUALIFIED
Wickens NestleSpainIvan Magalhaes PROPOSAL
Rodrigues CampainArgentinaAsiya Javayant UNQUALIFIED
Jeanfrancois VenereRussiaXuxue Feng PROPOSAL
Leja CaldareraBrazilOnyama Limba NEW
Cody SaylorsArgentinaAnna Fali NEGOTIATION
Mayumi KolmetzAustraliaIoni Bowcher NEGOTIATION
Salvatore StockhamGermanyIoni Bowcher PROPOSAL
Johnson SergiArgentinaStephen Shaw PROPOSAL
Ricardo GauchoUnited KingdomOnyama Limba QUALIFIED
Stacey MacleadCanadaStephen Shaw NEW
Claire TollnerFranceAmy Elsner PROPOSAL
Kadeem FlosiUnited KingdomAsiya Javayant NEW
Octavia MaletAustraliaBernardo Dominic UNQUALIFIED
Alejandro PerinUnited KingdomBernardo Dominic UNQUALIFIED
Smith GlickSpainAsiya Javayant NEW
Mujtaba NickaCanadaAsiya Javayant QUALIFIED
Leon OldroydIndiaAmy Elsner UNQUALIFIED
Salvatore StockhamUnited KingdomOnyama Limba NEW
Stacey MacleadUnited KingdomAsiya Javayant NEGOTIATION
Juan WieserIndiaOnyama Limba RENEWAL
Mayumi KolmetzCanadaStephen Shaw QUALIFIED
Arvin AlbaresIndiaAnna Fali PROPOSAL
Chavez BriddickJapanIvan Magalhaes NEW
Munro FerenczIndiaIoni Bowcher RENEWAL
Kadeem FlosiFranceElwin Sharvill NEGOTIATION
Costa DilliardRussiaAnna Fali QUALIFIED
Murillo MaletUnited KingdomStephen Shaw QUALIFIED
Octavia MaletAustraliaOnyama Limba UNQUALIFIED
Arvin AlbaresItalyAmy Elsner PROPOSAL
Tony FollerSpainElwin Sharvill NEGOTIATION
Mujtaba NickaBrazilIvan Magalhaes RENEWAL
Kadeem FlosiIndiaAmy Elsner RENEWAL
Adams MorascaFranceXuxue Feng NEGOTIATION
Emily WhobreyArgentinaAsiya Javayant UNQUALIFIED
David DarakjyAustraliaAmy Elsner RENEWAL
Maisha RulapaughUnited KingdomXuxue Feng NEGOTIATION
Smith GlickItalyAmy Elsner UNQUALIFIED
Wickens NestleFranceElwin Sharvill RENEWAL

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