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 GlickRussiaStephen Shaw NEGOTIATION
Isabel BowleyUnited KingdomOnyama Limba NEW
Chavez BriddickRussiaBernardo Dominic RENEWAL
Morrow RutaGermanyIvan Magalhaes PROPOSAL
Isabel BowleyUnited KingdomAnna Fali RENEWAL
Juan WieserFranceStephen Shaw RENEWAL
Arvin AlbaresUnited KingdomAsiya Javayant UNQUALIFIED
Ricardo GauchoRussiaAnna Fali UNQUALIFIED
Aruna FigeroaAustraliaStephen Shaw NEW
Alejandro PerinFranceIvan Magalhaes NEW
Smith GlickIndiaBernardo Dominic NEGOTIATION
Stacey MacleadFranceIvan Magalhaes QUALIFIED
Aruna FigeroaBrazilAmy Elsner RENEWAL
Izzy GarufiJapanStephen Shaw PROPOSAL
Octavia MaletJapanBernardo Dominic QUALIFIED
Greenwood BologniaCanadaAsiya Javayant QUALIFIED
Chavez BriddickItalyAmy Elsner NEGOTIATION
Mujtaba NickaIndiaAnna Fali QUALIFIED
David DarakjyIndiaXuxue Feng QUALIFIED
Juan WieserAustraliaOnyama Limba NEW
Mayumi KolmetzArgentinaXuxue Feng UNQUALIFIED
Johnson SergiItalyAnna Fali UNQUALIFIED
Munro FerenczRussiaOnyama Limba RENEWAL
Jones VocelkaRussiaAsiya Javayant NEGOTIATION
Francesco ShinkoArgentinaStephen Shaw UNQUALIFIED
Alejandro PerinBrazilOnyama Limba NEGOTIATION
Stacey MacleadJapanBernardo Dominic NEW
Chavez BriddickJapanAsiya Javayant NEW
Claire TollnerAustraliaElwin Sharvill QUALIFIED
Aruna FigeroaItalyElwin Sharvill RENEWAL
Mayumi KolmetzCanadaAsiya Javayant UNQUALIFIED
Rodrigues CampainUnited KingdomBernardo Dominic QUALIFIED
Morrow RutaGermanyElwin Sharvill NEGOTIATION
Maisha RulapaughArgentinaAnna Fali RENEWAL
Jeanfrancois VenereAustraliaBernardo Dominic NEGOTIATION
Morrow RutaRussiaIvan Magalhaes NEW
Faith GillianCanadaStephen Shaw QUALIFIED
Tony FollerItalyBernardo Dominic QUALIFIED
Jones VocelkaIndiaStephen Shaw RENEWAL
Emily WhobreyIndiaStephen Shaw RENEWAL
Chavez BriddickGermanyBernardo Dominic QUALIFIED
Leja CaldareraCanadaXuxue Feng QUALIFIED
Maisha RulapaughAustraliaAsiya Javayant QUALIFIED
James ButtGermanyAsiya Javayant QUALIFIED
Murillo MaletGermanyIvan Magalhaes UNQUALIFIED
Clifford RimArgentinaAmy Elsner NEW
Costa DilliardCanadaStephen Shaw QUALIFIED
Murillo MaletUnited KingdomXuxue Feng NEGOTIATION
Antonio CaudyJapanElwin Sharvill NEGOTIATION
Tony FollerItalyAmy Elsner NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Ashley DoeAustraliaXuxue Feng NEGOTIATION
Cody SaylorsSpainIvan Magalhaes NEGOTIATION
Leon OldroydJapanBernardo Dominic PROPOSAL
Salvatore StockhamBrazilIoni Bowcher NEGOTIATION
Aditya KuskoSpainAnna Fali PROPOSAL
Leon OldroydUnited KingdomXuxue Feng QUALIFIED
Claire TollnerJapanAmy Elsner PROPOSAL
Salvatore StockhamIndiaIoni Bowcher QUALIFIED
Salvatore StockhamSpainIoni Bowcher PROPOSAL
Jefferson SchemmerIndiaAsiya Javayant RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Costa DilliardIndia2026-05-27Benton, John B Jr PROPOSAL38Ivan Magalhaes
1001Morrow RutaJapan2026-06-09Rousseaux, Michael Esq RENEWAL24Onyama Limba
1002Clifford RimUnited Kingdom2026-06-10Buckley Miller Wright NEGOTIATION75Ivan Magalhaes
1003Ivar PaprockiFrance2026-06-05Printing Dimensions NEGOTIATION27Ioni Bowcher
1004Misaki RoysterSpain2026-05-14Rangoni Of Florence RENEWAL39Bernardo Dominic
1005Rodrigues CampainSpain2026-05-15Feiner Bros NEGOTIATION69Ivan Magalhaes
1006Ricardo GauchoAustralia2026-05-18Chemel, James L Cpa NEGOTIATION29Bernardo Dominic
1007Sinclair WaycottItaly2026-05-23Dorl, James J Esq PROPOSAL64Elwin Sharvill
1008Alejandro PerinIndia2026-05-17Commercial Press UNQUALIFIED54Xuxue Feng
1009Johnson SergiArgentina2026-06-01Chapman, Ross E Esq PROPOSAL61Ioni Bowcher
1010Jeanfrancois VenereArgentina2026-05-26Rousseaux, Michael Esq PROPOSAL83Amy Elsner
1011Alejandro PerinBrazil2026-05-28Dorl, James J Esq NEW15Amy Elsner
1012Emily WhobreyUnited Kingdom2026-06-10Chapman, Ross E Esq PROPOSAL1Xuxue Feng
1013Rodrigues CampainBrazil2026-06-03Morlong Associates NEW26Xuxue Feng
1014Murillo MaletFrance2026-05-23Commercial Press QUALIFIED2Onyama Limba
1015Smith GlickItaly2026-06-06Dorl, James J Esq RENEWAL33Stephen Shaw
1016Rodrigues CampainRussia2026-06-07Chemel, James L Cpa NEGOTIATION15Xuxue Feng
1017Murillo MaletBrazil2026-05-20Rousseaux, Michael Esq RENEWAL88Elwin Sharvill
1018Emily WhobreyItaly2026-06-12Buckley Miller Wright QUALIFIED57Xuxue Feng
1019Aruna FigeroaFrance2026-05-22Printing Dimensions NEGOTIATION48Anna Fali
1020Rodrigues CampainAustralia2026-06-12Dorl, James J Esq PROPOSAL12Anna Fali
1021Alejandro PerinGermany2026-05-27Morlong Associates NEW69Asiya Javayant
1022David DarakjyRussia2026-06-09Feiner Bros QUALIFIED14Xuxue Feng
1023Ricardo GauchoAustralia2026-06-08King, Christopher A Esq UNQUALIFIED20Amy Elsner
1024David DarakjyCanada2026-06-04Buckley Miller Wright RENEWAL91Amy Elsner
1025Mayumi KolmetzFrance2026-05-23Commercial Press NEGOTIATION99Anna Fali
1026David DarakjyJapan2026-05-25Dorl, James J Esq UNQUALIFIED69Xuxue Feng
1027Greenwood BologniaBrazil2026-05-22Feiner Bros PROPOSAL53Amy Elsner
1028Ashley DoeAustralia2026-05-18Printing Dimensions RENEWAL11Amy Elsner
1029Costa DilliardUnited Kingdom2026-05-23Chapman, Ross E Esq QUALIFIED73Stephen Shaw
1030Kaitlin OstroskySpain2026-05-23Printing Dimensions NEW23Stephen Shaw
1031Jones VocelkaItaly2026-05-29Morlong Associates QUALIFIED78Anna Fali
1032Octavia MaletJapan2026-05-24Chanay, Jeffrey A Esq NEW5Ioni Bowcher
1033Maisha RulapaughFrance2026-05-27Feiner Bros RENEWAL31Stephen Shaw
1034Stacey MacleadUnited Kingdom2026-05-23Benton, John B Jr UNQUALIFIED5Onyama Limba
1035Rodrigues CampainJapan2026-05-17Feltz Printing Service NEGOTIATION22Ioni Bowcher
1036Misaki RoysterIndia2026-06-07Chanay, Jeffrey A Esq RENEWAL49Onyama Limba
1037James ButtFrance2026-06-05King, Christopher A Esq PROPOSAL8Ioni Bowcher
1038Emily WhobreyItaly2026-05-30Buckley Miller Wright UNQUALIFIED84Stephen Shaw
1039Ashley DoeArgentina2026-05-24Truhlar And Truhlar Attys RENEWAL98Ivan Magalhaes
1040Jeanfrancois VenereJapan2026-06-10Benton, John B Jr NEGOTIATION90Xuxue Feng
1041Ashley DoeRussia2026-06-04Chapman, Ross E Esq QUALIFIED78Stephen Shaw
1042Costa DilliardJapan2026-06-09King, Christopher A Esq RENEWAL83Stephen Shaw
1043Tony FollerFrance2026-05-27King, Christopher A Esq RENEWAL20Asiya Javayant
1044Costa DilliardBrazil2026-06-12Printing Dimensions UNQUALIFIED72Anna Fali
1045Costa DilliardItaly2026-06-03Dorl, James J Esq UNQUALIFIED92Elwin Sharvill
1046Maria MarrierFrance2026-05-26Chemel, James L Cpa NEGOTIATION80Ivan Magalhaes
1047Sinclair WaycottArgentina2026-06-05Chemel, James L Cpa QUALIFIED42Elwin Sharvill
1048Kadeem FlosiArgentina2026-05-23Morlong Associates NEGOTIATION7Bernardo Dominic
1049Aditya KuskoUnited Kingdom2026-05-29Buckley Miller Wright RENEWAL81Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Jennifer AmigonUnited KingdomAsiya Javayant PROPOSAL
Adams MorascaGermanyAmy Elsner PROPOSAL
James ButtIndiaStephen Shaw PROPOSAL
Jeanfrancois VenereIndiaElwin Sharvill NEW
Julie StensethArgentinaOnyama Limba NEGOTIATION
Mujtaba NickaSpainStephen Shaw NEGOTIATION
Aika InouyeGermanyAsiya Javayant UNQUALIFIED
Ricardo GauchoRussiaXuxue Feng RENEWAL
Ashley DoeGermanyIoni Bowcher NEGOTIATION
Kaitlin OstroskyJapanOnyama Limba PROPOSAL
Morrow RutaCanadaXuxue Feng QUALIFIED
Chavez BriddickRussiaAnna Fali RENEWAL
Nicolas IturbideCanadaXuxue Feng NEGOTIATION
Greenwood BologniaGermanyBernardo Dominic QUALIFIED
Arvin AlbaresGermanyAmy Elsner NEGOTIATION
Nicolas IturbideSpainIvan Magalhaes QUALIFIED
Isabel BowleyAustraliaAsiya Javayant NEGOTIATION
Maria MarrierCanadaXuxue Feng NEW
Kadeem FlosiFranceAnna Fali RENEWAL
Ivar PaprockiUnited KingdomXuxue Feng QUALIFIED
Aika InouyeBrazilOnyama Limba QUALIFIED
Greenwood BologniaIndiaIvan Magalhaes PROPOSAL
Leon OldroydJapanXuxue Feng NEGOTIATION
Mujtaba NickaJapanIoni Bowcher NEW
Tony FollerRussiaIoni Bowcher PROPOSAL
Aruna FigeroaIndiaOnyama Limba RENEWAL
Izzy GarufiGermanyOnyama Limba NEGOTIATION
Maisha RulapaughBrazilAnna Fali QUALIFIED
Jones VocelkaUnited KingdomOnyama Limba NEGOTIATION
Costa DilliardSpainIvan Magalhaes PROPOSAL
Isabel BowleyItalyAmy Elsner RENEWAL
Chavez BriddickArgentinaOnyama Limba PROPOSAL
Claire TollnerFranceOnyama Limba UNQUALIFIED
Maria MarrierSpainElwin Sharvill NEGOTIATION
Leon OldroydItalyAsiya Javayant UNQUALIFIED
Salvatore StockhamIndiaIvan Magalhaes NEW
Jennifer AmigonFranceXuxue Feng NEW
Arvin AlbaresIndiaAsiya Javayant UNQUALIFIED
Claire TollnerArgentinaXuxue Feng PROPOSAL
Morrow RutaArgentinaIvan Magalhaes QUALIFIED
Alejandro PerinIndiaBernardo Dominic PROPOSAL
Deepesh ChuiSpainAmy Elsner RENEWAL
Arvin AlbaresItalyAmy Elsner PROPOSAL
Jeanfrancois VenereItalyElwin Sharvill QUALIFIED
Jennifer AmigonGermanyIvan Magalhaes QUALIFIED
Jones VocelkaIndiaIvan Magalhaes PROPOSAL
Misaki RoysterUnited KingdomAsiya Javayant UNQUALIFIED
Rodrigues CampainJapanIvan Magalhaes UNQUALIFIED
Izzy GarufiFranceIvan Magalhaes PROPOSAL
Clifford RimArgentinaAmy Elsner PROPOSAL
Frozen Columns
Name
Alejandro Perin
James Butt
Murillo Malet
Jefferson Schemmer
Johnson Sergi
Ricardo Gaucho
Clifford Rim
Isabel Bowley
Kadeem Flosi
Jones Vocelka
Alejandro Perin
Leon Oldroyd
Leja Caldarera
Leja Caldarera
Jefferson Schemmer
Arvin Albares
Ashley Doe
James Butt
Ricardo Gaucho
Darci Poquette
Rodrigues Campain
Morrow Ruta
Nicolas Iturbide
Sinclair Waycott
Jones Vocelka
Alejandro Perin
Cody Saylors
Emily Whobrey
Misaki Royster
Salvatore Stockham
Izzy Garufi
Johnson Sergi
Izzy Garufi
Jefferson Schemmer
Juan Wieser
Emily Whobrey
Faith Gillian
Salvatore Stockham
Izzy Garufi
Jones Vocelka
Maisha Rulapaugh
Izzy Garufi
Jones Vocelka
Jefferson Schemmer
Alejandro Perin
Jennifer Amigon
Juan Wieser
Francesco Shinko
Juan Wieser
Adams Morasca
IdCountryDate
1000Japan2026-05-30
1001Italy2026-06-01
1002Italy2026-05-24
1003Argentina2026-06-05
1004Australia2026-05-22
1005Japan2026-06-03
1006India2026-05-28
1007Argentina2026-06-08
1008Brazil2026-05-26
1009France2026-06-05
1010Spain2026-05-14
1011Spain2026-05-24
1012Italy2026-06-01
1013France2026-05-29
1014India2026-06-01
1015Spain2026-05-18
1016Russia2026-06-09
1017Argentina2026-05-14
1018India2026-06-07
1019Spain2026-05-16
1020Canada2026-05-14
1021Argentina2026-06-01
1022United Kingdom2026-05-23
1023Japan2026-06-02
1024Australia2026-05-18
1025France2026-05-22
1026Italy2026-05-19
1027Germany2026-05-14
1028United Kingdom2026-06-08
1029Australia2026-05-16
1030Germany2026-05-31
1031Canada2026-06-08
1032Brazil2026-05-26
1033Germany2026-06-10
1034Argentina2026-05-24
1035Spain2026-05-18
1036France2026-05-19
1037Canada2026-06-10
1038Spain2026-05-25
1039Russia2026-06-12
1040Brazil2026-06-09
1041Germany2026-05-15
1042Brazil2026-06-08
1043Germany2026-05-18
1044Canada2026-06-10
1045Japan2026-05-25
1046Russia2026-05-15
1047Canada2026-06-09
1048India2026-05-23
1049Japan2026-05-25

