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
Wickens NestleBrazilAsiya Javayant NEW
Arvin AlbaresJapanIoni Bowcher NEW
Adams MorascaGermanyIoni Bowcher RENEWAL
Mayumi KolmetzJapanAsiya Javayant RENEWAL
Kadeem FlosiGermanyAsiya Javayant UNQUALIFIED
Ricardo GauchoAustraliaOnyama Limba NEGOTIATION
Clifford RimGermanyStephen Shaw UNQUALIFIED
Ashley DoeSpainAmy Elsner RENEWAL
Maria MarrierRussiaBernardo Dominic PROPOSAL
Stacey MacleadJapanIoni Bowcher QUALIFIED
Aruna FigeroaItalyAnna Fali PROPOSAL
Jefferson SchemmerRussiaAnna Fali PROPOSAL
Aika InouyeBrazilXuxue Feng PROPOSAL
Wickens NestleAustraliaXuxue Feng UNQUALIFIED
Francesco ShinkoRussiaElwin Sharvill NEW
Adams MorascaJapanStephen Shaw QUALIFIED
Munro FerenczCanadaOnyama Limba PROPOSAL
Cody SaylorsAustraliaOnyama Limba QUALIFIED
Deepesh ChuiArgentinaAnna Fali QUALIFIED
Smith GlickItalyXuxue Feng RENEWAL
Stacey MacleadAustraliaElwin Sharvill PROPOSAL
Isabel BowleyBrazilIoni Bowcher UNQUALIFIED
Silvio SlusarskiUnited KingdomIvan Magalhaes NEW
Tony FollerIndiaAnna Fali NEGOTIATION
Morrow RutaFranceAmy Elsner NEGOTIATION
Francesco ShinkoBrazilXuxue Feng NEW
Sinclair WaycottSpainBernardo Dominic PROPOSAL
Rodrigues CampainSpainAsiya Javayant QUALIFIED
Aditya KuskoFranceAsiya Javayant NEW
Leja CaldareraIndiaAnna Fali NEGOTIATION
Jennifer AmigonJapanIvan Magalhaes NEW
Kaitlin OstroskyRussiaXuxue Feng UNQUALIFIED
Adams MorascaArgentinaAmy Elsner RENEWAL
Smith GlickItalyOnyama Limba RENEWAL
Antonio CaudyCanadaIoni Bowcher UNQUALIFIED
Chavez BriddickSpainAmy Elsner RENEWAL
Alejandro PerinCanadaIvan Magalhaes UNQUALIFIED
Aruna FigeroaItalyStephen Shaw RENEWAL
Aditya KuskoGermanyAnna Fali QUALIFIED
Smith GlickItalyBernardo Dominic PROPOSAL
Clifford RimSpainElwin Sharvill NEGOTIATION
Octavia MaletCanadaElwin Sharvill PROPOSAL
Aditya KuskoCanadaAnna Fali UNQUALIFIED
Cody SaylorsUnited KingdomStephen Shaw QUALIFIED
Juan WieserJapanBernardo Dominic RENEWAL
Maria MarrierRussiaXuxue Feng PROPOSAL
James ButtArgentinaElwin Sharvill RENEWAL
Sinclair WaycottCanadaAnna Fali NEW
Kaitlin OstroskyItalyOnyama Limba PROPOSAL
Salvatore StockhamSpainBernardo Dominic NEW
Horizontal
NameCountryRepresentativeStatus
Jefferson SchemmerBrazilStephen Shaw UNQUALIFIED
Salvatore StockhamSpainIvan Magalhaes UNQUALIFIED
Silvio SlusarskiSpainStephen Shaw QUALIFIED
Leja CaldareraJapanAsiya Javayant NEW
Smith GlickRussiaXuxue Feng RENEWAL
Isabel BowleySpainBernardo Dominic NEW
Kaitlin OstroskyRussiaIoni Bowcher RENEWAL
Darci PoquetteItalyXuxue Feng PROPOSAL
Rodrigues CampainBrazilIoni Bowcher NEGOTIATION
Kaitlin OstroskyFranceStephen Shaw RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Sinclair WaycottBrazil2026-06-06Feiner Bros NEW56Onyama Limba
1001Juan WieserUnited Kingdom2026-06-01Feltz Printing Service NEGOTIATION36Amy Elsner
1002Greenwood BologniaSpain2026-05-11Chapman, Ross E Esq NEW30Xuxue Feng
1003Kadeem FlosiUnited Kingdom2026-05-28Buckley Miller Wright PROPOSAL82Ioni Bowcher
1004Darci PoquetteArgentina2026-05-31Buckley Miller Wright UNQUALIFIED36Onyama Limba
1005Francesco ShinkoSpain2026-05-15Buckley Miller Wright PROPOSAL14Ioni Bowcher
1006Darci PoquetteFrance2026-05-26Chanay, Jeffrey A Esq QUALIFIED64Asiya Javayant
1007Murillo MaletCanada2026-05-17Truhlar And Truhlar Attys QUALIFIED90Asiya Javayant
1008Darci PoquetteIndia2026-05-13Rangoni Of Florence UNQUALIFIED99Ivan Magalhaes
1009Aditya KuskoItaly2026-05-18Rousseaux, Michael Esq NEW9Asiya Javayant
1010Mujtaba NickaRussia2026-05-09Benton, John B Jr QUALIFIED10Anna Fali
1011Juan WieserArgentina2026-05-31Feltz Printing Service RENEWAL85Xuxue Feng
1012Leon OldroydIndia2026-05-25Chemel, James L Cpa UNQUALIFIED61Xuxue Feng
1013Munro FerenczIndia2026-05-12Rousseaux, Michael Esq QUALIFIED94Stephen Shaw
1014Maria MarrierJapan2026-05-23Rangoni Of Florence PROPOSAL93Bernardo Dominic
1015Cody SaylorsAustralia2026-05-11King, Christopher A Esq NEGOTIATION66Elwin Sharvill
1016Antonio CaudyCanada2026-05-12Feltz Printing Service NEW97Ivan Magalhaes
1017Claire TollnerBrazil2026-05-31Morlong Associates QUALIFIED98Asiya Javayant
1018Stacey MacleadIndia2026-05-23Chemel, James L Cpa UNQUALIFIED44Ioni Bowcher
1019Izzy GarufiArgentina2026-05-27Truhlar And Truhlar Attys RENEWAL14Ioni Bowcher
1020Stacey MacleadBrazil2026-06-02Dorl, James J Esq QUALIFIED66Bernardo Dominic
1021Sinclair WaycottJapan2026-05-11Dorl, James J Esq UNQUALIFIED58Onyama Limba
1022Aika InouyeJapan2026-06-01Truhlar And Truhlar Attys PROPOSAL74Onyama Limba
1023Aika InouyeJapan2026-05-10Feltz Printing Service UNQUALIFIED77Onyama Limba
1024Leon OldroydArgentina2026-05-11Chanay, Jeffrey A Esq NEGOTIATION69Onyama Limba
1025Kaitlin OstroskyBrazil2026-06-03Commercial Press PROPOSAL42Onyama Limba
1026Octavia MaletFrance2026-05-20Dorl, James J Esq NEGOTIATION0Stephen Shaw
1027Costa DilliardAustralia2026-05-29Chemel, James L Cpa PROPOSAL69Onyama Limba
1028Costa DilliardGermany2026-05-19Printing Dimensions UNQUALIFIED80Elwin Sharvill
1029Aruna FigeroaCanada2026-05-23Chemel, James L Cpa PROPOSAL67Onyama Limba
1030Clifford RimRussia2026-06-04Rousseaux, Michael Esq NEW57Xuxue Feng
1031Leja CaldareraArgentina2026-05-08Rangoni Of Florence NEW50Elwin Sharvill
1032Johnson SergiAustralia2026-06-01Commercial Press NEW37Xuxue Feng
1033Adams MorascaIndia2026-05-31Buckley Miller Wright NEGOTIATION28Anna Fali
1034Chavez BriddickItaly2026-05-24Feiner Bros UNQUALIFIED25Xuxue Feng
1035Ricardo GauchoFrance2026-05-18Morlong Associates UNQUALIFIED2Elwin Sharvill
1036Deepesh ChuiFrance2026-06-06Morlong Associates NEGOTIATION80Asiya Javayant
1037Leon OldroydRussia2026-05-24Chapman, Ross E Esq QUALIFIED15Amy Elsner
1038Leja CaldareraItaly2026-06-04Chemel, James L Cpa RENEWAL4Amy Elsner
1039Salvatore StockhamFrance2026-05-27Buckley Miller Wright NEGOTIATION55Stephen Shaw
1040Jefferson SchemmerCanada2026-05-25Truhlar And Truhlar Attys RENEWAL80Ivan Magalhaes
1041Jones VocelkaGermany2026-05-12Rangoni Of Florence UNQUALIFIED0Ivan Magalhaes
1042Juan WieserIndia2026-06-04Feltz Printing Service NEGOTIATION25Elwin Sharvill
1043Alejandro PerinUnited Kingdom2026-05-17Chemel, James L Cpa RENEWAL0Asiya Javayant
1044Munro FerenczUnited Kingdom2026-05-18Feltz Printing Service PROPOSAL96Elwin Sharvill
1045Jennifer AmigonRussia2026-05-09Buckley Miller Wright RENEWAL15Ioni Bowcher
1046Deepesh ChuiGermany2026-06-01Chemel, James L Cpa QUALIFIED24Asiya Javayant
1047Kadeem FlosiGermany2026-05-26Feiner Bros PROPOSAL50Asiya Javayant
1048Munro FerenczBrazil2026-05-12Chemel, James L Cpa UNQUALIFIED67Ivan Magalhaes
1049Maria MarrierIndia2026-05-19Chapman, Ross E Esq UNQUALIFIED95Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Misaki RoysterAustraliaBernardo Dominic NEGOTIATION
Mujtaba NickaUnited KingdomXuxue Feng NEGOTIATION
Antonio CaudyGermanyStephen Shaw NEGOTIATION
James ButtGermanyIoni Bowcher RENEWAL
Izzy GarufiFranceElwin Sharvill PROPOSAL
Salvatore StockhamAustraliaAmy Elsner NEGOTIATION
Sinclair WaycottItalyIvan Magalhaes UNQUALIFIED
Alejandro PerinRussiaAnna Fali QUALIFIED
Alejandro PerinBrazilBernardo Dominic UNQUALIFIED
Izzy GarufiFranceIoni Bowcher NEW
Stacey MacleadGermanyStephen Shaw NEGOTIATION
Kaitlin OstroskyUnited KingdomAnna Fali QUALIFIED
Nicolas IturbideItalyIoni Bowcher NEW
Johnson SergiItalyAnna Fali NEW
Johnson SergiGermanyAsiya Javayant QUALIFIED
Jones VocelkaGermanyAnna Fali NEW
Juan WieserItalyIvan Magalhaes UNQUALIFIED
Munro FerenczGermanyIoni Bowcher UNQUALIFIED
Aika InouyeBrazilElwin Sharvill QUALIFIED
Alejandro PerinSpainAnna Fali PROPOSAL
Ivar PaprockiCanadaElwin Sharvill PROPOSAL
Alejandro PerinArgentinaIvan Magalhaes UNQUALIFIED
Mayumi KolmetzGermanyStephen Shaw PROPOSAL
Jeanfrancois VenereArgentinaStephen Shaw NEW
Alejandro PerinFranceBernardo Dominic QUALIFIED
Costa DilliardFranceBernardo Dominic NEGOTIATION
Aditya KuskoArgentinaAnna Fali QUALIFIED
Smith GlickSpainBernardo Dominic PROPOSAL
Mujtaba NickaFranceIvan Magalhaes PROPOSAL
James ButtRussiaAnna Fali RENEWAL
Arvin AlbaresArgentinaIvan Magalhaes RENEWAL
Aditya KuskoUnited KingdomAsiya Javayant QUALIFIED
Murillo MaletBrazilElwin Sharvill UNQUALIFIED
Leon OldroydSpainElwin Sharvill UNQUALIFIED
Francesco ShinkoSpainAsiya Javayant NEW
Tony FollerCanadaStephen Shaw QUALIFIED
Leja CaldareraGermanyAmy Elsner NEW
Jones VocelkaItalyAmy Elsner PROPOSAL
Jefferson SchemmerGermanyAnna Fali QUALIFIED
Darci PoquetteGermanyOnyama Limba RENEWAL
Morrow RutaBrazilOnyama Limba NEGOTIATION
Darci PoquetteIndiaOnyama Limba NEGOTIATION
Claire TollnerSpainIoni Bowcher RENEWAL
Maria MarrierRussiaElwin Sharvill QUALIFIED
Jeanfrancois VenereAustraliaBernardo Dominic NEW
Ashley DoeItalyIvan Magalhaes RENEWAL
James ButtCanadaElwin Sharvill NEW
Tony FollerFranceBernardo Dominic NEGOTIATION
Juan WieserCanadaIvan Magalhaes QUALIFIED
Juan WieserFranceAmy Elsner PROPOSAL
Frozen Columns
Name
Juan Wieser
Alejandro Perin
Octavia Malet
Jefferson Schemmer
Octavia Malet
Silvio Slusarski
Ashley Doe
Octavia Malet
Munro Ferencz
Sinclair Waycott
Greenwood Bolognia
Greenwood Bolognia
Stacey Maclead
Mayumi Kolmetz
Clifford Rim
Costa Dilliard
Stacey Maclead
James Butt
Wickens Nestle
Claire Tollner
Maria Marrier
Octavia Malet
Misaki Royster
Rodrigues Campain
Deepesh Chui
Jennifer Amigon
Ashley Doe
Francesco Shinko
Leja Caldarera
Rodrigues Campain
Arvin Albares
Rodrigues Campain
Jones Vocelka
Jennifer Amigon
Alejandro Perin
Jefferson Schemmer
Misaki Royster
Maria Marrier
Mujtaba Nicka
Morrow Ruta
Munro Ferencz
Kaitlin Ostrosky
Francesco Shinko
Costa Dilliard
Rodrigues Campain
Darci Poquette
Ricardo Gaucho
Kadeem Flosi
Wickens Nestle
Izzy Garufi
IdCountryDate
1000Canada2026-06-02
1001Argentina2026-06-05
1002India2026-05-16
1003India2026-05-17
1004France2026-05-15
1005Canada2026-05-09
1006Argentina2026-05-13
1007Australia2026-05-14
1008France2026-05-14
1009Italy2026-05-15
1010Japan2026-05-17
1011Australia2026-05-16
1012Italy2026-05-15
1013Italy2026-06-05
1014Japan2026-05-23
1015India2026-05-29
1016Australia2026-06-04
1017Australia2026-05-31
1018Argentina2026-06-04
1019Japan2026-05-28
1020Brazil2026-05-22
1021India2026-05-26
1022Japan2026-06-05
1023Australia2026-05-31
1024France2026-05-17
1025Argentina2026-06-02
1026Australia2026-05-25
1027Argentina2026-05-13
1028Germany2026-05-13
1029Russia2026-05-30
1030Spain2026-05-08
1031Argentina2026-05-16
1032Canada2026-05-15
1033Germany2026-05-14
1034Canada2026-05-25
1035Brazil2026-05-09
1036Brazil2026-05-18
1037France2026-05-27
1038Australia2026-05-20
1039Argentina2026-05-09
1040Australia2026-05-08
1041United Kingdom2026-05-31
1042Australia2026-05-20
1043India2026-05-29
1044United Kingdom2026-05-26
1045Germany2026-06-05
1046Brazil2026-05-26
1047France2026-05-31
1048Italy2026-06-02
1049Australia2026-05-16

