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
Jones VocelkaRussiaOnyama Limba UNQUALIFIED
Octavia MaletUnited KingdomOnyama Limba RENEWAL
Juan WieserArgentinaOnyama Limba UNQUALIFIED
Johnson SergiIndiaAsiya Javayant NEW
Mayumi KolmetzSpainIvan Magalhaes PROPOSAL
Isabel BowleyAustraliaElwin Sharvill QUALIFIED
Nicolas IturbideFranceAmy Elsner RENEWAL
Silvio SlusarskiItalyStephen Shaw QUALIFIED
Leon OldroydJapanIvan Magalhaes PROPOSAL
Alejandro PerinItalyIvan Magalhaes PROPOSAL
Silvio SlusarskiJapanIoni Bowcher PROPOSAL
Smith GlickIndiaOnyama Limba UNQUALIFIED
Munro FerenczItalyAmy Elsner QUALIFIED
Rodrigues CampainGermanyElwin Sharvill PROPOSAL
Wickens NestleSpainAmy Elsner NEGOTIATION
Deepesh ChuiUnited KingdomAmy Elsner NEW
Maria MarrierRussiaElwin Sharvill NEGOTIATION
Mujtaba NickaSpainAnna Fali UNQUALIFIED
David DarakjyUnited KingdomAmy Elsner UNQUALIFIED
Antonio CaudyUnited KingdomStephen Shaw PROPOSAL
Kaitlin OstroskyRussiaOnyama Limba PROPOSAL
Leja CaldareraJapanAmy Elsner UNQUALIFIED
Aditya KuskoGermanyBernardo Dominic RENEWAL
Juan WieserGermanyAmy Elsner QUALIFIED
Faith GillianFranceStephen Shaw UNQUALIFIED
Leja CaldareraBrazilStephen Shaw PROPOSAL
Izzy GarufiFranceAmy Elsner RENEWAL
Aruna FigeroaRussiaIoni Bowcher PROPOSAL
Johnson SergiSpainStephen Shaw NEW
Johnson SergiRussiaAsiya Javayant NEW
Darci PoquetteAustraliaAmy Elsner QUALIFIED
Rodrigues CampainCanadaXuxue Feng UNQUALIFIED
Arvin AlbaresIndiaBernardo Dominic RENEWAL
Claire TollnerCanadaOnyama Limba UNQUALIFIED
Tony FollerIndiaAsiya Javayant QUALIFIED
Jones VocelkaSpainElwin Sharvill NEW
Izzy GarufiUnited KingdomAmy Elsner NEW
Munro FerenczRussiaStephen Shaw NEGOTIATION
Munro FerenczIndiaBernardo Dominic UNQUALIFIED
Murillo MaletArgentinaAnna Fali QUALIFIED
Aika InouyeGermanyAsiya Javayant RENEWAL
Emily WhobreyIndiaIoni Bowcher NEW
Arvin AlbaresIndiaBernardo Dominic UNQUALIFIED
Munro FerenczRussiaElwin Sharvill UNQUALIFIED
Octavia MaletJapanIoni Bowcher QUALIFIED
Alejandro PerinBrazilXuxue Feng NEGOTIATION
Juan WieserIndiaOnyama Limba NEW
Alejandro PerinItalyElwin Sharvill QUALIFIED
Mujtaba NickaIndiaBernardo Dominic QUALIFIED
Jones VocelkaItalyBernardo Dominic UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Francesco ShinkoRussiaStephen Shaw QUALIFIED
Sinclair WaycottCanadaIvan Magalhaes NEW
Ricardo GauchoFranceXuxue Feng UNQUALIFIED
Izzy GarufiItalyIvan Magalhaes RENEWAL
Salvatore StockhamRussiaXuxue Feng NEGOTIATION
Ashley DoeAustraliaAsiya Javayant PROPOSAL
Chavez BriddickItalyElwin Sharvill QUALIFIED
Antonio CaudyBrazilOnyama Limba PROPOSAL
Costa DilliardAustraliaElwin Sharvill UNQUALIFIED
Octavia MaletFranceXuxue Feng NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Ashley DoeJapan2026-05-18Morlong Associates QUALIFIED19Elwin Sharvill
1001Leon OldroydSpain2026-06-07Morlong Associates NEGOTIATION88Elwin Sharvill
1002Murillo MaletGermany2026-06-11Buckley Miller Wright QUALIFIED74Stephen Shaw
1003Octavia MaletIndia2026-05-20Feltz Printing Service RENEWAL90Anna Fali
1004Misaki RoysterIndia2026-06-05Commercial Press RENEWAL61Xuxue Feng
1005Stacey MacleadGermany2026-05-27Rangoni Of Florence UNQUALIFIED19Elwin Sharvill
1006Chavez BriddickArgentina2026-06-15Chemel, James L Cpa NEGOTIATION98Ivan Magalhaes
1007Ashley DoeItaly2026-05-24King, Christopher A Esq NEGOTIATION11Ioni Bowcher
1008Aika InouyeGermany2026-06-13Chanay, Jeffrey A Esq PROPOSAL87Amy Elsner
1009Isabel BowleyCanada2026-06-01Feiner Bros UNQUALIFIED28Asiya Javayant
1010Ricardo GauchoUnited Kingdom2026-05-21Chapman, Ross E Esq RENEWAL56Bernardo Dominic
1011Jones VocelkaCanada2026-06-11King, Christopher A Esq RENEWAL43Ivan Magalhaes
1012Jennifer AmigonAustralia2026-05-19Dorl, James J Esq NEGOTIATION42Xuxue Feng
1013Darci PoquetteBrazil2026-05-31Printing Dimensions UNQUALIFIED17Onyama Limba
1014Faith GillianIndia2026-06-15Printing Dimensions PROPOSAL55Onyama Limba
1015Leon OldroydFrance2026-06-14Benton, John B Jr RENEWAL30Ivan Magalhaes
1016Smith GlickBrazil2026-05-25Benton, John B Jr QUALIFIED39Bernardo Dominic
1017Octavia MaletUnited Kingdom2026-06-06Commercial Press RENEWAL20Elwin Sharvill
1018Leja CaldareraUnited Kingdom2026-06-05King, Christopher A Esq UNQUALIFIED18Ivan Magalhaes
1019Ashley DoeIndia2026-06-11Chapman, Ross E Esq NEGOTIATION1Bernardo Dominic
1020Jennifer AmigonCanada2026-05-28King, Christopher A Esq PROPOSAL2Stephen Shaw
1021Ashley DoeCanada2026-05-30Benton, John B Jr QUALIFIED65Onyama Limba
1022Kaitlin OstroskyGermany2026-06-01Printing Dimensions NEGOTIATION36Asiya Javayant
1023Maria MarrierAustralia2026-06-09Feltz Printing Service QUALIFIED72Stephen Shaw
1024Chavez BriddickItaly2026-05-27King, Christopher A Esq UNQUALIFIED81Stephen Shaw
1025Clifford RimFrance2026-06-14Truhlar And Truhlar Attys QUALIFIED35Amy Elsner
1026Mujtaba NickaSpain2026-06-05Dorl, James J Esq NEGOTIATION85Asiya Javayant
1027Aditya KuskoCanada2026-05-20Feltz Printing Service PROPOSAL53Amy Elsner
1028Juan WieserArgentina2026-05-17Printing Dimensions PROPOSAL8Stephen Shaw
1029Ricardo GauchoGermany2026-05-31Chemel, James L Cpa RENEWAL42Ivan Magalhaes
1030Darci PoquetteSpain2026-05-17Feltz Printing Service PROPOSAL13Bernardo Dominic
1031Izzy GarufiJapan2026-06-14Chanay, Jeffrey A Esq QUALIFIED21Ivan Magalhaes
1032Cody SaylorsRussia2026-06-04Truhlar And Truhlar Attys NEW43Ivan Magalhaes
1033Maisha RulapaughRussia2026-06-02Chapman, Ross E Esq NEW15Stephen Shaw
1034Munro FerenczRussia2026-06-10Feiner Bros PROPOSAL85Amy Elsner
1035Leon OldroydCanada2026-06-13Rangoni Of Florence RENEWAL75Stephen Shaw
1036Rodrigues CampainRussia2026-05-20Benton, John B Jr PROPOSAL52Onyama Limba
1037Cody SaylorsSpain2026-05-17Morlong Associates RENEWAL61Ioni Bowcher
1038Sinclair WaycottIndia2026-05-23Chanay, Jeffrey A Esq PROPOSAL47Stephen Shaw
1039Aika InouyeIndia2026-05-19Truhlar And Truhlar Attys NEW72Anna Fali
1040Smith GlickAustralia2026-06-03Dorl, James J Esq QUALIFIED68Xuxue Feng
1041Francesco ShinkoItaly2026-06-05Chemel, James L Cpa UNQUALIFIED4Amy Elsner
1042Juan WieserCanada2026-06-07Chapman, Ross E Esq PROPOSAL81Elwin Sharvill
1043Salvatore StockhamGermany2026-06-11Truhlar And Truhlar Attys NEGOTIATION68Amy Elsner
1044Sinclair WaycottFrance2026-06-01Buckley Miller Wright RENEWAL84Elwin Sharvill
1045Mayumi KolmetzArgentina2026-06-12Feltz Printing Service UNQUALIFIED15Ivan Magalhaes
1046Cody SaylorsCanada2026-06-02Truhlar And Truhlar Attys RENEWAL8Xuxue Feng
1047Sinclair WaycottBrazil2026-05-24Commercial Press PROPOSAL34Xuxue Feng
1048Nicolas IturbideBrazil2026-06-13Rousseaux, Michael Esq NEW39Asiya Javayant
1049Maria MarrierArgentina2026-06-02Benton, John B Jr PROPOSAL84Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Silvio SlusarskiRussiaXuxue Feng QUALIFIED
Clifford RimGermanyAmy Elsner NEW
Octavia MaletArgentinaIvan Magalhaes NEW
Stacey MacleadItalyAnna Fali PROPOSAL
Maisha RulapaughArgentinaAmy Elsner NEGOTIATION
Deepesh ChuiCanadaXuxue Feng UNQUALIFIED
Jennifer AmigonSpainAnna Fali UNQUALIFIED
Juan WieserGermanyBernardo Dominic RENEWAL
James ButtRussiaIvan Magalhaes NEW
Mayumi KolmetzSpainBernardo Dominic NEGOTIATION
Emily WhobreyJapanAmy Elsner RENEWAL
Smith GlickRussiaIvan Magalhaes NEGOTIATION
Maisha RulapaughRussiaOnyama Limba QUALIFIED
Emily WhobreySpainStephen Shaw UNQUALIFIED
Mayumi KolmetzArgentinaElwin Sharvill NEGOTIATION
Aditya KuskoRussiaXuxue Feng NEGOTIATION
Claire TollnerAustraliaAnna Fali QUALIFIED
Maria MarrierJapanElwin Sharvill NEW
Sinclair WaycottCanadaIoni Bowcher NEGOTIATION
Stacey MacleadItalyElwin Sharvill NEGOTIATION
Aruna FigeroaCanadaAnna Fali RENEWAL
Juan WieserAustraliaOnyama Limba UNQUALIFIED
Deepesh ChuiArgentinaXuxue Feng UNQUALIFIED
Darci PoquetteItalyStephen Shaw PROPOSAL
Julie StensethArgentinaBernardo Dominic NEW
Misaki RoysterGermanyIvan Magalhaes PROPOSAL
Clifford RimIndiaStephen Shaw QUALIFIED
Salvatore StockhamArgentinaOnyama Limba UNQUALIFIED
David DarakjySpainAmy Elsner NEGOTIATION
David DarakjyArgentinaIvan Magalhaes UNQUALIFIED
Clifford RimGermanyBernardo Dominic RENEWAL
Aika InouyeGermanyBernardo Dominic RENEWAL
Claire TollnerSpainAsiya Javayant UNQUALIFIED
Emily WhobreyArgentinaBernardo Dominic PROPOSAL
Stacey MacleadAustraliaIvan Magalhaes NEGOTIATION
Ivar PaprockiUnited KingdomOnyama Limba UNQUALIFIED
Arvin AlbaresUnited KingdomXuxue Feng PROPOSAL
Murillo MaletBrazilStephen Shaw UNQUALIFIED
Aruna FigeroaJapanAnna Fali RENEWAL
Leon OldroydSpainIoni Bowcher PROPOSAL
Izzy GarufiCanadaAnna Fali PROPOSAL
Antonio CaudyRussiaIvan Magalhaes NEGOTIATION
Alejandro PerinBrazilXuxue Feng QUALIFIED
Aika InouyeAustraliaAnna Fali QUALIFIED
Clifford RimRussiaAnna Fali RENEWAL
Tony FollerFranceXuxue Feng RENEWAL
Juan WieserJapanStephen Shaw RENEWAL
Tony FollerAustraliaBernardo Dominic RENEWAL
Greenwood BologniaRussiaIoni Bowcher QUALIFIED
Mayumi KolmetzFranceBernardo Dominic QUALIFIED
Frozen Columns
Name
Ricardo Gaucho
Juan Wieser
Mayumi Kolmetz
Clifford Rim
Ashley Doe
Aruna Figeroa
Jennifer Amigon
Emily Whobrey
Munro Ferencz
Alejandro Perin
Ricardo Gaucho
Maria Marrier
Claire Tollner
Juan Wieser
Leon Oldroyd
Juan Wieser
Jones Vocelka
Arvin Albares
Misaki Royster
Octavia Malet
Francesco Shinko
Adams Morasca
Misaki Royster
Munro Ferencz
Maria Marrier
Mujtaba Nicka
Jefferson Schemmer
Morrow Ruta
Maisha Rulapaugh
Aruna Figeroa
Jones Vocelka
Leja Caldarera
Smith Glick
Aruna Figeroa
Aika Inouye
Claire Tollner
Greenwood Bolognia
Darci Poquette
Morrow Ruta
Chavez Briddick
Leja Caldarera
Cody Saylors
Tony Foller
Jones Vocelka
Isabel Bowley
Maisha Rulapaugh
Stacey Maclead
Rodrigues Campain
Murillo Malet
Jones Vocelka
IdCountryDate
1000Japan2026-05-25
1001Japan2026-05-19
1002Germany2026-05-18
1003Spain2026-05-31
1004United Kingdom2026-05-31
1005India2026-06-01
1006Australia2026-05-26
1007Germany2026-05-24
1008France2026-05-17
1009India2026-05-26
1010Germany2026-05-25
1011Australia2026-05-27
1012Argentina2026-06-05
1013Brazil2026-06-08
1014Spain2026-06-10
1015United Kingdom2026-06-08
1016Germany2026-06-10
1017Argentina2026-06-01
1018Brazil2026-05-26
1019France2026-05-31
1020United Kingdom2026-06-12
1021United Kingdom2026-06-02
1022Germany2026-05-30
1023Brazil2026-05-24
1024United Kingdom2026-06-08
1025Germany2026-06-11
1026France2026-06-09
1027France2026-05-29
1028Japan2026-06-06
1029India2026-06-14
1030Australia2026-05-19
1031Canada2026-06-03
1032Italy2026-05-26
1033Japan2026-06-14
1034Germany2026-05-23
1035United Kingdom2026-05-30
1036Argentina2026-05-30
1037Brazil2026-06-08
1038Russia2026-05-18
1039Germany2026-06-14
1040Brazil2026-06-10
1041Australia2026-06-05
1042Argentina2026-05-19
1043Spain2026-06-13
1044Argentina2026-06-04
1045United Kingdom2026-05-31
1046Italy2026-05-30
1047Italy2026-06-05
1048Australia2026-06-01
1049Brazil2026-06-14

