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
Leja CaldareraUnited KingdomIoni Bowcher QUALIFIED
Antonio CaudyJapanIoni Bowcher QUALIFIED
Julie StensethUnited KingdomStephen Shaw QUALIFIED
Juan WieserArgentinaStephen Shaw PROPOSAL
Stacey MacleadJapanIvan Magalhaes PROPOSAL
Munro FerenczCanadaStephen Shaw NEGOTIATION
Maria MarrierBrazilOnyama Limba QUALIFIED
Leon OldroydGermanyStephen Shaw UNQUALIFIED
Murillo MaletSpainXuxue Feng RENEWAL
Murillo MaletJapanBernardo Dominic QUALIFIED
Sinclair WaycottCanadaAsiya Javayant QUALIFIED
Alejandro PerinCanadaAsiya Javayant QUALIFIED
Aditya KuskoIndiaBernardo Dominic UNQUALIFIED
Chavez BriddickRussiaOnyama Limba UNQUALIFIED
Ricardo GauchoIndiaAmy Elsner PROPOSAL
Ashley DoeRussiaAmy Elsner NEGOTIATION
Morrow RutaSpainOnyama Limba NEGOTIATION
Misaki RoysterGermanyOnyama Limba NEW
Leja CaldareraIndiaOnyama Limba RENEWAL
Nicolas IturbideBrazilAnna Fali RENEWAL
Jeanfrancois VenereRussiaAnna Fali QUALIFIED
Maisha RulapaughGermanyAsiya Javayant RENEWAL
Claire TollnerItalyElwin Sharvill NEGOTIATION
Smith GlickItalyIvan Magalhaes PROPOSAL
Jeanfrancois VenereCanadaAnna Fali NEW
Arvin AlbaresFranceAsiya Javayant NEGOTIATION
Salvatore StockhamIndiaOnyama Limba NEGOTIATION
Kaitlin OstroskyArgentinaStephen Shaw PROPOSAL
Isabel BowleyArgentinaOnyama Limba RENEWAL
Salvatore StockhamArgentinaXuxue Feng NEW
Costa DilliardSpainIvan Magalhaes NEW
Murillo MaletUnited KingdomIoni Bowcher NEGOTIATION
Ricardo GauchoAustraliaIvan Magalhaes UNQUALIFIED
Chavez BriddickGermanyStephen Shaw QUALIFIED
Tony FollerSpainAsiya Javayant NEGOTIATION
Wickens NestleArgentinaAnna Fali RENEWAL
Cody SaylorsGermanyAmy Elsner NEGOTIATION
Chavez BriddickRussiaElwin Sharvill UNQUALIFIED
Smith GlickSpainOnyama Limba UNQUALIFIED
Greenwood BologniaAustraliaBernardo Dominic RENEWAL
Tony FollerUnited KingdomAnna Fali NEW
Tony FollerJapanAsiya Javayant QUALIFIED
David DarakjyCanadaAsiya Javayant NEGOTIATION
Emily WhobreyUnited KingdomAmy Elsner RENEWAL
Smith GlickUnited KingdomOnyama Limba PROPOSAL
Jennifer AmigonIndiaBernardo Dominic NEGOTIATION
Izzy GarufiUnited KingdomStephen Shaw RENEWAL
Ashley DoeJapanAnna Fali PROPOSAL
Maisha RulapaughArgentinaOnyama Limba RENEWAL
David DarakjyArgentinaXuxue Feng NEW
Horizontal
NameCountryRepresentativeStatus
Jennifer AmigonUnited KingdomIoni Bowcher NEW
Jones VocelkaIndiaAnna Fali QUALIFIED
Greenwood BologniaIndiaAmy Elsner QUALIFIED
Munro FerenczFranceIvan Magalhaes NEGOTIATION
David DarakjyBrazilElwin Sharvill PROPOSAL
Julie StensethIndiaIvan Magalhaes RENEWAL
James ButtArgentinaXuxue Feng NEGOTIATION
Wickens NestleJapanAsiya Javayant NEW
Octavia MaletItalyOnyama Limba PROPOSAL
Aika InouyeUnited KingdomBernardo Dominic PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Maria MarrierArgentina2026-04-08Feiner Bros RENEWAL97Asiya Javayant
1001Costa DilliardAustralia2026-03-27Truhlar And Truhlar Attys NEW34Ivan Magalhaes
1002Aditya KuskoJapan2026-04-02Chanay, Jeffrey A Esq UNQUALIFIED79Onyama Limba
1003Ricardo GauchoCanada2026-03-29Morlong Associates NEGOTIATION14Ioni Bowcher
1004Chavez BriddickArgentina2026-04-11King, Christopher A Esq NEGOTIATION4Amy Elsner
1005Claire TollnerSpain2026-04-12Commercial Press RENEWAL41Asiya Javayant
1006Faith GillianAustralia2026-04-21Feltz Printing Service NEGOTIATION38Anna Fali
1007Jennifer AmigonAustralia2026-04-09Dorl, James J Esq NEGOTIATION2Amy Elsner
1008Wickens NestleAustralia2026-03-28Truhlar And Truhlar Attys PROPOSAL71Stephen Shaw
1009Murillo MaletAustralia2026-03-31Rousseaux, Michael Esq PROPOSAL27Onyama Limba
1010Aruna FigeroaRussia2026-04-12Chemel, James L Cpa QUALIFIED99Onyama Limba
1011Morrow RutaJapan2026-04-02Chemel, James L Cpa NEGOTIATION30Onyama Limba
1012Antonio CaudyGermany2026-04-07Rangoni Of Florence QUALIFIED11Elwin Sharvill
1013Ashley DoeFrance2026-04-21Feiner Bros QUALIFIED3Elwin Sharvill
1014Jeanfrancois VenereIndia2026-04-02Feiner Bros QUALIFIED38Xuxue Feng
1015Stacey MacleadCanada2026-04-17Dorl, James J Esq NEGOTIATION39Stephen Shaw
1016Jefferson SchemmerBrazil2026-04-22Rangoni Of Florence RENEWAL97Ivan Magalhaes
1017Jeanfrancois VenereBrazil2026-04-07Truhlar And Truhlar Attys NEGOTIATION85Amy Elsner
1018Aika InouyeAustralia2026-03-25Benton, John B Jr PROPOSAL16Onyama Limba
1019Morrow RutaGermany2026-04-10Feiner Bros RENEWAL98Ioni Bowcher
1020Ashley DoeUnited Kingdom2026-04-08Chanay, Jeffrey A Esq QUALIFIED15Onyama Limba
1021David DarakjyArgentina2026-03-29Buckley Miller Wright QUALIFIED61Onyama Limba
1022Deepesh ChuiJapan2026-03-30Chapman, Ross E Esq RENEWAL89Stephen Shaw
1023Jones VocelkaGermany2026-03-28Truhlar And Truhlar Attys QUALIFIED31Elwin Sharvill
1024Ashley DoeAustralia2026-03-26King, Christopher A Esq UNQUALIFIED81Elwin Sharvill
1025Antonio CaudyBrazil2026-03-31Buckley Miller Wright QUALIFIED81Anna Fali
1026Leon OldroydItaly2026-04-10Rangoni Of Florence NEW42Amy Elsner
1027Sinclair WaycottArgentina2026-04-21Rangoni Of Florence UNQUALIFIED48Stephen Shaw
1028Aruna FigeroaBrazil2026-03-24Truhlar And Truhlar Attys UNQUALIFIED34Onyama Limba
1029Clifford RimJapan2026-04-17Truhlar And Truhlar Attys NEW42Ivan Magalhaes
1030Costa DilliardIndia2026-04-13Commercial Press NEW51Elwin Sharvill
1031Jefferson SchemmerBrazil2026-04-05Rousseaux, Michael Esq QUALIFIED97Elwin Sharvill
1032Adams MorascaSpain2026-04-08Buckley Miller Wright RENEWAL93Amy Elsner
1033Ivar PaprockiArgentina2026-04-01Rangoni Of Florence NEW87Onyama Limba
1034Octavia MaletGermany2026-04-11Benton, John B Jr NEGOTIATION14Asiya Javayant
1035Maisha RulapaughIndia2026-04-07Commercial Press QUALIFIED94Onyama Limba
1036Tony FollerRussia2026-04-13Rangoni Of Florence PROPOSAL9Ioni Bowcher
1037Munro FerenczSpain2026-04-06Morlong Associates UNQUALIFIED26Elwin Sharvill
1038Smith GlickAustralia2026-03-27Commercial Press NEW38Bernardo Dominic
1039Cody SaylorsFrance2026-03-30Printing Dimensions QUALIFIED27Stephen Shaw
1040Alejandro PerinArgentina2026-04-16Commercial Press PROPOSAL30Asiya Javayant
1041Kaitlin OstroskyAustralia2026-03-26Dorl, James J Esq QUALIFIED59Asiya Javayant
1042Adams MorascaItaly2026-04-07Chemel, James L Cpa UNQUALIFIED37Xuxue Feng
1043Costa DilliardSpain2026-04-09Feltz Printing Service PROPOSAL17Ivan Magalhaes
1044Tony FollerGermany2026-04-11Truhlar And Truhlar Attys PROPOSAL10Onyama Limba
1045Costa DilliardBrazil2026-03-27Chapman, Ross E Esq PROPOSAL20Anna Fali
1046Maisha RulapaughUnited Kingdom2026-04-09Rangoni Of Florence QUALIFIED46Xuxue Feng
1047Darci PoquetteFrance2026-04-22Chapman, Ross E Esq RENEWAL41Onyama Limba
1048Misaki RoysterFrance2026-03-30Truhlar And Truhlar Attys NEGOTIATION39Elwin Sharvill
1049Darci PoquetteArgentina2026-04-09Printing Dimensions UNQUALIFIED55Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Jones VocelkaFranceXuxue Feng RENEWAL
Emily WhobreyGermanyBernardo Dominic UNQUALIFIED
Juan WieserGermanyAsiya Javayant NEGOTIATION
Arvin AlbaresFranceBernardo Dominic QUALIFIED
Costa DilliardIndiaStephen Shaw PROPOSAL
Leon OldroydUnited KingdomElwin Sharvill RENEWAL
Maria MarrierUnited KingdomIvan Magalhaes RENEWAL
Greenwood BologniaItalyXuxue Feng NEW
Stacey MacleadGermanyIoni Bowcher UNQUALIFIED
Antonio CaudyGermanyIvan Magalhaes PROPOSAL
Leon OldroydRussiaOnyama Limba QUALIFIED
Antonio CaudyBrazilAnna Fali NEGOTIATION
Leja CaldareraCanadaAnna Fali PROPOSAL
Juan WieserBrazilElwin Sharvill QUALIFIED
Ivar PaprockiSpainXuxue Feng QUALIFIED
Costa DilliardFranceAnna Fali RENEWAL
Mujtaba NickaSpainIoni Bowcher QUALIFIED
Maria MarrierItalyAnna Fali NEGOTIATION
Murillo MaletGermanyStephen Shaw PROPOSAL
Jennifer AmigonCanadaXuxue Feng NEW
James ButtUnited KingdomStephen Shaw QUALIFIED
Isabel BowleyItalyStephen Shaw UNQUALIFIED
Ashley DoeUnited KingdomAmy Elsner UNQUALIFIED
Greenwood BologniaIndiaElwin Sharvill UNQUALIFIED
Jeanfrancois VenereGermanyXuxue Feng UNQUALIFIED
Ricardo GauchoItalyElwin Sharvill NEW
Jeanfrancois VenereCanadaIoni Bowcher UNQUALIFIED
Francesco ShinkoGermanyBernardo Dominic QUALIFIED
Rodrigues CampainAustraliaElwin Sharvill PROPOSAL
Mayumi KolmetzRussiaIoni Bowcher NEW
Silvio SlusarskiSpainStephen Shaw UNQUALIFIED
Morrow RutaRussiaElwin Sharvill QUALIFIED
James ButtFranceOnyama Limba NEGOTIATION
Alejandro PerinJapanElwin Sharvill RENEWAL
Wickens NestleArgentinaBernardo Dominic RENEWAL
Chavez BriddickIndiaXuxue Feng RENEWAL
Aditya KuskoBrazilIoni Bowcher QUALIFIED
Leja CaldareraGermanyXuxue Feng QUALIFIED
Johnson SergiUnited KingdomAnna Fali QUALIFIED
Claire TollnerSpainIoni Bowcher UNQUALIFIED
Johnson SergiBrazilAsiya Javayant UNQUALIFIED
Salvatore StockhamUnited KingdomIvan Magalhaes UNQUALIFIED
Adams MorascaAustraliaBernardo Dominic NEGOTIATION
Leja CaldareraFranceXuxue Feng UNQUALIFIED
Adams MorascaGermanyAsiya Javayant RENEWAL
Smith GlickIndiaAmy Elsner RENEWAL
Aditya KuskoIndiaAmy Elsner UNQUALIFIED
Kadeem FlosiCanadaIvan Magalhaes UNQUALIFIED
Francesco ShinkoAustraliaIoni Bowcher UNQUALIFIED
Mujtaba NickaJapanStephen Shaw QUALIFIED
Frozen Columns
Name
James Butt
Jeanfrancois Venere
Izzy Garufi
Smith Glick
Tony Foller
Aruna Figeroa
Jeanfrancois Venere
Claire Tollner
Adams Morasca
Leon Oldroyd
Claire Tollner
Leja Caldarera
Emily Whobrey
Greenwood Bolognia
Aruna Figeroa
David Darakjy
Octavia Malet
Darci Poquette
Claire Tollner
Adams Morasca
Darci Poquette
Salvatore Stockham
Jefferson Schemmer
Morrow Ruta
Deepesh Chui
Aika Inouye
Murillo Malet
Nicolas Iturbide
Salvatore Stockham
Nicolas Iturbide
Tony Foller
Chavez Briddick
Rodrigues Campain
Alejandro Perin
Misaki Royster
Faith Gillian
Izzy Garufi
Jennifer Amigon
Adams Morasca
Costa Dilliard
Johnson Sergi
Julie Stenseth
Maria Marrier
Cody Saylors
Emily Whobrey
Salvatore Stockham
Claire Tollner
Kaitlin Ostrosky
Jones Vocelka
Julie Stenseth
IdCountryDate
1000Brazil2026-04-03
1001Japan2026-04-10
1002Canada2026-04-18
1003Australia2026-04-18
1004United Kingdom2026-03-26
1005Italy2026-04-05
1006Germany2026-04-21
1007Brazil2026-03-31
1008Russia2026-03-26
1009India2026-04-02
1010India2026-04-09
1011Canada2026-04-06
1012Germany2026-04-18
1013India2026-04-19
1014Canada2026-03-25
1015Italy2026-03-29
1016Japan2026-04-20
1017Russia2026-03-27
1018Germany2026-03-24
1019Germany2026-04-01
1020Australia2026-04-08
1021Japan2026-03-31
1022Japan2026-03-29
1023Argentina2026-03-25
1024Argentina2026-04-09
1025Russia2026-04-04
1026Australia2026-04-22
1027Argentina2026-03-27
1028Australia2026-04-03
1029Spain2026-04-20
1030India2026-04-04
1031Italy2026-04-20
1032Italy2026-04-10
1033Australia2026-04-11
1034Australia2026-04-13
1035Australia2026-04-05
1036Russia2026-04-02
1037Spain2026-04-20
1038Germany2026-04-19
1039France2026-04-02
1040France2026-03-25
1041Germany2026-04-21
1042United Kingdom2026-04-04
1043United Kingdom2026-04-03
1044Italy2026-04-22
1045Argentina2026-04-13
1046Canada2026-04-14
1047France2026-04-02
1048Australia2026-04-15
1049Brazil2026-04-21