On-Demand Data

NameIdCountryDate
Aditya Kusko1000France2026-05-09
Murillo Malet1001Brazil2026-05-23
Faith Gillian1002Brazil2026-06-02
Maisha Rulapaugh1003Italy2026-05-19
Kaitlin Ostrosky1004United Kingdom2026-05-27
Tony Foller1005Spain2026-05-24
Julie Stenseth1006Germany2026-05-23
Adams Morasca1007United Kingdom2026-05-13
Jeanfrancois Venere1008Spain2026-05-13
Isabel Bowley1009United Kingdom2026-05-09
Emily Whobrey1010Canada2026-05-30
Deepesh Chui1011Canada2026-05-14
Claire Tollner1012Australia2026-05-28
Wickens Nestle1013Italy2026-05-08
Maisha Rulapaugh1014Australia2026-05-12
Adams Morasca1015Japan2026-06-04
Smith Glick1016Argentina2026-05-25
Aika Inouye1017Germany2026-05-29
Silvio Slusarski1018Japan2026-05-12
David Darakjy1019India2026-06-04
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Darci PoquetteAustraliaAsiya Javayant NEGOTIATION
Deepesh ChuiBrazilStephen Shaw RENEWAL
Aika InouyeAustraliaAsiya Javayant PROPOSAL
Deepesh ChuiBrazilAmy Elsner NEGOTIATION
Maisha RulapaughJapanAnna Fali NEW
Rodrigues CampainGermanyAmy Elsner PROPOSAL
Mujtaba NickaUnited KingdomIvan Magalhaes UNQUALIFIED
Antonio CaudyGermanyXuxue Feng NEGOTIATION
Isabel BowleyArgentinaAmy Elsner PROPOSAL
Aruna FigeroaBrazilAnna Fali PROPOSAL
Aruna FigeroaRussiaElwin Sharvill PROPOSAL
Mayumi KolmetzItalyIvan Magalhaes QUALIFIED
Mujtaba NickaUnited KingdomAnna Fali RENEWAL
Faith GillianCanadaAnna Fali NEGOTIATION
Silvio SlusarskiJapanXuxue Feng UNQUALIFIED
Faith GillianItalyAsiya Javayant UNQUALIFIED
Maria MarrierIndiaBernardo Dominic QUALIFIED
Misaki RoysterFranceBernardo Dominic QUALIFIED
Stacey MacleadCanadaAmy Elsner QUALIFIED
Murillo MaletUnited KingdomOnyama Limba NEGOTIATION
Costa DilliardArgentinaIoni Bowcher UNQUALIFIED
Antonio CaudyUnited KingdomStephen Shaw NEGOTIATION
Izzy GarufiJapanStephen Shaw UNQUALIFIED
Darci PoquetteAustraliaBernardo Dominic QUALIFIED
Mayumi KolmetzRussiaStephen Shaw RENEWAL
Stacey MacleadUnited KingdomAmy Elsner QUALIFIED
Mayumi KolmetzIndiaStephen Shaw NEW
Sinclair WaycottItalyStephen Shaw UNQUALIFIED
Stacey MacleadGermanyAmy Elsner UNQUALIFIED
Misaki RoysterArgentinaOnyama Limba RENEWAL
Smith GlickGermanyAsiya Javayant NEW
Leja CaldareraUnited KingdomIoni Bowcher NEW
Leon OldroydJapanStephen Shaw NEW
Kadeem FlosiRussiaAmy Elsner NEGOTIATION
Julie StensethUnited KingdomOnyama Limba QUALIFIED
Wickens NestleGermanyStephen Shaw UNQUALIFIED
Sinclair WaycottIndiaXuxue Feng PROPOSAL
Clifford RimCanadaIoni Bowcher UNQUALIFIED
Arvin AlbaresGermanyElwin Sharvill QUALIFIED
Francesco ShinkoSpainIvan Magalhaes NEGOTIATION

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