On-Demand Data

NameIdCountryDate
Sinclair Waycott1000France2026-05-31
Kadeem Flosi1001Argentina2026-06-14
Ivar Paprocki1002Russia2026-05-24
Murillo Malet1003Brazil2026-06-14
Jeanfrancois Venere1004Brazil2026-05-23
Murillo Malet1005Italy2026-06-04
Deepesh Chui1006Canada2026-05-25
Maisha Rulapaugh1007Brazil2026-06-06
Kaitlin Ostrosky1008Germany2026-06-11
Adams Morasca1009Argentina2026-05-19
Costa Dilliard1010Italy2026-05-30
Arvin Albares1011India2026-06-05
Cody Saylors1012Japan2026-06-13
Kaitlin Ostrosky1013India2026-05-22
Smith Glick1014Australia2026-06-04
Adams Morasca1015Brazil2026-05-25
Emily Whobrey1016Germany2026-06-13
Claire Tollner1017France2026-05-22
Arvin Albares1018Brazil2026-05-21
Alejandro Perin1019Canada2026-06-08
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Julie StensethUnited KingdomIoni Bowcher NEW
Chavez BriddickGermanyBernardo Dominic PROPOSAL
Nicolas IturbideRussiaElwin Sharvill RENEWAL
Julie StensethRussiaAnna Fali RENEWAL
Deepesh ChuiGermanyAmy Elsner NEGOTIATION
Kaitlin OstroskyItalyAmy Elsner UNQUALIFIED
Cody SaylorsBrazilAsiya Javayant NEGOTIATION
Chavez BriddickGermanyBernardo Dominic PROPOSAL
Maria MarrierBrazilXuxue Feng PROPOSAL
Maisha RulapaughJapanAsiya Javayant UNQUALIFIED
Deepesh ChuiJapanIoni Bowcher UNQUALIFIED
Morrow RutaFranceAnna Fali NEW
Ashley DoeItalyAnna Fali NEW
Adams MorascaRussiaAnna Fali UNQUALIFIED
Faith GillianJapanElwin Sharvill UNQUALIFIED
Ashley DoeGermanyOnyama Limba QUALIFIED
Jennifer AmigonAustraliaAnna Fali PROPOSAL
Mayumi KolmetzBrazilAnna Fali NEW
David DarakjyUnited KingdomAmy Elsner NEGOTIATION
Kaitlin OstroskyJapanOnyama Limba UNQUALIFIED
Octavia MaletSpainAmy Elsner PROPOSAL
Ashley DoeIndiaOnyama Limba QUALIFIED
Murillo MaletUnited KingdomAmy Elsner UNQUALIFIED
Jefferson SchemmerJapanStephen Shaw PROPOSAL
Aditya KuskoArgentinaElwin Sharvill NEGOTIATION
Emily WhobreyRussiaXuxue Feng QUALIFIED
Silvio SlusarskiGermanyAsiya Javayant PROPOSAL
Francesco ShinkoUnited KingdomAmy Elsner QUALIFIED
Leon OldroydAustraliaAnna Fali UNQUALIFIED
Maria MarrierFranceIvan Magalhaes NEGOTIATION
Alejandro PerinFranceElwin Sharvill RENEWAL
Julie StensethGermanyElwin Sharvill QUALIFIED
Clifford RimFranceOnyama Limba UNQUALIFIED
Jones VocelkaFranceAmy Elsner NEGOTIATION
Murillo MaletSpainIoni Bowcher UNQUALIFIED
Rodrigues CampainGermanyAnna Fali NEW
Aruna FigeroaCanadaAnna Fali PROPOSAL
Isabel BowleyFranceBernardo Dominic NEGOTIATION
Claire TollnerBrazilAmy Elsner NEW
Ashley DoeCanadaElwin Sharvill 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>