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
Rodrigues CampainJapanIvan Magalhaes QUALIFIED
Maria MarrierArgentinaAsiya Javayant QUALIFIED
Salvatore StockhamGermanyStephen Shaw UNQUALIFIED
James ButtRussiaIoni Bowcher UNQUALIFIED
Nicolas IturbideItalyXuxue Feng RENEWAL
Murillo MaletItalyOnyama Limba NEW
Misaki RoysterGermanyAsiya Javayant NEGOTIATION
Costa DilliardFranceElwin Sharvill NEGOTIATION
Tony FollerFranceIoni Bowcher NEGOTIATION
Jefferson SchemmerItalyXuxue Feng RENEWAL
Emily WhobreyCanadaAsiya Javayant NEW
Johnson SergiSpainAmy Elsner NEGOTIATION
Tony FollerFranceXuxue Feng PROPOSAL
Juan WieserArgentinaBernardo Dominic RENEWAL
Francesco ShinkoRussiaAmy Elsner UNQUALIFIED
Chavez BriddickCanadaAnna Fali PROPOSAL
Salvatore StockhamAustraliaIoni Bowcher NEGOTIATION
Maria MarrierIndiaStephen Shaw NEW
Maria MarrierCanadaAnna Fali QUALIFIED
Mujtaba NickaRussiaXuxue Feng NEW
Mayumi KolmetzRussiaBernardo Dominic UNQUALIFIED
Aditya KuskoSpainAsiya Javayant NEGOTIATION
Izzy GarufiJapanElwin Sharvill PROPOSAL
Aika InouyeAustraliaAnna Fali NEGOTIATION
Deepesh ChuiSpainIvan Magalhaes NEGOTIATION
Aruna FigeroaArgentinaIoni Bowcher UNQUALIFIED
Maria MarrierGermanyAsiya Javayant QUALIFIED
Silvio SlusarskiAustraliaAsiya Javayant NEW
Smith GlickItalyElwin Sharvill PROPOSAL
Kadeem FlosiItalyAmy Elsner UNQUALIFIED
Chavez BriddickAustraliaBernardo Dominic QUALIFIED
Murillo MaletAustraliaOnyama Limba NEGOTIATION
Stacey MacleadAustraliaBernardo Dominic NEGOTIATION
Leja CaldareraIndiaAsiya Javayant NEGOTIATION
Isabel BowleyItalyIvan Magalhaes RENEWAL
Costa DilliardCanadaXuxue Feng UNQUALIFIED
Morrow RutaUnited KingdomIoni Bowcher PROPOSAL
Antonio CaudyAustraliaAsiya Javayant QUALIFIED
Alejandro PerinBrazilAsiya Javayant RENEWAL
Faith GillianSpainAmy Elsner UNQUALIFIED
Murillo MaletFranceAmy Elsner PROPOSAL
Adams MorascaJapanXuxue Feng QUALIFIED
Aruna FigeroaAustraliaAsiya Javayant UNQUALIFIED
Ivar PaprockiCanadaXuxue Feng UNQUALIFIED
Greenwood BologniaItalyAsiya Javayant NEGOTIATION
Tony FollerFranceBernardo Dominic RENEWAL
Chavez BriddickJapanAsiya Javayant RENEWAL
Kaitlin OstroskyIndiaIoni Bowcher NEW
Misaki RoysterItalyBernardo Dominic UNQUALIFIED
Leja CaldareraCanadaAsiya Javayant RENEWAL
Horizontal
NameCountryRepresentativeStatus
James ButtItalyOnyama Limba RENEWAL
Cody SaylorsGermanyAnna Fali UNQUALIFIED
Maisha RulapaughUnited KingdomAnna Fali PROPOSAL
Leon OldroydUnited KingdomOnyama Limba NEGOTIATION
Clifford RimFranceOnyama Limba QUALIFIED
Clifford RimCanadaAnna Fali NEW
Leja CaldareraAustraliaIvan Magalhaes PROPOSAL
Claire TollnerIndiaIvan Magalhaes UNQUALIFIED
Ivar PaprockiItalyAmy Elsner RENEWAL
Ricardo GauchoItalyAmy Elsner NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Sinclair WaycottJapan2026-06-03Rangoni Of Florence RENEWAL19Stephen Shaw
1001Izzy GarufiFrance2026-05-22Truhlar And Truhlar Attys RENEWAL43Asiya Javayant
1002Wickens NestleUnited Kingdom2026-05-29Rousseaux, Michael Esq RENEWAL11Xuxue Feng
1003Salvatore StockhamSpain2026-05-26Rousseaux, Michael Esq PROPOSAL25Elwin Sharvill
1004Francesco ShinkoGermany2026-06-06Commercial Press UNQUALIFIED91Bernardo Dominic
1005Mayumi KolmetzAustralia2026-06-08Rousseaux, Michael Esq NEGOTIATION51Ioni Bowcher
1006Mayumi KolmetzSpain2026-06-13Chanay, Jeffrey A Esq PROPOSAL54Anna Fali
1007Costa DilliardFrance2026-05-27Chemel, James L Cpa UNQUALIFIED94Anna Fali
1008Emily WhobreyJapan2026-05-19Feiner Bros QUALIFIED74Ioni Bowcher
1009Ivar PaprockiCanada2026-06-04Rousseaux, Michael Esq UNQUALIFIED42Ioni Bowcher
1010Morrow RutaGermany2026-05-24Dorl, James J Esq NEW6Asiya Javayant
1011Costa DilliardSpain2026-05-26Chapman, Ross E Esq QUALIFIED41Elwin Sharvill
1012Nicolas IturbideGermany2026-06-02Benton, John B Jr RENEWAL28Asiya Javayant
1013Jones VocelkaSpain2026-05-29Benton, John B Jr PROPOSAL47Onyama Limba
1014Aruna FigeroaRussia2026-06-03Feltz Printing Service QUALIFIED81Xuxue Feng
1015Smith GlickSpain2026-06-02Dorl, James J Esq UNQUALIFIED6Asiya Javayant
1016Isabel BowleyItaly2026-06-02Dorl, James J Esq QUALIFIED45Anna Fali
1017Morrow RutaIndia2026-05-20Benton, John B Jr UNQUALIFIED63Elwin Sharvill
1018Jeanfrancois VenereBrazil2026-06-02Feltz Printing Service UNQUALIFIED10Onyama Limba
1019Silvio SlusarskiItaly2026-06-02Feiner Bros RENEWAL58Ivan Magalhaes
1020Isabel BowleyCanada2026-05-27Buckley Miller Wright QUALIFIED16Anna Fali
1021Claire TollnerJapan2026-06-03Chanay, Jeffrey A Esq PROPOSAL54Asiya Javayant
1022Claire TollnerAustralia2026-06-03King, Christopher A Esq QUALIFIED49Amy Elsner
1023Ashley DoeCanada2026-05-25Feiner Bros RENEWAL90Ivan Magalhaes
1024Claire TollnerItaly2026-06-11Feltz Printing Service UNQUALIFIED47Asiya Javayant
1025Alejandro PerinSpain2026-05-20Rousseaux, Michael Esq RENEWAL61Elwin Sharvill
1026Chavez BriddickBrazil2026-06-06Buckley Miller Wright UNQUALIFIED6Elwin Sharvill
1027Faith GillianAustralia2026-06-07Feltz Printing Service NEW80Stephen Shaw
1028Ricardo GauchoUnited Kingdom2026-05-28Truhlar And Truhlar Attys NEW24Anna Fali
1029Alejandro PerinGermany2026-05-29Feiner Bros QUALIFIED78Bernardo Dominic
1030Greenwood BologniaFrance2026-06-12Chemel, James L Cpa UNQUALIFIED74Asiya Javayant
1031Deepesh ChuiJapan2026-05-22Rousseaux, Michael Esq NEGOTIATION85Amy Elsner
1032Jefferson SchemmerRussia2026-05-29Chanay, Jeffrey A Esq RENEWAL97Onyama Limba
1033Costa DilliardIndia2026-05-15Commercial Press UNQUALIFIED91Anna Fali
1034Stacey MacleadSpain2026-05-28Benton, John B Jr QUALIFIED32Onyama Limba
1035Jeanfrancois VenereRussia2026-05-25Rangoni Of Florence NEGOTIATION36Amy Elsner
1036Deepesh ChuiIndia2026-05-31Morlong Associates PROPOSAL33Ioni Bowcher
1037Maria MarrierJapan2026-05-21Chapman, Ross E Esq NEGOTIATION97Ioni Bowcher
1038Aditya KuskoItaly2026-06-10Rousseaux, Michael Esq UNQUALIFIED44Onyama Limba
1039Wickens NestleFrance2026-06-05Chanay, Jeffrey A Esq RENEWAL96Elwin Sharvill
1040Juan WieserAustralia2026-05-19Benton, John B Jr PROPOSAL33Ivan Magalhaes
1041Juan WieserGermany2026-06-11Benton, John B Jr NEGOTIATION14Amy Elsner
1042Chavez BriddickGermany2026-06-05Rangoni Of Florence QUALIFIED90Ioni Bowcher
1043Greenwood BologniaItaly2026-05-22Feiner Bros QUALIFIED37Amy Elsner
1044Clifford RimSpain2026-05-15Printing Dimensions QUALIFIED82Anna Fali
1045Deepesh ChuiUnited Kingdom2026-06-09Morlong Associates NEW79Elwin Sharvill
1046Aruna FigeroaAustralia2026-05-15Chapman, Ross E Esq RENEWAL18Onyama Limba
1047Johnson SergiSpain2026-06-04King, Christopher A Esq NEGOTIATION14Elwin Sharvill
1048Darci PoquetteSpain2026-05-15King, Christopher A Esq NEW8Anna Fali
1049Misaki RoysterItaly2026-06-08King, Christopher A Esq UNQUALIFIED62Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Ivar PaprockiUnited KingdomAmy Elsner PROPOSAL
Ricardo GauchoRussiaAnna Fali NEW
Rodrigues CampainIndiaOnyama Limba NEGOTIATION
Greenwood BologniaRussiaOnyama Limba QUALIFIED
Wickens NestleUnited KingdomOnyama Limba RENEWAL
Alejandro PerinAustraliaIvan Magalhaes UNQUALIFIED
Kaitlin OstroskyRussiaOnyama Limba QUALIFIED
Mujtaba NickaSpainAmy Elsner PROPOSAL
Francesco ShinkoAustraliaElwin Sharvill PROPOSAL
Isabel BowleyUnited KingdomBernardo Dominic UNQUALIFIED
David DarakjyArgentinaAsiya Javayant NEW
Maisha RulapaughGermanyAnna Fali PROPOSAL
Deepesh ChuiUnited KingdomElwin Sharvill NEGOTIATION
Maria MarrierFranceXuxue Feng RENEWAL
Jefferson SchemmerItalyAsiya Javayant RENEWAL
Kaitlin OstroskyAustraliaOnyama Limba RENEWAL
Maria MarrierFranceElwin Sharvill RENEWAL
Smith GlickArgentinaIoni Bowcher QUALIFIED
Wickens NestleAustraliaAmy Elsner NEGOTIATION
Adams MorascaBrazilStephen Shaw PROPOSAL
Ivar PaprockiSpainElwin Sharvill UNQUALIFIED
Ashley DoeUnited KingdomAnna Fali NEGOTIATION
Isabel BowleyCanadaAnna Fali QUALIFIED
Mujtaba NickaUnited KingdomOnyama Limba QUALIFIED
David DarakjyUnited KingdomIoni Bowcher PROPOSAL
Maisha RulapaughFranceStephen Shaw NEGOTIATION
Jones VocelkaJapanIvan Magalhaes NEW
Nicolas IturbideFranceIoni Bowcher NEGOTIATION
Jones VocelkaSpainIoni Bowcher PROPOSAL
Smith GlickArgentinaStephen Shaw NEW
Juan WieserJapanBernardo Dominic NEW
Julie StensethGermanyOnyama Limba RENEWAL
Jennifer AmigonFranceElwin Sharvill PROPOSAL
Emily WhobreyArgentinaAnna Fali NEW
Juan WieserBrazilElwin Sharvill QUALIFIED
Jones VocelkaRussiaXuxue Feng PROPOSAL
Juan WieserItalyAnna Fali NEW
Alejandro PerinFranceAsiya Javayant NEGOTIATION
Jeanfrancois VenereGermanyElwin Sharvill QUALIFIED
Nicolas IturbideBrazilXuxue Feng NEGOTIATION
Kaitlin OstroskyItalyOnyama Limba NEW
Mujtaba NickaIndiaBernardo Dominic NEW
Darci PoquetteJapanXuxue Feng QUALIFIED
Aditya KuskoFranceAmy Elsner UNQUALIFIED
Ivar PaprockiSpainAmy Elsner PROPOSAL
Costa DilliardGermanyStephen Shaw QUALIFIED
Ricardo GauchoGermanyIoni Bowcher RENEWAL
Greenwood BologniaIndiaAsiya Javayant NEGOTIATION
Ashley DoeUnited KingdomAnna Fali RENEWAL
Aditya KuskoRussiaBernardo Dominic NEGOTIATION
Frozen Columns
Name
Stacey Maclead
Rodrigues Campain
Sinclair Waycott
Juan Wieser
Aika Inouye
Mayumi Kolmetz
Aika Inouye
Adams Morasca
Johnson Sergi
Rodrigues Campain
Leja Caldarera
Maria Marrier
Greenwood Bolognia
Smith Glick
Jones Vocelka
Smith Glick
Emily Whobrey
Rodrigues Campain
Antonio Caudy
Ashley Doe
Salvatore Stockham
Alejandro Perin
Jefferson Schemmer
Jones Vocelka
Stacey Maclead
Jones Vocelka
Jefferson Schemmer
Francesco Shinko
Ricardo Gaucho
Silvio Slusarski
Costa Dilliard
James Butt
Arvin Albares
Julie Stenseth
Aruna Figeroa
Nicolas Iturbide
Murillo Malet
Ricardo Gaucho
Aika Inouye
Jennifer Amigon
Leja Caldarera
Tony Foller
Johnson Sergi
Mayumi Kolmetz
Octavia Malet
Mayumi Kolmetz
Faith Gillian
Juan Wieser
Mujtaba Nicka
Munro Ferencz
IdCountryDate
1000Argentina2026-06-03
1001Russia2026-06-09
1002Argentina2026-05-17
1003United Kingdom2026-06-04
1004Japan2026-06-13
1005Spain2026-06-05
1006France2026-06-08
1007Australia2026-05-18
1008Brazil2026-06-13
1009India2026-06-06
1010Japan2026-06-13
1011Italy2026-05-25
1012Australia2026-05-27
1013United Kingdom2026-06-04
1014France2026-05-25
1015Australia2026-05-16
1016Germany2026-06-07
1017Germany2026-05-17
1018Russia2026-05-17
1019United Kingdom2026-06-06
1020Spain2026-05-26
1021United Kingdom2026-06-13
1022Russia2026-05-30
1023Germany2026-05-24
1024United Kingdom2026-06-07
1025Spain2026-05-28
1026Argentina2026-05-15
1027Canada2026-05-19
1028Germany2026-05-19
1029Germany2026-06-09
1030Canada2026-06-04
1031Australia2026-06-09
1032Spain2026-06-05
1033Canada2026-05-26
1034Brazil2026-06-03
1035Australia2026-05-26
1036Japan2026-06-08
1037Germany2026-06-07
1038India2026-05-28
1039India2026-05-15
1040Brazil2026-05-31
1041Canada2026-05-22
1042Argentina2026-05-27
1043Brazil2026-05-25
1044Brazil2026-06-09
1045Brazil2026-06-09
1046United Kingdom2026-05-28
1047Australia2026-06-12
1048Germany2026-06-03
1049India2026-06-05

