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
Maisha RulapaughAustraliaBernardo Dominic RENEWAL
Maria MarrierSpainIoni Bowcher QUALIFIED
Costa DilliardUnited KingdomAmy Elsner NEGOTIATION
Octavia MaletGermanyStephen Shaw RENEWAL
Murillo MaletAustraliaAsiya Javayant NEW
Wickens NestleSpainXuxue Feng NEGOTIATION
Arvin AlbaresFranceAmy Elsner NEW
Julie StensethJapanOnyama Limba NEGOTIATION
Leja CaldareraItalyStephen Shaw UNQUALIFIED
Greenwood BologniaUnited KingdomAnna Fali QUALIFIED
Darci PoquetteAustraliaIvan Magalhaes RENEWAL
Kaitlin OstroskyArgentinaOnyama Limba NEGOTIATION
Octavia MaletSpainIoni Bowcher PROPOSAL
Kaitlin OstroskyBrazilIoni Bowcher QUALIFIED
Aditya KuskoCanadaBernardo Dominic RENEWAL
Faith GillianUnited KingdomXuxue Feng NEGOTIATION
Nicolas IturbideJapanAsiya Javayant RENEWAL
Tony FollerSpainXuxue Feng RENEWAL
Jones VocelkaCanadaIoni Bowcher RENEWAL
Juan WieserItalyXuxue Feng PROPOSAL
Clifford RimIndiaAnna Fali NEGOTIATION
Aditya KuskoArgentinaIvan Magalhaes UNQUALIFIED
Emily WhobreyUnited KingdomXuxue Feng NEGOTIATION
Wickens NestleRussiaAsiya Javayant QUALIFIED
Kaitlin OstroskyArgentinaStephen Shaw PROPOSAL
Francesco ShinkoJapanIoni Bowcher PROPOSAL
Jones VocelkaIndiaIoni Bowcher RENEWAL
Stacey MacleadItalyOnyama Limba RENEWAL
Jeanfrancois VenereJapanIoni Bowcher NEGOTIATION
Claire TollnerJapanElwin Sharvill NEW
David DarakjyRussiaElwin Sharvill QUALIFIED
Jennifer AmigonCanadaStephen Shaw NEW
Costa DilliardRussiaAmy Elsner NEGOTIATION
Jones VocelkaArgentinaXuxue Feng UNQUALIFIED
Johnson SergiGermanyIvan Magalhaes NEGOTIATION
Darci PoquetteIndiaOnyama Limba UNQUALIFIED
Emily WhobreyUnited KingdomBernardo Dominic NEW
Sinclair WaycottGermanyOnyama Limba UNQUALIFIED
Francesco ShinkoSpainOnyama Limba PROPOSAL
Alejandro PerinArgentinaIvan Magalhaes NEW
Murillo MaletCanadaBernardo Dominic NEGOTIATION
Tony FollerSpainStephen Shaw NEW
Mayumi KolmetzRussiaIoni Bowcher RENEWAL
Kadeem FlosiArgentinaIoni Bowcher RENEWAL
James ButtBrazilOnyama Limba NEW
Antonio CaudyArgentinaIvan Magalhaes RENEWAL
Maisha RulapaughArgentinaIvan Magalhaes NEW
David DarakjyArgentinaStephen Shaw RENEWAL
Ivar PaprockiJapanIoni Bowcher NEW
Jennifer AmigonArgentinaAnna Fali RENEWAL
Horizontal
NameCountryRepresentativeStatus
Emily WhobreyArgentinaAsiya Javayant RENEWAL
Greenwood BologniaUnited KingdomBernardo Dominic PROPOSAL
Wickens NestleAustraliaStephen Shaw NEGOTIATION
Francesco ShinkoAustraliaOnyama Limba RENEWAL
Ricardo GauchoRussiaIoni Bowcher QUALIFIED
Julie StensethRussiaStephen Shaw NEGOTIATION
Cody SaylorsJapanIvan Magalhaes PROPOSAL
Alejandro PerinIndiaAmy Elsner RENEWAL
Cody SaylorsSpainIoni Bowcher PROPOSAL
Munro FerenczFranceIoni Bowcher PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Rodrigues CampainArgentina2026-05-30Feltz Printing Service RENEWAL70Xuxue Feng
1001Mujtaba NickaFrance2026-05-11Benton, John B Jr QUALIFIED55Ivan Magalhaes
1002Cody SaylorsFrance2026-05-10Dorl, James J Esq QUALIFIED17Bernardo Dominic
1003Johnson SergiGermany2026-06-01Benton, John B Jr NEGOTIATION6Elwin Sharvill
1004Julie StensethArgentina2026-05-18Chanay, Jeffrey A Esq QUALIFIED32Bernardo Dominic
1005Mayumi KolmetzBrazil2026-05-26Rousseaux, Michael Esq RENEWAL29Bernardo Dominic
1006Ashley DoeUnited Kingdom2026-05-16Truhlar And Truhlar Attys RENEWAL8Ioni Bowcher
1007Costa DilliardItaly2026-05-20Buckley Miller Wright UNQUALIFIED18Stephen Shaw
1008Costa DilliardJapan2026-05-10Chemel, James L Cpa QUALIFIED77Stephen Shaw
1009Chavez BriddickJapan2026-05-23Morlong Associates NEGOTIATION69Ivan Magalhaes
1010Kadeem FlosiRussia2026-05-18Dorl, James J Esq NEW84Xuxue Feng
1011Mujtaba NickaRussia2026-05-27King, Christopher A Esq UNQUALIFIED42Anna Fali
1012Misaki RoysterSpain2026-06-04Dorl, James J Esq PROPOSAL69Elwin Sharvill
1013Aika InouyeAustralia2026-05-16Commercial Press QUALIFIED23Ioni Bowcher
1014Antonio CaudyIndia2026-05-30Rousseaux, Michael Esq RENEWAL19Elwin Sharvill
1015Jeanfrancois VenereGermany2026-05-08Dorl, James J Esq NEW94Ivan Magalhaes
1016Mayumi KolmetzItaly2026-05-09Rousseaux, Michael Esq UNQUALIFIED14Xuxue Feng
1017Cody SaylorsIndia2026-05-22Benton, John B Jr NEGOTIATION19Ivan Magalhaes
1018Sinclair WaycottIndia2026-05-18Morlong Associates NEW77Onyama Limba
1019Adams MorascaBrazil2026-05-09Truhlar And Truhlar Attys NEGOTIATION22Asiya Javayant
1020Jeanfrancois VenereIndia2026-06-02Printing Dimensions QUALIFIED67Stephen Shaw
1021Ricardo GauchoSpain2026-05-27Benton, John B Jr PROPOSAL56Anna Fali
1022Morrow RutaItaly2026-05-30Chemel, James L Cpa NEGOTIATION40Amy Elsner
1023Silvio SlusarskiJapan2026-05-19Chanay, Jeffrey A Esq NEGOTIATION35Asiya Javayant
1024Murillo MaletSpain2026-05-11Feiner Bros NEW46Anna Fali
1025Arvin AlbaresItaly2026-05-27Chemel, James L Cpa RENEWAL80Stephen Shaw
1026Kaitlin OstroskyFrance2026-06-03Chemel, James L Cpa UNQUALIFIED63Xuxue Feng
1027David DarakjyArgentina2026-05-10Chapman, Ross E Esq RENEWAL47Asiya Javayant
1028Alejandro PerinJapan2026-05-27Feltz Printing Service NEW67Elwin Sharvill
1029Wickens NestleFrance2026-05-09Feltz Printing Service PROPOSAL58Onyama Limba
1030Ivar PaprockiGermany2026-06-04Chapman, Ross E Esq RENEWAL58Xuxue Feng
1031Stacey MacleadItaly2026-05-11Rousseaux, Michael Esq NEGOTIATION72Ioni Bowcher
1032Nicolas IturbideCanada2026-05-11Chemel, James L Cpa NEGOTIATION27Stephen Shaw
1033Greenwood BologniaAustralia2026-05-11Chemel, James L Cpa NEGOTIATION14Elwin Sharvill
1034Stacey MacleadCanada2026-06-01Truhlar And Truhlar Attys NEGOTIATION29Elwin Sharvill
1035Julie StensethAustralia2026-05-31Commercial Press NEGOTIATION70Bernardo Dominic
1036Ricardo GauchoCanada2026-05-23Rousseaux, Michael Esq QUALIFIED37Onyama Limba
1037Murillo MaletUnited Kingdom2026-06-01Buckley Miller Wright NEGOTIATION64Ioni Bowcher
1038Stacey MacleadCanada2026-05-15Buckley Miller Wright NEGOTIATION17Asiya Javayant
1039Ricardo GauchoSpain2026-05-22King, Christopher A Esq UNQUALIFIED43Asiya Javayant
1040Leja CaldareraJapan2026-05-30Feltz Printing Service RENEWAL82Amy Elsner
1041Ashley DoeSpain2026-06-01Chanay, Jeffrey A Esq NEW95Ioni Bowcher
1042Cody SaylorsIndia2026-05-16Chemel, James L Cpa NEGOTIATION70Onyama Limba
1043David DarakjyArgentina2026-05-13Feltz Printing Service QUALIFIED53Asiya Javayant
1044Deepesh ChuiJapan2026-05-09Printing Dimensions NEW23Onyama Limba
1045Leon OldroydFrance2026-05-08Dorl, James J Esq RENEWAL30Xuxue Feng
1046Munro FerenczJapan2026-05-29Rousseaux, Michael Esq PROPOSAL72Amy Elsner
1047Silvio SlusarskiIndia2026-05-25Chemel, James L Cpa QUALIFIED37Bernardo Dominic
1048Darci PoquetteSpain2026-05-30Rangoni Of Florence RENEWAL93Asiya Javayant
1049Salvatore StockhamFrance2026-05-14Dorl, James J Esq QUALIFIED36Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Clifford RimUnited KingdomBernardo Dominic NEW
Murillo MaletArgentinaAmy Elsner RENEWAL
Chavez BriddickIndiaStephen Shaw UNQUALIFIED
Clifford RimAustraliaBernardo Dominic PROPOSAL
Deepesh ChuiArgentinaAnna Fali NEW
Maisha RulapaughAustraliaElwin Sharvill NEGOTIATION
Munro FerenczArgentinaBernardo Dominic UNQUALIFIED
Leon OldroydIndiaAsiya Javayant QUALIFIED
Jennifer AmigonRussiaIoni Bowcher PROPOSAL
Cody SaylorsBrazilAsiya Javayant UNQUALIFIED
Octavia MaletSpainAnna Fali RENEWAL
Faith GillianRussiaIvan Magalhaes NEGOTIATION
Clifford RimBrazilElwin Sharvill PROPOSAL
Chavez BriddickCanadaStephen Shaw QUALIFIED
Alejandro PerinGermanyBernardo Dominic QUALIFIED
Julie StensethRussiaAmy Elsner QUALIFIED
Chavez BriddickSpainAnna Fali NEGOTIATION
Deepesh ChuiGermanyElwin Sharvill QUALIFIED
Sinclair WaycottCanadaElwin Sharvill QUALIFIED
Maisha RulapaughArgentinaOnyama Limba NEGOTIATION
Juan WieserArgentinaAsiya Javayant RENEWAL
Leja CaldareraSpainElwin Sharvill NEGOTIATION
Costa DilliardItalyStephen Shaw QUALIFIED
Darci PoquetteAustraliaIoni Bowcher UNQUALIFIED
Rodrigues CampainSpainBernardo Dominic NEW
Kaitlin OstroskyItalyAnna Fali RENEWAL
Chavez BriddickAustraliaElwin Sharvill QUALIFIED
Juan WieserGermanyOnyama Limba PROPOSAL
Francesco ShinkoGermanyXuxue Feng NEGOTIATION
Isabel BowleyRussiaAnna Fali QUALIFIED
Misaki RoysterArgentinaOnyama Limba QUALIFIED
Jeanfrancois VenereFranceXuxue Feng PROPOSAL
Deepesh ChuiItalyStephen Shaw RENEWAL
Izzy GarufiAustraliaBernardo Dominic RENEWAL
David DarakjyJapanAnna Fali UNQUALIFIED
Wickens NestleIndiaBernardo Dominic NEW
Clifford RimFranceElwin Sharvill UNQUALIFIED
Mayumi KolmetzIndiaIvan Magalhaes NEW
Stacey MacleadIndiaAmy Elsner NEW
Izzy GarufiSpainOnyama Limba NEGOTIATION
Johnson SergiFranceStephen Shaw QUALIFIED
Salvatore StockhamRussiaAsiya Javayant UNQUALIFIED
Jeanfrancois VenereIndiaStephen Shaw NEGOTIATION
Clifford RimBrazilBernardo Dominic NEW
Jeanfrancois VenereRussiaAnna Fali PROPOSAL
Antonio CaudyIndiaElwin Sharvill UNQUALIFIED
Kadeem FlosiBrazilElwin Sharvill UNQUALIFIED
Maria MarrierRussiaBernardo Dominic RENEWAL
Alejandro PerinRussiaElwin Sharvill QUALIFIED
Tony FollerCanadaAmy Elsner PROPOSAL
Frozen Columns
Name
Emily Whobrey
Maria Marrier
Morrow Ruta
Mujtaba Nicka
Silvio Slusarski
Kaitlin Ostrosky
Faith Gillian
Deepesh Chui
Tony Foller
Izzy Garufi
Jefferson Schemmer
Sinclair Waycott
Munro Ferencz
Kadeem Flosi
Aika Inouye
Sinclair Waycott
Jefferson Schemmer
Cody Saylors
Cody Saylors
Tony Foller
Francesco Shinko
Aika Inouye
Leja Caldarera
Smith Glick
Tony Foller
Arvin Albares
Wickens Nestle
Aditya Kusko
Alejandro Perin
Jones Vocelka
Aditya Kusko
Jefferson Schemmer
Smith Glick
Wickens Nestle
Ricardo Gaucho
Leja Caldarera
Jones Vocelka
Ricardo Gaucho
Munro Ferencz
Kaitlin Ostrosky
Cody Saylors
Smith Glick
David Darakjy
Kadeem Flosi
Wickens Nestle
James Butt
David Darakjy
Mayumi Kolmetz
Greenwood Bolognia
Salvatore Stockham
IdCountryDate
1000Spain2026-05-26
1001Italy2026-05-24
1002Brazil2026-05-18
1003India2026-05-20
1004Argentina2026-05-24
1005Spain2026-05-24
1006Japan2026-05-23
1007Argentina2026-05-30
1008Spain2026-05-19
1009Argentina2026-05-06
1010India2026-05-17
1011Japan2026-05-20
1012Brazil2026-06-02
1013Italy2026-05-17
1014France2026-05-24
1015India2026-05-09
1016Italy2026-05-17
1017France2026-05-10
1018Argentina2026-05-26
1019Brazil2026-05-13
1020Italy2026-05-14
1021Brazil2026-05-14
1022Argentina2026-05-22
1023Argentina2026-05-14
1024Italy2026-05-12
1025Italy2026-05-09
1026Russia2026-05-21
1027India2026-05-22
1028Italy2026-05-19
1029France2026-05-07
1030Brazil2026-05-17
1031Australia2026-05-17
1032Italy2026-05-09
1033Germany2026-05-11
1034Spain2026-05-20
1035Germany2026-06-02
1036Australia2026-05-25
1037France2026-05-15
1038Brazil2026-06-01
1039Canada2026-05-25
1040France2026-05-14
1041Australia2026-05-06
1042United Kingdom2026-06-04
1043Spain2026-05-19
1044Spain2026-05-08
1045Spain2026-05-07
1046United Kingdom2026-05-23
1047Brazil2026-05-10
1048Germany2026-05-18
1049France2026-05-31

