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
Silvio SlusarskiSpainAsiya Javayant PROPOSAL
Claire TollnerCanadaElwin Sharvill NEW
Smith GlickBrazilAmy Elsner PROPOSAL
Claire TollnerGermanyXuxue Feng NEGOTIATION
Silvio SlusarskiArgentinaStephen Shaw QUALIFIED
Ashley DoeRussiaIoni Bowcher NEW
Izzy GarufiSpainOnyama Limba UNQUALIFIED
Claire TollnerItalyStephen Shaw NEGOTIATION
Wickens NestleFranceAmy Elsner PROPOSAL
Arvin AlbaresArgentinaIoni Bowcher UNQUALIFIED
Rodrigues CampainFranceOnyama Limba QUALIFIED
Maisha RulapaughAustraliaAmy Elsner NEGOTIATION
Johnson SergiFranceIvan Magalhaes NEGOTIATION
Costa DilliardIndiaBernardo Dominic QUALIFIED
Ivar PaprockiUnited KingdomOnyama Limba NEGOTIATION
Alejandro PerinCanadaOnyama Limba PROPOSAL
Ashley DoeUnited KingdomAnna Fali PROPOSAL
Juan WieserAustraliaElwin Sharvill RENEWAL
Greenwood BologniaAustraliaIvan Magalhaes RENEWAL
Mujtaba NickaBrazilIoni Bowcher NEW
Ricardo GauchoArgentinaElwin Sharvill RENEWAL
Mayumi KolmetzCanadaStephen Shaw NEW
Ricardo GauchoJapanBernardo Dominic PROPOSAL
Juan WieserUnited KingdomAmy Elsner UNQUALIFIED
Ashley DoeItalyIoni Bowcher RENEWAL
Johnson SergiArgentinaBernardo Dominic UNQUALIFIED
Munro FerenczBrazilXuxue Feng NEW
Julie StensethCanadaStephen Shaw UNQUALIFIED
Cody SaylorsFranceStephen Shaw QUALIFIED
Antonio CaudyFranceBernardo Dominic QUALIFIED
Jennifer AmigonSpainXuxue Feng RENEWAL
Octavia MaletUnited KingdomAsiya Javayant UNQUALIFIED
Ivar PaprockiSpainXuxue Feng PROPOSAL
Nicolas IturbideIndiaElwin Sharvill PROPOSAL
Kadeem FlosiGermanyBernardo Dominic QUALIFIED
David DarakjyGermanyXuxue Feng QUALIFIED
Mayumi KolmetzFranceOnyama Limba PROPOSAL
Tony FollerItalyStephen Shaw NEW
Silvio SlusarskiUnited KingdomXuxue Feng NEGOTIATION
Darci PoquetteSpainOnyama Limba QUALIFIED
Antonio CaudyJapanOnyama Limba NEW
Wickens NestleGermanyBernardo Dominic RENEWAL
Octavia MaletIndiaStephen Shaw NEW
Clifford RimRussiaAmy Elsner QUALIFIED
Wickens NestleItalyAnna Fali NEW
Misaki RoysterArgentinaAmy Elsner PROPOSAL
Ashley DoeRussiaIvan Magalhaes PROPOSAL
Octavia MaletGermanyBernardo Dominic QUALIFIED
Ashley DoeBrazilElwin Sharvill UNQUALIFIED
David DarakjyArgentinaOnyama Limba QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Aika InouyeBrazilIoni Bowcher UNQUALIFIED
Greenwood BologniaCanadaAmy Elsner PROPOSAL
Jeanfrancois VenereJapanAmy Elsner PROPOSAL
Nicolas IturbideJapanXuxue Feng QUALIFIED
Clifford RimItalyIvan Magalhaes QUALIFIED
Jones VocelkaGermanyOnyama Limba PROPOSAL
Cody SaylorsCanadaIoni Bowcher UNQUALIFIED
Jones VocelkaSpainAsiya Javayant NEW
Mayumi KolmetzSpainOnyama Limba NEGOTIATION
Mujtaba NickaIndiaAnna Fali PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Faith GillianArgentina2025-07-20Morlong Associates RENEWAL32Amy Elsner
1001Murillo MaletRussia2025-08-05Benton, John B Jr PROPOSAL68Onyama Limba
1002James ButtSpain2025-08-13Feltz Printing Service RENEWAL61Ioni Bowcher
1003Wickens NestleBrazil2025-07-21Rangoni Of Florence NEW95Stephen Shaw
1004Faith GillianRussia2025-07-27Morlong Associates NEGOTIATION62Xuxue Feng
1005Francesco ShinkoJapan2025-08-05Printing Dimensions NEGOTIATION57Ivan Magalhaes
1006Mayumi KolmetzUnited Kingdom2025-08-07Printing Dimensions QUALIFIED58Anna Fali
1007James ButtArgentina2025-08-13Dorl, James J Esq QUALIFIED97Xuxue Feng
1008Alejandro PerinCanada2025-07-29Printing Dimensions UNQUALIFIED15Stephen Shaw
1009Kaitlin OstroskyBrazil2025-07-15Morlong Associates PROPOSAL3Stephen Shaw
1010Kadeem FlosiItaly2025-07-22Rousseaux, Michael Esq PROPOSAL83Ivan Magalhaes
1011Smith GlickCanada2025-07-24Feltz Printing Service UNQUALIFIED1Bernardo Dominic
1012Wickens NestleFrance2025-07-24Dorl, James J Esq PROPOSAL18Onyama Limba
1013Antonio CaudyAustralia2025-08-13Rousseaux, Michael Esq UNQUALIFIED80Bernardo Dominic
1014Wickens NestleBrazil2025-08-07Dorl, James J Esq QUALIFIED51Asiya Javayant
1015Juan WieserGermany2025-08-12Morlong Associates RENEWAL10Elwin Sharvill
1016Jones VocelkaSpain2025-07-24Chanay, Jeffrey A Esq RENEWAL41Elwin Sharvill
1017Emily WhobreyBrazil2025-07-22Commercial Press PROPOSAL82Stephen Shaw
1018Francesco ShinkoJapan2025-07-22Benton, John B Jr PROPOSAL33Onyama Limba
1019Juan WieserUnited Kingdom2025-07-15Chanay, Jeffrey A Esq UNQUALIFIED18Bernardo Dominic
1020Clifford RimArgentina2025-07-21Chanay, Jeffrey A Esq NEGOTIATION36Ioni Bowcher
1021Deepesh ChuiAustralia2025-08-11Benton, John B Jr NEW38Xuxue Feng
1022Francesco ShinkoItaly2025-07-26Buckley Miller Wright QUALIFIED82Xuxue Feng
1023Jennifer AmigonCanada2025-08-06Feltz Printing Service UNQUALIFIED11Ivan Magalhaes
1024Costa DilliardBrazil2025-08-08Feiner Bros RENEWAL48Stephen Shaw
1025Jennifer AmigonItaly2025-08-11Rangoni Of Florence RENEWAL64Amy Elsner
1026Jeanfrancois VenereJapan2025-07-23Morlong Associates NEW52Stephen Shaw
1027Izzy GarufiArgentina2025-07-15Chapman, Ross E Esq UNQUALIFIED48Stephen Shaw
1028Silvio SlusarskiGermany2025-08-02Truhlar And Truhlar Attys UNQUALIFIED88Amy Elsner
1029James ButtAustralia2025-08-12Benton, John B Jr NEGOTIATION83Stephen Shaw
1030Emily WhobreyRussia2025-07-30Chapman, Ross E Esq QUALIFIED40Anna Fali
1031Smith GlickIndia2025-08-12Morlong Associates NEW75Xuxue Feng
1032Munro FerenczSpain2025-07-31Chapman, Ross E Esq NEGOTIATION50Amy Elsner
1033Emily WhobreyCanada2025-08-05Chemel, James L Cpa QUALIFIED49Amy Elsner
1034Jefferson SchemmerSpain2025-08-10Commercial Press NEGOTIATION8Amy Elsner
1035Darci PoquetteSpain2025-07-23Printing Dimensions NEGOTIATION67Elwin Sharvill
1036Wickens NestleCanada2025-08-01Chanay, Jeffrey A Esq NEW13Bernardo Dominic
1037Tony FollerRussia2025-07-18Rangoni Of Florence RENEWAL37Elwin Sharvill
1038Costa DilliardAustralia2025-07-19Buckley Miller Wright UNQUALIFIED26Bernardo Dominic
1039Kadeem FlosiArgentina2025-08-06Feiner Bros UNQUALIFIED33Asiya Javayant
1040Mayumi KolmetzJapan2025-07-26Commercial Press PROPOSAL2Ioni Bowcher
1041Claire TollnerCanada2025-07-21Truhlar And Truhlar Attys PROPOSAL11Bernardo Dominic
1042Darci PoquetteSpain2025-08-06Benton, John B Jr NEW10Amy Elsner
1043Antonio CaudyItaly2025-07-26Chapman, Ross E Esq UNQUALIFIED34Stephen Shaw
1044Julie StensethItaly2025-08-06King, Christopher A Esq UNQUALIFIED63Anna Fali
1045Greenwood BologniaFrance2025-08-05Truhlar And Truhlar Attys NEGOTIATION36Onyama Limba
1046Claire TollnerCanada2025-08-05Morlong Associates RENEWAL56Xuxue Feng
1047Kadeem FlosiBrazil2025-08-04Chapman, Ross E Esq RENEWAL13Ivan Magalhaes
1048Ricardo GauchoAustralia2025-07-24Feltz Printing Service NEGOTIATION82Asiya Javayant
1049Leja CaldareraBrazil2025-08-08Truhlar And Truhlar Attys QUALIFIED99Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Francesco ShinkoCanadaXuxue Feng RENEWAL
Cody SaylorsItalyOnyama Limba UNQUALIFIED
Isabel BowleyUnited KingdomIoni Bowcher NEGOTIATION
Johnson SergiUnited KingdomIvan Magalhaes UNQUALIFIED
Ashley DoeArgentinaElwin Sharvill PROPOSAL
Clifford RimSpainElwin Sharvill PROPOSAL
Darci PoquetteIndiaOnyama Limba QUALIFIED
Salvatore StockhamIndiaAmy Elsner PROPOSAL
Wickens NestleRussiaAnna Fali RENEWAL
Cody SaylorsArgentinaBernardo Dominic PROPOSAL
Kadeem FlosiBrazilElwin Sharvill PROPOSAL
Chavez BriddickIndiaAnna Fali NEGOTIATION
Costa DilliardCanadaElwin Sharvill QUALIFIED
Kaitlin OstroskyJapanAnna Fali UNQUALIFIED
Ashley DoeRussiaXuxue Feng UNQUALIFIED
Kaitlin OstroskyFranceOnyama Limba NEW
Faith GillianJapanAmy Elsner NEW
Aika InouyeBrazilXuxue Feng NEGOTIATION
Ashley DoeItalyAsiya Javayant UNQUALIFIED
Deepesh ChuiFranceElwin Sharvill UNQUALIFIED
Mujtaba NickaFranceAsiya Javayant PROPOSAL
Stacey MacleadSpainXuxue Feng QUALIFIED
Nicolas IturbideAustraliaIvan Magalhaes UNQUALIFIED
Salvatore StockhamCanadaElwin Sharvill UNQUALIFIED
Sinclair WaycottJapanIoni Bowcher PROPOSAL
Ricardo GauchoIndiaOnyama Limba NEW
Jefferson SchemmerJapanOnyama Limba NEW
Jeanfrancois VenereCanadaStephen Shaw RENEWAL
Alejandro PerinGermanyOnyama Limba UNQUALIFIED
Smith GlickBrazilIvan Magalhaes UNQUALIFIED
Chavez BriddickIndiaIvan Magalhaes QUALIFIED
Stacey MacleadItalyAnna Fali PROPOSAL
Kadeem FlosiIndiaAnna Fali PROPOSAL
Tony FollerRussiaXuxue Feng RENEWAL
Mujtaba NickaSpainIoni Bowcher UNQUALIFIED
Francesco ShinkoUnited KingdomBernardo Dominic RENEWAL
Stacey MacleadAustraliaStephen Shaw PROPOSAL
Morrow RutaRussiaAnna Fali NEGOTIATION
Ivar PaprockiGermanyAsiya Javayant NEGOTIATION
Aika InouyeCanadaAnna Fali RENEWAL
Salvatore StockhamCanadaStephen Shaw NEGOTIATION
Leja CaldareraRussiaBernardo Dominic NEGOTIATION
Francesco ShinkoAustraliaAnna Fali QUALIFIED
Juan WieserJapanAmy Elsner NEGOTIATION
Mayumi KolmetzGermanyStephen Shaw RENEWAL
Clifford RimGermanyIoni Bowcher NEW
Maisha RulapaughCanadaBernardo Dominic NEW
Julie StensethSpainXuxue Feng NEW
Deepesh ChuiArgentinaIvan Magalhaes NEW
Ricardo GauchoBrazilAmy Elsner QUALIFIED
Frozen Columns
Name
Antonio Caudy
Murillo Malet
Costa Dilliard
Jeanfrancois Venere
Claire Tollner
Jones Vocelka
Jennifer Amigon
Salvatore Stockham
Kadeem Flosi
Ivar Paprocki
Ashley Doe
Salvatore Stockham
Rodrigues Campain
Morrow Ruta
Aditya Kusko
David Darakjy
Ricardo Gaucho
Wickens Nestle
Mayumi Kolmetz
Costa Dilliard
Salvatore Stockham
Mujtaba Nicka
Isabel Bowley
Antonio Caudy
Aruna Figeroa
Ashley Doe
Clifford Rim
Antonio Caudy
Mayumi Kolmetz
Julie Stenseth
Smith Glick
Rodrigues Campain
Sinclair Waycott
Aditya Kusko
Emily Whobrey
Isabel Bowley
Clifford Rim
Ivar Paprocki
Salvatore Stockham
Octavia Malet
Faith Gillian
James Butt
Jones Vocelka
Johnson Sergi
Stacey Maclead
Arvin Albares
Rodrigues Campain
Silvio Slusarski
Stacey Maclead
Misaki Royster
IdCountryDate
1000Australia2025-08-04
1001United Kingdom2025-08-04
1002Germany2025-07-26
1003United Kingdom2025-07-26
1004Spain2025-08-13
1005India2025-08-07
1006Japan2025-07-27
1007Brazil2025-08-12
1008Italy2025-08-11
1009Spain2025-08-01
1010Germany2025-08-07
1011Germany2025-08-04
1012Germany2025-08-09
1013Germany2025-08-08
1014Argentina2025-08-08
1015Russia2025-07-21
1016Argentina2025-08-08
1017United Kingdom2025-08-13
1018Italy2025-07-28
1019Japan2025-08-10
1020Russia2025-07-23
1021Japan2025-08-04
1022Germany2025-08-01
1023United Kingdom2025-08-05
1024Russia2025-08-10
1025India2025-07-24
1026Japan2025-07-28
1027Spain2025-08-01
1028Australia2025-07-18
1029Italy2025-07-19
1030Italy2025-07-29
1031Japan2025-07-15
1032Spain2025-08-07
1033Brazil2025-07-30
1034Japan2025-07-24
1035Spain2025-08-02
1036United Kingdom2025-07-16
1037France2025-08-01
1038Spain2025-07-26
1039Spain2025-08-07
1040Japan2025-07-17
1041Italy2025-07-18
1042Japan2025-07-22
1043Italy2025-07-27
1044Japan2025-07-24
1045India2025-07-30
1046Australia2025-07-20
1047Canada2025-08-06
1048Brazil2025-08-07
1049Argentina2025-08-11