On-Demand Data

NameIdCountryDate
Arvin Albares1000Australia2026-06-11
Munro Ferencz1001Japan2026-06-03
Izzy Garufi1002United Kingdom2026-06-11
Alejandro Perin1003Spain2026-06-06
Mujtaba Nicka1004Argentina2026-06-01
Maisha Rulapaugh1005Russia2026-06-10
Maisha Rulapaugh1006Japan2026-06-02
Juan Wieser1007Japan2026-05-26
Stacey Maclead1008France2026-05-22
Izzy Garufi1009Argentina2026-05-20
Sinclair Waycott1010United Kingdom2026-05-22
Stacey Maclead1011Australia2026-05-20
Isabel Bowley1012Russia2026-05-19
Claire Tollner1013Argentina2026-06-09
Ashley Doe1014India2026-06-09
Murillo Malet1015Italy2026-06-01
Stacey Maclead1016Germany2026-06-03
Leon Oldroyd1017Australia2026-05-31
Juan Wieser1018United Kingdom2026-06-10
Ashley Doe1019Australia2026-05-27
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Adams MorascaIndiaIvan Magalhaes PROPOSAL
David DarakjyFranceStephen Shaw PROPOSAL
Tony FollerGermanyAsiya Javayant RENEWAL
Emily WhobreyArgentinaAsiya Javayant PROPOSAL
Wickens NestleItalyAsiya Javayant RENEWAL
James ButtIndiaIvan Magalhaes QUALIFIED
Munro FerenczFranceIoni Bowcher RENEWAL
Antonio CaudyJapanAnna Fali QUALIFIED
Sinclair WaycottJapanIoni Bowcher RENEWAL
Nicolas IturbideIndiaAsiya Javayant NEW
Stacey MacleadItalyOnyama Limba QUALIFIED
Emily WhobreyItalyXuxue Feng NEGOTIATION
Murillo MaletAustraliaAnna Fali NEW
Julie StensethBrazilIvan Magalhaes NEGOTIATION
Ricardo GauchoBrazilElwin Sharvill QUALIFIED
Cody SaylorsArgentinaElwin Sharvill NEW
Kadeem FlosiUnited KingdomIvan Magalhaes UNQUALIFIED
David DarakjyIndiaAsiya Javayant PROPOSAL
Jones VocelkaAustraliaStephen Shaw PROPOSAL
Alejandro PerinSpainAsiya Javayant QUALIFIED
Aika InouyeJapanAnna Fali NEGOTIATION
Sinclair WaycottGermanyAnna Fali QUALIFIED
Juan WieserSpainAsiya Javayant PROPOSAL
David DarakjyGermanyOnyama Limba NEW
Greenwood BologniaJapanStephen Shaw PROPOSAL
Leon OldroydUnited KingdomIoni Bowcher UNQUALIFIED
Maisha RulapaughJapanIoni Bowcher UNQUALIFIED
Mayumi KolmetzSpainIvan Magalhaes NEW
Aditya KuskoArgentinaAsiya Javayant NEGOTIATION
Leja CaldareraBrazilIvan Magalhaes NEGOTIATION
Kadeem FlosiRussiaStephen Shaw UNQUALIFIED
Salvatore StockhamIndiaIoni Bowcher PROPOSAL
Nicolas IturbideArgentinaAmy Elsner NEGOTIATION
Jones VocelkaCanadaXuxue Feng UNQUALIFIED
Johnson SergiCanadaIvan Magalhaes QUALIFIED
Juan WieserJapanElwin Sharvill UNQUALIFIED
Alejandro PerinItalyAmy Elsner NEGOTIATION
Murillo MaletGermanyElwin Sharvill RENEWAL
Izzy GarufiItalyAsiya Javayant QUALIFIED
Costa DilliardItalyOnyama Limba 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>