On-Demand Data

NameIdCountryDate
Cody Saylors1000India2026-05-16
Antonio Caudy1001Argentina2026-06-03
Tony Foller1002Japan2026-05-16
Octavia Malet1003Japan2026-05-20
Murillo Malet1004Argentina2026-05-06
Jefferson Schemmer1005India2026-05-21
Maisha Rulapaugh1006Canada2026-05-31
Misaki Royster1007Argentina2026-05-25
Francesco Shinko1008Spain2026-05-18
Cody Saylors1009Australia2026-05-13
Rodrigues Campain1010Russia2026-05-27
Alejandro Perin1011Brazil2026-05-17
Juan Wieser1012Argentina2026-05-14
Salvatore Stockham1013Argentina2026-05-10
Octavia Malet1014Argentina2026-05-11
Murillo Malet1015Germany2026-05-24
Munro Ferencz1016France2026-05-10
Tony Foller1017Russia2026-05-26
Francesco Shinko1018India2026-05-16
Wickens Nestle1019France2026-05-22
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Kadeem FlosiFranceBernardo Dominic RENEWAL
Greenwood BologniaAustraliaElwin Sharvill NEGOTIATION
Cody SaylorsItalyAnna Fali NEW
Cody SaylorsSpainOnyama Limba NEGOTIATION
Wickens NestleUnited KingdomAnna Fali PROPOSAL
Claire TollnerGermanyAsiya Javayant RENEWAL
Julie StensethArgentinaStephen Shaw UNQUALIFIED
Cody SaylorsRussiaIvan Magalhaes UNQUALIFIED
Arvin AlbaresUnited KingdomAsiya Javayant NEGOTIATION
David DarakjySpainAnna Fali NEGOTIATION
Faith GillianRussiaStephen Shaw QUALIFIED
Francesco ShinkoRussiaBernardo Dominic RENEWAL
Juan WieserArgentinaStephen Shaw PROPOSAL
Smith GlickFranceOnyama Limba QUALIFIED
Juan WieserCanadaBernardo Dominic RENEWAL
Murillo MaletRussiaAnna Fali PROPOSAL
David DarakjyRussiaBernardo Dominic PROPOSAL
Kaitlin OstroskyArgentinaStephen Shaw UNQUALIFIED
Costa DilliardGermanyAsiya Javayant QUALIFIED
Kaitlin OstroskyItalyAsiya Javayant QUALIFIED
Misaki RoysterAustraliaAsiya Javayant UNQUALIFIED
Leja CaldareraCanadaStephen Shaw UNQUALIFIED
Sinclair WaycottRussiaXuxue Feng NEGOTIATION
Alejandro PerinBrazilBernardo Dominic PROPOSAL
Octavia MaletRussiaAsiya Javayant PROPOSAL
Aditya KuskoArgentinaBernardo Dominic QUALIFIED
Costa DilliardBrazilXuxue Feng NEW
Wickens NestleJapanAnna Fali NEW
Murillo MaletItalyElwin Sharvill RENEWAL
Nicolas IturbideIndiaAmy Elsner PROPOSAL
Ricardo GauchoItalyElwin Sharvill RENEWAL
Johnson SergiArgentinaAsiya Javayant NEW
Salvatore StockhamCanadaXuxue Feng QUALIFIED
Misaki RoysterFranceOnyama Limba UNQUALIFIED
Mayumi KolmetzItalyOnyama Limba PROPOSAL
Ivar PaprockiRussiaBernardo Dominic NEGOTIATION
Sinclair WaycottArgentinaXuxue Feng UNQUALIFIED
Arvin AlbaresItalyIvan Magalhaes PROPOSAL
Salvatore StockhamGermanyStephen Shaw QUALIFIED
Smith GlickItalyBernardo Dominic NEW

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