On-Demand Data

NameIdCountryDate
James Butt1000Japan2026-06-02
James Butt1001Italy2026-05-18
Jennifer Amigon1002Japan2026-06-05
Deepesh Chui1003Brazil2026-06-04
Greenwood Bolognia1004Italy2026-06-02
Jennifer Amigon1005Canada2026-05-29
Jeanfrancois Venere1006Argentina2026-06-08
Rodrigues Campain1007Australia2026-06-03
Deepesh Chui1008United Kingdom2026-05-30
Salvatore Stockham1009France2026-05-28
Aika Inouye1010Germany2026-05-28
Morrow Ruta1011Spain2026-06-04
Faith Gillian1012Spain2026-05-21
David Darakjy1013Argentina2026-05-18
Mayumi Kolmetz1014France2026-06-07
Juan Wieser1015Argentina2026-05-17
Morrow Ruta1016Germany2026-06-02
Mayumi Kolmetz1017India2026-05-18
Leon Oldroyd1018Germany2026-05-19
Silvio Slusarski1019Brazil2026-05-29
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Deepesh ChuiBrazilOnyama Limba UNQUALIFIED
Juan WieserItalyElwin Sharvill NEW
Emily WhobreyArgentinaIvan Magalhaes NEGOTIATION
Alejandro PerinArgentinaAsiya Javayant NEW
Ricardo GauchoBrazilAmy Elsner PROPOSAL
Mayumi KolmetzBrazilOnyama Limba NEW
Aika InouyeSpainElwin Sharvill PROPOSAL
Claire TollnerUnited KingdomAmy Elsner RENEWAL
Jennifer AmigonIndiaBernardo Dominic UNQUALIFIED
Arvin AlbaresArgentinaAsiya Javayant NEW
Julie StensethIndiaElwin Sharvill UNQUALIFIED
Salvatore StockhamJapanXuxue Feng UNQUALIFIED
James ButtSpainAnna Fali RENEWAL
David DarakjyUnited KingdomAmy Elsner PROPOSAL
Rodrigues CampainItalyElwin Sharvill NEGOTIATION
Alejandro PerinSpainAnna Fali NEW
Costa DilliardUnited KingdomIoni Bowcher NEW
Jones VocelkaArgentinaAnna Fali UNQUALIFIED
Darci PoquetteSpainAnna Fali RENEWAL
Morrow RutaArgentinaIvan Magalhaes NEGOTIATION
Ashley DoeFranceAmy Elsner NEW
Greenwood BologniaRussiaAsiya Javayant NEGOTIATION
James ButtCanadaAsiya Javayant NEW
Arvin AlbaresGermanyElwin Sharvill PROPOSAL
Chavez BriddickJapanElwin Sharvill NEGOTIATION
Murillo MaletFranceAmy Elsner QUALIFIED
Mayumi KolmetzFranceIoni Bowcher UNQUALIFIED
Leon OldroydJapanElwin Sharvill RENEWAL
Ricardo GauchoCanadaElwin Sharvill UNQUALIFIED
Darci PoquetteBrazilIvan Magalhaes NEGOTIATION
Darci PoquetteItalyAnna Fali QUALIFIED
Izzy GarufiAustraliaAsiya Javayant QUALIFIED
David DarakjyJapanStephen Shaw NEW
Nicolas IturbideIndiaBernardo Dominic RENEWAL
Aruna FigeroaUnited KingdomStephen Shaw UNQUALIFIED
Alejandro PerinIndiaXuxue Feng NEW
Stacey MacleadArgentinaAmy Elsner NEW
Julie StensethJapanAsiya Javayant PROPOSAL
Johnson SergiCanadaStephen Shaw RENEWAL
Aika InouyeItalyOnyama Limba 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>