On-Demand Data

NameIdCountryDate
Smith Glick1000Japan2026-04-03
Maria Marrier1001Germany2026-03-30
Francesco Shinko1002Spain2026-04-03
Isabel Bowley1003Argentina2026-03-30
Mayumi Kolmetz1004Italy2026-04-20
Jones Vocelka1005Australia2026-04-04
James Butt1006Argentina2026-04-05
Tony Foller1007Russia2026-04-16
Cody Saylors1008India2026-04-02
Julie Stenseth1009Spain2026-04-01
Darci Poquette1010India2026-04-13
Misaki Royster1011India2026-04-18
Misaki Royster1012Brazil2026-04-13
Izzy Garufi1013Brazil2026-04-10
Tony Foller1014Japan2026-03-26
Ivar Paprocki1015France2026-04-12
Smith Glick1016Australia2026-04-21
Maria Marrier1017Russia2026-04-12
Deepesh Chui1018Brazil2026-04-18
Julie Stenseth1019Australia2026-04-22
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Murillo MaletGermanyXuxue Feng PROPOSAL
Aika InouyeSpainOnyama Limba QUALIFIED
Silvio SlusarskiCanadaAnna Fali RENEWAL
Leja CaldareraItalyXuxue Feng QUALIFIED
Claire TollnerArgentinaAsiya Javayant PROPOSAL
Cody SaylorsJapanXuxue Feng QUALIFIED
Smith GlickRussiaBernardo Dominic RENEWAL
Costa DilliardFranceXuxue Feng PROPOSAL
Maisha RulapaughRussiaIoni Bowcher NEGOTIATION
Jeanfrancois VenereArgentinaStephen Shaw RENEWAL
Munro FerenczAustraliaIvan Magalhaes QUALIFIED
Claire TollnerJapanAsiya Javayant PROPOSAL
Deepesh ChuiIndiaIvan Magalhaes PROPOSAL
Jeanfrancois VenereJapanIoni Bowcher NEGOTIATION
Leja CaldareraGermanyAnna Fali QUALIFIED
Jeanfrancois VenereGermanyIvan Magalhaes NEGOTIATION
Julie StensethJapanElwin Sharvill NEW
Greenwood BologniaGermanyAsiya Javayant UNQUALIFIED
Clifford RimFranceElwin Sharvill RENEWAL
Izzy GarufiItalyElwin Sharvill PROPOSAL
Jennifer AmigonAustraliaIoni Bowcher QUALIFIED
Maria MarrierSpainElwin Sharvill PROPOSAL
Mujtaba NickaJapanElwin Sharvill RENEWAL
Faith GillianBrazilOnyama Limba NEW
Jones VocelkaSpainIvan Magalhaes NEGOTIATION
James ButtAustraliaElwin Sharvill UNQUALIFIED
James ButtGermanyIvan Magalhaes NEGOTIATION
James ButtCanadaIoni Bowcher RENEWAL
Ivar PaprockiArgentinaAsiya Javayant NEGOTIATION
Aika InouyeUnited KingdomStephen Shaw RENEWAL
Jones VocelkaUnited KingdomStephen Shaw RENEWAL
Maisha RulapaughCanadaBernardo Dominic QUALIFIED
Chavez BriddickJapanBernardo Dominic QUALIFIED
Nicolas IturbideFranceIoni Bowcher PROPOSAL
Arvin AlbaresAustraliaOnyama Limba NEW
Emily WhobreyIndiaBernardo Dominic RENEWAL
Munro FerenczArgentinaIvan Magalhaes QUALIFIED
Wickens NestleRussiaElwin Sharvill RENEWAL
Chavez BriddickRussiaAmy Elsner RENEWAL
Wickens NestleSpainElwin 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>