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
Chavez BriddickUnited KingdomBernardo Dominic NEGOTIATION
Leon OldroydGermanyIoni Bowcher UNQUALIFIED
James ButtCanadaAnna Fali NEW
Kadeem FlosiJapanXuxue Feng RENEWAL
Ivar PaprockiArgentinaXuxue Feng PROPOSAL
Emily WhobreyItalyOnyama Limba PROPOSAL
Arvin AlbaresCanadaAmy Elsner NEW
Jennifer AmigonGermanyStephen Shaw RENEWAL
Alejandro PerinUnited KingdomIvan Magalhaes RENEWAL
Leja CaldareraFranceIvan Magalhaes RENEWAL
Rodrigues CampainIndiaIvan Magalhaes RENEWAL
Clifford RimGermanyIoni Bowcher QUALIFIED
Morrow RutaIndiaAsiya Javayant PROPOSAL
Aditya KuskoAustraliaOnyama Limba UNQUALIFIED
Mujtaba NickaGermanyIvan Magalhaes UNQUALIFIED
Clifford RimSpainOnyama Limba RENEWAL
Leja CaldareraIndiaAmy Elsner UNQUALIFIED
Clifford RimIndiaIvan Magalhaes QUALIFIED
Octavia MaletCanadaIvan Magalhaes PROPOSAL
Silvio SlusarskiAustraliaIvan Magalhaes QUALIFIED
Smith GlickItalyAnna Fali UNQUALIFIED
James ButtJapanXuxue Feng QUALIFIED
Morrow RutaBrazilIoni Bowcher UNQUALIFIED
Mujtaba NickaSpainElwin Sharvill NEW
Costa DilliardArgentinaXuxue Feng NEGOTIATION
Kadeem FlosiUnited KingdomStephen Shaw NEW
Smith GlickUnited KingdomStephen Shaw PROPOSAL
James ButtUnited KingdomIvan Magalhaes NEW
Faith GillianIndiaXuxue Feng PROPOSAL
Misaki RoysterIndiaXuxue Feng NEGOTIATION
Mayumi KolmetzItalyStephen Shaw UNQUALIFIED
Chavez BriddickFranceAmy Elsner UNQUALIFIED
Clifford RimGermanyXuxue Feng NEW
Munro FerenczFranceOnyama Limba PROPOSAL
Costa DilliardIndiaOnyama Limba QUALIFIED
Chavez BriddickAustraliaBernardo Dominic RENEWAL
Deepesh ChuiUnited KingdomAsiya Javayant QUALIFIED
Smith GlickGermanyOnyama Limba PROPOSAL
Juan WieserArgentinaOnyama Limba NEW
Morrow RutaCanadaAsiya Javayant PROPOSAL
Kadeem FlosiRussiaStephen Shaw PROPOSAL
Aditya KuskoAustraliaIoni Bowcher RENEWAL
Julie StensethBrazilAnna Fali QUALIFIED
Aika InouyeUnited KingdomBernardo Dominic PROPOSAL
Kadeem FlosiItalyIvan Magalhaes UNQUALIFIED
Aika InouyeItalyBernardo Dominic NEGOTIATION
Julie StensethGermanyElwin Sharvill QUALIFIED
Francesco ShinkoUnited KingdomAnna Fali RENEWAL
Rodrigues CampainBrazilStephen Shaw NEW
Octavia MaletJapanOnyama Limba UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Arvin AlbaresBrazilIvan Magalhaes PROPOSAL
Salvatore StockhamItalyIvan Magalhaes UNQUALIFIED
Morrow RutaGermanyBernardo Dominic QUALIFIED
Kaitlin OstroskyUnited KingdomAmy Elsner NEGOTIATION
Morrow RutaGermanyIoni Bowcher NEGOTIATION
Salvatore StockhamArgentinaAsiya Javayant QUALIFIED
Misaki RoysterArgentinaStephen Shaw RENEWAL
Jennifer AmigonBrazilAmy Elsner UNQUALIFIED
Costa DilliardArgentinaStephen Shaw PROPOSAL
Deepesh ChuiSpainAnna Fali QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Isabel BowleyUnited Kingdom2026-04-25Morlong Associates NEW39Asiya Javayant
1001Kaitlin OstroskyBrazil2026-04-23Benton, John B Jr RENEWAL41Ivan Magalhaes
1002Octavia MaletArgentina2026-04-10Rangoni Of Florence PROPOSAL63Amy Elsner
1003Silvio SlusarskiBrazil2026-04-04Chemel, James L Cpa QUALIFIED57Amy Elsner
1004Jones VocelkaJapan2026-04-05Morlong Associates UNQUALIFIED45Anna Fali
1005Maisha RulapaughUnited Kingdom2026-04-26Commercial Press NEGOTIATION53Bernardo Dominic
1006Kadeem FlosiSpain2026-04-06Truhlar And Truhlar Attys QUALIFIED73Ivan Magalhaes
1007James ButtJapan2026-04-04Printing Dimensions NEGOTIATION21Amy Elsner
1008Kaitlin OstroskyRussia2026-04-18Chemel, James L Cpa UNQUALIFIED23Ivan Magalhaes
1009Aditya KuskoUnited Kingdom2026-04-30Chapman, Ross E Esq RENEWAL94Elwin Sharvill
1010Aditya KuskoGermany2026-04-14Chapman, Ross E Esq NEW70Asiya Javayant
1011James ButtAustralia2026-04-10Buckley Miller Wright QUALIFIED41Onyama Limba
1012Murillo MaletFrance2026-04-26Rousseaux, Michael Esq NEW63Xuxue Feng
1013Jeanfrancois VenereBrazil2026-04-20Printing Dimensions NEW12Elwin Sharvill
1014Arvin AlbaresUnited Kingdom2026-04-21Commercial Press NEW70Anna Fali
1015Salvatore StockhamGermany2026-04-04Chanay, Jeffrey A Esq NEW33Ivan Magalhaes
1016Francesco ShinkoIndia2026-04-19Rangoni Of Florence PROPOSAL48Onyama Limba
1017Isabel BowleyRussia2026-04-08Dorl, James J Esq PROPOSAL31Onyama Limba
1018Octavia MaletFrance2026-04-14Dorl, James J Esq QUALIFIED40Anna Fali
1019Smith GlickArgentina2026-04-16Commercial Press NEGOTIATION53Asiya Javayant
1020Misaki RoysterArgentina2026-04-06Printing Dimensions QUALIFIED29Stephen Shaw
1021Francesco ShinkoItaly2026-04-06Feiner Bros NEGOTIATION14Asiya Javayant
1022Kadeem FlosiAustralia2026-04-09Commercial Press NEW38Ioni Bowcher
1023Antonio CaudyJapan2026-04-24Feiner Bros QUALIFIED83Elwin Sharvill
1024Nicolas IturbideItaly2026-04-09Printing Dimensions NEGOTIATION79Anna Fali
1025Greenwood BologniaFrance2026-04-28Truhlar And Truhlar Attys UNQUALIFIED54Asiya Javayant
1026Sinclair WaycottGermany2026-04-11Morlong Associates PROPOSAL88Elwin Sharvill
1027Rodrigues CampainJapan2026-04-15Rousseaux, Michael Esq RENEWAL51Bernardo Dominic
1028Rodrigues CampainArgentina2026-04-12Rousseaux, Michael Esq NEGOTIATION30Onyama Limba
1029Ivar PaprockiArgentina2026-04-23King, Christopher A Esq UNQUALIFIED23Ioni Bowcher
1030Ricardo GauchoIndia2026-04-27Chanay, Jeffrey A Esq NEW97Onyama Limba
1031Costa DilliardUnited Kingdom2026-04-09Feltz Printing Service NEGOTIATION39Anna Fali
1032Misaki RoysterBrazil2026-04-05Printing Dimensions UNQUALIFIED93Stephen Shaw
1033Leja CaldareraRussia2026-04-08Commercial Press RENEWAL82Ioni Bowcher
1034Chavez BriddickJapan2026-04-08Feiner Bros NEGOTIATION8Xuxue Feng
1035Aika InouyeUnited Kingdom2026-04-28Feiner Bros PROPOSAL5Elwin Sharvill
1036Octavia MaletIndia2026-04-19Dorl, James J Esq PROPOSAL42Xuxue Feng
1037Julie StensethSpain2026-04-11Feltz Printing Service RENEWAL93Elwin Sharvill
1038Costa DilliardRussia2026-04-28Commercial Press NEGOTIATION93Stephen Shaw
1039Jeanfrancois VenereAustralia2026-04-23Rangoni Of Florence QUALIFIED39Anna Fali
1040Leja CaldareraFrance2026-04-28Dorl, James J Esq UNQUALIFIED61Xuxue Feng
1041Ashley DoeCanada2026-04-20Benton, John B Jr PROPOSAL7Anna Fali
1042Aditya KuskoUnited Kingdom2026-04-20Feiner Bros RENEWAL21Stephen Shaw
1043Tony FollerItaly2026-04-16King, Christopher A Esq QUALIFIED16Asiya Javayant
1044Maria MarrierAustralia2026-04-29Feiner Bros UNQUALIFIED39Ivan Magalhaes
1045Cody SaylorsJapan2026-04-12Feltz Printing Service QUALIFIED8Amy Elsner
1046Kadeem FlosiSpain2026-04-09Chemel, James L Cpa QUALIFIED18Asiya Javayant
1047Maria MarrierGermany2026-04-24Dorl, James J Esq NEW50Asiya Javayant
1048Nicolas IturbideGermany2026-04-20Buckley Miller Wright QUALIFIED11Asiya Javayant
1049Adams MorascaItaly2026-04-02King, Christopher A Esq PROPOSAL93Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
David DarakjyGermanyXuxue Feng PROPOSAL
Darci PoquetteSpainAmy Elsner UNQUALIFIED
Tony FollerSpainStephen Shaw NEW
Kaitlin OstroskyBrazilAmy Elsner QUALIFIED
Clifford RimItalyStephen Shaw NEW
Costa DilliardRussiaAsiya Javayant RENEWAL
Emily WhobreyFranceAsiya Javayant PROPOSAL
Johnson SergiCanadaIvan Magalhaes PROPOSAL
Costa DilliardArgentinaStephen Shaw NEGOTIATION
Mujtaba NickaItalyOnyama Limba UNQUALIFIED
Adams MorascaFranceIvan Magalhaes UNQUALIFIED
Jefferson SchemmerFranceAsiya Javayant QUALIFIED
Isabel BowleyRussiaElwin Sharvill UNQUALIFIED
Cody SaylorsAustraliaOnyama Limba RENEWAL
Darci PoquetteBrazilAmy Elsner PROPOSAL
Rodrigues CampainJapanXuxue Feng PROPOSAL
Arvin AlbaresRussiaAsiya Javayant PROPOSAL
Cody SaylorsRussiaXuxue Feng UNQUALIFIED
Juan WieserAustraliaStephen Shaw NEGOTIATION
Jeanfrancois VenereItalyIvan Magalhaes RENEWAL
Adams MorascaRussiaAmy Elsner RENEWAL
Kadeem FlosiCanadaIvan Magalhaes NEW
Jeanfrancois VenereBrazilIvan Magalhaes NEGOTIATION
Aruna FigeroaItalyBernardo Dominic UNQUALIFIED
Costa DilliardItalyAnna Fali NEGOTIATION
Ashley DoeGermanyAnna Fali PROPOSAL
Jennifer AmigonItalyStephen Shaw UNQUALIFIED
Smith GlickItalyAsiya Javayant PROPOSAL
Darci PoquetteBrazilAmy Elsner RENEWAL
Clifford RimCanadaElwin Sharvill RENEWAL
Faith GillianBrazilAsiya Javayant UNQUALIFIED
Aditya KuskoGermanyOnyama Limba RENEWAL
Nicolas IturbideRussiaOnyama Limba RENEWAL
Misaki RoysterJapanBernardo Dominic NEW
Julie StensethCanadaStephen Shaw QUALIFIED
Emily WhobreyArgentinaAsiya Javayant NEW
Deepesh ChuiIndiaBernardo Dominic NEW
Cody SaylorsUnited KingdomOnyama Limba UNQUALIFIED
Leon OldroydIndiaBernardo Dominic PROPOSAL
Faith GillianJapanAmy Elsner UNQUALIFIED
Emily WhobreyFranceAmy Elsner PROPOSAL
Greenwood BologniaArgentinaXuxue Feng PROPOSAL
Claire TollnerIndiaStephen Shaw RENEWAL
Maria MarrierJapanAsiya Javayant QUALIFIED
Aruna FigeroaSpainStephen Shaw UNQUALIFIED
Izzy GarufiUnited KingdomAnna Fali RENEWAL
Ivar PaprockiBrazilAmy Elsner RENEWAL
Rodrigues CampainUnited KingdomIoni Bowcher RENEWAL
Aditya KuskoAustraliaElwin Sharvill NEW
Wickens NestleSpainOnyama Limba NEGOTIATION
Frozen Columns
Name
Juan Wieser
Emily Whobrey
Francesco Shinko
Clifford Rim
Sinclair Waycott
Adams Morasca
Mujtaba Nicka
Salvatore Stockham
Clifford Rim
Leon Oldroyd
Sinclair Waycott
Mayumi Kolmetz
Aika Inouye
Jones Vocelka
Ivar Paprocki
David Darakjy
Arvin Albares
Jeanfrancois Venere
Maisha Rulapaugh
Deepesh Chui
Leon Oldroyd
Mujtaba Nicka
Octavia Malet
Wickens Nestle
Jones Vocelka
Juan Wieser
Kadeem Flosi
Costa Dilliard
Faith Gillian
Mujtaba Nicka
Aruna Figeroa
Jennifer Amigon
Jones Vocelka
Wickens Nestle
Johnson Sergi
Jennifer Amigon
Jennifer Amigon
Smith Glick
Alejandro Perin
Smith Glick
Izzy Garufi
Nicolas Iturbide
Julie Stenseth
Nicolas Iturbide
Izzy Garufi
Ivar Paprocki
Aditya Kusko
Octavia Malet
Isabel Bowley
Juan Wieser
IdCountryDate
1000France2026-04-21
1001Italy2026-04-17
1002Australia2026-04-16
1003Australia2026-04-19
1004India2026-04-24
1005Germany2026-04-29
1006France2026-04-07
1007Germany2026-04-29
1008Russia2026-04-28
1009Argentina2026-04-12
1010United Kingdom2026-04-26
1011Germany2026-04-03
1012Spain2026-04-28
1013Spain2026-04-13
1014United Kingdom2026-04-16
1015Italy2026-04-22
1016Australia2026-04-04
1017Canada2026-04-02
1018Germany2026-04-18
1019Germany2026-04-06
1020Russia2026-04-17
1021Germany2026-04-30
1022Brazil2026-04-12
1023Australia2026-04-15
1024France2026-04-24
1025Russia2026-04-12
1026Canada2026-04-04
1027France2026-04-23
1028India2026-04-17
1029Italy2026-04-27
1030Argentina2026-04-16
1031Japan2026-04-17
1032Germany2026-04-14
1033United Kingdom2026-04-18
1034Japan2026-04-24
1035Russia2026-05-01
1036Italy2026-04-10
1037Russia2026-04-17
1038India2026-04-04
1039Germany2026-04-29
1040Japan2026-04-20
1041Germany2026-04-30
1042Brazil2026-04-21
1043Canada2026-04-12
1044Australia2026-04-12
1045Canada2026-04-02
1046Japan2026-04-19
1047United Kingdom2026-04-11
1048India2026-04-03
1049Spain2026-04-17