On-Demand Data

NameIdCountryDate
Jeanfrancois Venere1000India2025-08-05
Sinclair Waycott1001United Kingdom2025-07-24
Ashley Doe1002India2025-08-02
Stacey Maclead1003Canada2025-07-23
Maisha Rulapaugh1004Germany2025-07-28
Arvin Albares1005Argentina2025-07-26
Arvin Albares1006Australia2025-08-07
Cody Saylors1007India2025-07-17
Ashley Doe1008Spain2025-07-27
Misaki Royster1009Russia2025-07-17
David Darakjy1010India2025-07-29
Emily Whobrey1011Australia2025-07-30
Claire Tollner1012Argentina2025-08-13
Tony Foller1013Canada2025-08-02
Aika Inouye1014Germany2025-08-12
Maria Marrier1015France2025-07-21
Costa Dilliard1016Brazil2025-07-17
Nicolas Iturbide1017United Kingdom2025-07-21
Jennifer Amigon1018Canada2025-08-10
Faith Gillian1019United Kingdom2025-07-17
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Salvatore StockhamCanadaXuxue Feng NEGOTIATION
James ButtJapanOnyama Limba NEW
Misaki RoysterUnited KingdomXuxue Feng UNQUALIFIED
Smith GlickIndiaElwin Sharvill UNQUALIFIED
Juan WieserJapanAsiya Javayant NEW
Alejandro PerinGermanyIvan Magalhaes RENEWAL
Clifford RimIndiaOnyama Limba PROPOSAL
Isabel BowleyJapanStephen Shaw PROPOSAL
Maisha RulapaughRussiaXuxue Feng NEGOTIATION
Sinclair WaycottIndiaBernardo Dominic UNQUALIFIED
Jefferson SchemmerFranceOnyama Limba NEGOTIATION
Alejandro PerinIndiaIoni Bowcher NEW
Silvio SlusarskiUnited KingdomAnna Fali NEW
Leon OldroydAustraliaAsiya Javayant RENEWAL
Johnson SergiIndiaStephen Shaw RENEWAL
Izzy GarufiGermanyIoni Bowcher QUALIFIED
Leon OldroydBrazilAmy Elsner RENEWAL
Leon OldroydSpainOnyama Limba RENEWAL
Ivar PaprockiFranceElwin Sharvill NEW
Kadeem FlosiItalyIvan Magalhaes NEW
Wickens NestleCanadaAsiya Javayant UNQUALIFIED
Arvin AlbaresArgentinaAmy Elsner UNQUALIFIED
Mayumi KolmetzSpainElwin Sharvill RENEWAL
Jefferson SchemmerGermanyElwin Sharvill QUALIFIED
Morrow RutaItalyOnyama Limba RENEWAL
Aditya KuskoArgentinaElwin Sharvill RENEWAL
James ButtAustraliaStephen Shaw QUALIFIED
Aika InouyeArgentinaElwin Sharvill NEGOTIATION
Jennifer AmigonRussiaOnyama Limba NEGOTIATION
Salvatore StockhamArgentinaAnna Fali UNQUALIFIED
Ricardo GauchoRussiaElwin Sharvill UNQUALIFIED
Costa DilliardRussiaIoni Bowcher UNQUALIFIED
Rodrigues CampainCanadaAsiya Javayant UNQUALIFIED
Murillo MaletUnited KingdomBernardo Dominic PROPOSAL
Juan WieserIndiaIoni Bowcher RENEWAL
Ivar PaprockiSpainIoni Bowcher PROPOSAL
Aruna FigeroaAustraliaXuxue Feng UNQUALIFIED
Ashley DoeIndiaAmy Elsner NEGOTIATION
Adams MorascaAustraliaElwin Sharvill UNQUALIFIED
Jennifer AmigonRussiaOnyama Limba 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>