On-Demand Data

NameIdCountryDate
Aruna Figeroa1000Germany2026-04-06
Stacey Maclead1001India2026-04-27
Ivar Paprocki1002France2026-04-10
Maisha Rulapaugh1003Italy2026-04-23
Izzy Garufi1004Russia2026-04-28
Smith Glick1005Argentina2026-04-20
Costa Dilliard1006Russia2026-04-27
Leja Caldarera1007Germany2026-04-05
Misaki Royster1008Russia2026-04-02
Darci Poquette1009Spain2026-04-05
Darci Poquette1010Argentina2026-04-26
Sinclair Waycott1011Italy2026-04-06
Wickens Nestle1012Australia2026-04-23
Kadeem Flosi1013Australia2026-05-01
Octavia Malet1014France2026-04-20
Juan Wieser1015Brazil2026-04-14
Leja Caldarera1016Argentina2026-04-03
Deepesh Chui1017Brazil2026-04-23
Mujtaba Nicka1018Russia2026-04-08
Emily Whobrey1019India2026-04-14
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jefferson SchemmerArgentinaIoni Bowcher RENEWAL
Leja CaldareraIndiaAsiya Javayant RENEWAL
Tony FollerUnited KingdomElwin Sharvill QUALIFIED
Mujtaba NickaIndiaOnyama Limba PROPOSAL
Emily WhobreyFranceIoni Bowcher NEGOTIATION
Murillo MaletBrazilStephen Shaw QUALIFIED
Greenwood BologniaItalyAnna Fali PROPOSAL
Maisha RulapaughJapanElwin Sharvill UNQUALIFIED
Misaki RoysterItalyAsiya Javayant NEGOTIATION
Julie StensethAustraliaElwin Sharvill RENEWAL
Mujtaba NickaJapanAmy Elsner NEGOTIATION
Antonio CaudyGermanyBernardo Dominic NEGOTIATION
Ricardo GauchoArgentinaAsiya Javayant UNQUALIFIED
Aruna FigeroaCanadaIoni Bowcher PROPOSAL
Salvatore StockhamJapanAnna Fali RENEWAL
Silvio SlusarskiIndiaAsiya Javayant PROPOSAL
Deepesh ChuiFranceBernardo Dominic NEW
Stacey MacleadIndiaIoni Bowcher UNQUALIFIED
Maisha RulapaughJapanAmy Elsner UNQUALIFIED
Maisha RulapaughJapanXuxue Feng NEGOTIATION
Murillo MaletItalyStephen Shaw QUALIFIED
Silvio SlusarskiSpainAsiya Javayant QUALIFIED
Johnson SergiIndiaBernardo Dominic QUALIFIED
Aruna FigeroaBrazilXuxue Feng NEGOTIATION
Alejandro PerinRussiaXuxue Feng PROPOSAL
Jeanfrancois VenereIndiaAsiya Javayant NEGOTIATION
Stacey MacleadAustraliaBernardo Dominic PROPOSAL
Maisha RulapaughAustraliaIoni Bowcher UNQUALIFIED
Izzy GarufiJapanBernardo Dominic RENEWAL
Kaitlin OstroskyRussiaIoni Bowcher RENEWAL
Mayumi KolmetzBrazilAmy Elsner PROPOSAL
Octavia MaletJapanAmy Elsner NEW
Munro FerenczUnited KingdomOnyama Limba NEGOTIATION
Darci PoquetteCanadaAsiya Javayant NEGOTIATION
Mayumi KolmetzUnited KingdomAnna Fali NEGOTIATION
Jones VocelkaUnited KingdomAnna Fali UNQUALIFIED
Silvio SlusarskiIndiaElwin Sharvill RENEWAL
Greenwood BologniaItalyIvan Magalhaes RENEWAL
Aditya KuskoUnited KingdomStephen Shaw UNQUALIFIED
Clifford RimBrazilXuxue Feng PROPOSAL

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