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 RulapaughArgentinaStephen Shaw NEW
Juan WieserIndiaIvan Magalhaes NEW
Maria MarrierRussiaIoni Bowcher NEW
Aruna FigeroaItalyIoni Bowcher UNQUALIFIED
Mayumi KolmetzUnited KingdomBernardo Dominic NEGOTIATION
Smith GlickFranceIvan Magalhaes PROPOSAL
Jeanfrancois VenereRussiaIvan Magalhaes NEGOTIATION
Rodrigues CampainAustraliaStephen Shaw NEGOTIATION
Aditya KuskoIndiaBernardo Dominic QUALIFIED
Juan WieserSpainIoni Bowcher NEW
Ricardo GauchoSpainElwin Sharvill NEGOTIATION
Salvatore StockhamSpainAsiya Javayant NEGOTIATION
Silvio SlusarskiAustraliaStephen Shaw UNQUALIFIED
Jefferson SchemmerIndiaStephen Shaw RENEWAL
Johnson SergiJapanAsiya Javayant NEGOTIATION
Alejandro PerinArgentinaIvan Magalhaes QUALIFIED
Leja CaldareraBrazilElwin Sharvill RENEWAL
Maisha RulapaughFranceStephen Shaw RENEWAL
Rodrigues CampainUnited KingdomAnna Fali QUALIFIED
Chavez BriddickSpainStephen Shaw UNQUALIFIED
Costa DilliardSpainStephen Shaw QUALIFIED
Jones VocelkaAustraliaXuxue Feng UNQUALIFIED
Maria MarrierArgentinaBernardo Dominic RENEWAL
Ricardo GauchoUnited KingdomAnna Fali NEW
Cody SaylorsGermanyAmy Elsner NEGOTIATION
Aruna FigeroaRussiaElwin Sharvill QUALIFIED
Aruna FigeroaAustraliaXuxue Feng NEW
Jeanfrancois VenereIndiaAnna Fali PROPOSAL
Antonio CaudySpainXuxue Feng UNQUALIFIED
Wickens NestleBrazilOnyama Limba QUALIFIED
Misaki RoysterUnited KingdomAnna Fali PROPOSAL
Alejandro PerinUnited KingdomAmy Elsner UNQUALIFIED
Jeanfrancois VenereCanadaStephen Shaw QUALIFIED
Emily WhobreySpainAmy Elsner NEGOTIATION
Rodrigues CampainIndiaAsiya Javayant NEGOTIATION
Ivar PaprockiItalyAnna Fali NEW
Faith GillianCanadaElwin Sharvill UNQUALIFIED
Jones VocelkaFranceElwin Sharvill QUALIFIED
Arvin AlbaresSpainIvan Magalhaes QUALIFIED
Francesco ShinkoIndiaAmy Elsner PROPOSAL
Smith GlickCanadaAnna Fali UNQUALIFIED
Jefferson SchemmerAustraliaAsiya Javayant QUALIFIED
Leon OldroydArgentinaStephen Shaw QUALIFIED
Misaki RoysterAustraliaAsiya Javayant NEGOTIATION
Kaitlin OstroskyCanadaStephen Shaw NEW
Aika InouyeBrazilIoni Bowcher QUALIFIED
Costa DilliardBrazilElwin Sharvill PROPOSAL
Kaitlin OstroskyArgentinaAsiya Javayant NEW
Silvio SlusarskiCanadaXuxue Feng UNQUALIFIED
Tony FollerSpainAnna Fali NEW
Horizontal
NameCountryRepresentativeStatus
Maisha RulapaughItalyIvan Magalhaes NEW
Octavia MaletCanadaBernardo Dominic NEGOTIATION
Claire TollnerIndiaIoni Bowcher UNQUALIFIED
Aika InouyeCanadaAnna Fali QUALIFIED
Arvin AlbaresBrazilOnyama Limba PROPOSAL
Leja CaldareraFranceIoni Bowcher PROPOSAL
Deepesh ChuiJapanIoni Bowcher QUALIFIED
Wickens NestleSpainAsiya Javayant RENEWAL
Juan WieserArgentinaXuxue Feng UNQUALIFIED
Cody SaylorsUnited KingdomAsiya Javayant RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Francesco ShinkoIndia2026-06-09Rousseaux, Michael Esq NEGOTIATION65Bernardo Dominic
1001Jones VocelkaAustralia2026-06-22Dorl, James J Esq PROPOSAL56Elwin Sharvill
1002Izzy GarufiUnited Kingdom2026-06-04Printing Dimensions NEGOTIATION20Anna Fali
1003Octavia MaletRussia2026-06-07Morlong Associates UNQUALIFIED37Bernardo Dominic
1004Mujtaba NickaArgentina2026-05-26Chanay, Jeffrey A Esq PROPOSAL22Onyama Limba
1005Arvin AlbaresSpain2026-06-12Feltz Printing Service NEW63Ivan Magalhaes
1006Rodrigues CampainJapan2026-06-05Truhlar And Truhlar Attys PROPOSAL82Amy Elsner
1007Smith GlickFrance2026-06-01Dorl, James J Esq NEGOTIATION90Xuxue Feng
1008Clifford RimBrazil2026-06-16Dorl, James J Esq QUALIFIED81Stephen Shaw
1009Munro FerenczJapan2026-06-02Rousseaux, Michael Esq UNQUALIFIED98Bernardo Dominic
1010Aditya KuskoBrazil2026-06-22Feltz Printing Service PROPOSAL60Amy Elsner
1011Leon OldroydUnited Kingdom2026-05-31Rousseaux, Michael Esq NEGOTIATION46Anna Fali
1012Ashley DoeRussia2026-06-16Commercial Press QUALIFIED74Amy Elsner
1013Aruna FigeroaItaly2026-06-20Truhlar And Truhlar Attys UNQUALIFIED1Onyama Limba
1014Isabel BowleyCanada2026-06-12Dorl, James J Esq QUALIFIED55Bernardo Dominic
1015Aditya KuskoJapan2026-05-26Commercial Press UNQUALIFIED35Stephen Shaw
1016Mujtaba NickaFrance2026-06-06Chemel, James L Cpa QUALIFIED55Elwin Sharvill
1017Aika InouyeItaly2026-06-09Rangoni Of Florence PROPOSAL38Anna Fali
1018Maisha RulapaughAustralia2026-06-22Dorl, James J Esq PROPOSAL87Amy Elsner
1019Aruna FigeroaJapan2026-06-03Feltz Printing Service NEGOTIATION55Ioni Bowcher
1020Adams MorascaIndia2026-05-28Chemel, James L Cpa RENEWAL57Asiya Javayant
1021Salvatore StockhamFrance2026-06-11Truhlar And Truhlar Attys PROPOSAL61Amy Elsner
1022Jennifer AmigonFrance2026-05-28Rousseaux, Michael Esq NEW53Elwin Sharvill
1023Julie StensethUnited Kingdom2026-06-13Morlong Associates UNQUALIFIED92Amy Elsner
1024Kaitlin OstroskyAustralia2026-06-17Chapman, Ross E Esq NEGOTIATION79Elwin Sharvill
1025Claire TollnerRussia2026-06-09Feiner Bros NEGOTIATION31Onyama Limba
1026Salvatore StockhamJapan2026-06-17Rousseaux, Michael Esq RENEWAL85Anna Fali
1027Maisha RulapaughItaly2026-05-27Benton, John B Jr UNQUALIFIED31Elwin Sharvill
1028Isabel BowleyJapan2026-06-02Chemel, James L Cpa RENEWAL17Ioni Bowcher
1029Mayumi KolmetzFrance2026-06-02Chanay, Jeffrey A Esq NEGOTIATION64Onyama Limba
1030Clifford RimGermany2026-06-10Printing Dimensions PROPOSAL76Bernardo Dominic
1031Misaki RoysterSpain2026-06-01Feiner Bros RENEWAL66Stephen Shaw
1032Leon OldroydFrance2026-06-18Rousseaux, Michael Esq RENEWAL52Onyama Limba
1033Murillo MaletUnited Kingdom2026-06-20Chemel, James L Cpa RENEWAL72Xuxue Feng
1034Murillo MaletAustralia2026-05-26Commercial Press PROPOSAL24Elwin Sharvill
1035Francesco ShinkoSpain2026-06-04Commercial Press NEW39Ivan Magalhaes
1036Alejandro PerinIndia2026-05-24Truhlar And Truhlar Attys QUALIFIED11Ioni Bowcher
1037Maria MarrierJapan2026-05-27Morlong Associates NEGOTIATION80Xuxue Feng
1038Darci PoquetteFrance2026-05-28Morlong Associates NEW28Ioni Bowcher
1039Izzy GarufiItaly2026-05-28Feltz Printing Service PROPOSAL6Stephen Shaw
1040Jennifer AmigonItaly2026-06-19Commercial Press RENEWAL57Elwin Sharvill
1041Adams MorascaGermany2026-06-06Truhlar And Truhlar Attys QUALIFIED18Bernardo Dominic
1042Cody SaylorsUnited Kingdom2026-06-22Chapman, Ross E Esq PROPOSAL36Ivan Magalhaes
1043Julie StensethCanada2026-06-15Rousseaux, Michael Esq UNQUALIFIED62Ivan Magalhaes
1044Adams MorascaUnited Kingdom2026-06-03Chemel, James L Cpa UNQUALIFIED60Elwin Sharvill
1045Izzy GarufiCanada2026-05-24Commercial Press NEGOTIATION65Ivan Magalhaes
1046Faith GillianJapan2026-06-10Dorl, James J Esq NEW55Elwin Sharvill
1047Antonio CaudyIndia2026-05-24Commercial Press RENEWAL21Elwin Sharvill
1048Kaitlin OstroskyGermany2026-05-27Buckley Miller Wright PROPOSAL52Stephen Shaw
1049Leja CaldareraRussia2026-06-16Chanay, Jeffrey A Esq PROPOSAL32Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Darci PoquetteCanadaElwin Sharvill RENEWAL
Chavez BriddickArgentinaElwin Sharvill NEW
Emily WhobreyGermanyStephen Shaw NEW
Wickens NestleAustraliaElwin Sharvill RENEWAL
Maria MarrierGermanyOnyama Limba NEW
Arvin AlbaresFranceAnna Fali NEW
Costa DilliardSpainAmy Elsner PROPOSAL
Adams MorascaJapanAnna Fali QUALIFIED
Ashley DoeJapanIvan Magalhaes NEGOTIATION
Greenwood BologniaUnited KingdomOnyama Limba QUALIFIED
Silvio SlusarskiUnited KingdomStephen Shaw UNQUALIFIED
Isabel BowleyRussiaAnna Fali UNQUALIFIED
Octavia MaletCanadaAmy Elsner QUALIFIED
Julie StensethRussiaBernardo Dominic NEW
Clifford RimGermanyStephen Shaw NEW
Ashley DoeAustraliaAsiya Javayant NEW
Mayumi KolmetzBrazilXuxue Feng QUALIFIED
Munro FerenczJapanElwin Sharvill NEW
Munro FerenczJapanAnna Fali PROPOSAL
Julie StensethJapanElwin Sharvill QUALIFIED
Aruna FigeroaFranceOnyama Limba PROPOSAL
Darci PoquetteFranceElwin Sharvill PROPOSAL
Jones VocelkaFranceAnna Fali RENEWAL
Morrow RutaItalyElwin Sharvill NEW
Mayumi KolmetzGermanyStephen Shaw NEGOTIATION
Kadeem FlosiArgentinaAnna Fali UNQUALIFIED
Greenwood BologniaRussiaStephen Shaw NEGOTIATION
Wickens NestleArgentinaAsiya Javayant PROPOSAL
Faith GillianBrazilAsiya Javayant NEGOTIATION
Isabel BowleyRussiaElwin Sharvill NEGOTIATION
Wickens NestleItalyAsiya Javayant UNQUALIFIED
Deepesh ChuiCanadaXuxue Feng RENEWAL
Stacey MacleadCanadaBernardo Dominic NEW
Octavia MaletGermanyElwin Sharvill NEW
Murillo MaletBrazilXuxue Feng RENEWAL
Clifford RimBrazilAsiya Javayant NEW
Julie StensethGermanyElwin Sharvill QUALIFIED
Munro FerenczJapanBernardo Dominic RENEWAL
Tony FollerFranceIoni Bowcher PROPOSAL
Maria MarrierBrazilIoni Bowcher PROPOSAL
Ricardo GauchoItalyAnna Fali NEGOTIATION
Costa DilliardGermanyStephen Shaw PROPOSAL
Sinclair WaycottAustraliaAnna Fali QUALIFIED
Costa DilliardArgentinaOnyama Limba NEGOTIATION
Adams MorascaSpainBernardo Dominic RENEWAL
Jefferson SchemmerGermanyAmy Elsner UNQUALIFIED
Faith GillianSpainAmy Elsner NEGOTIATION
Morrow RutaUnited KingdomIoni Bowcher QUALIFIED
Munro FerenczAustraliaIvan Magalhaes NEW
Cody SaylorsUnited KingdomAmy Elsner NEGOTIATION
Frozen Columns
Name
Johnson Sergi
Mayumi Kolmetz
Alejandro Perin
Antonio Caudy
Mujtaba Nicka
Julie Stenseth
Aditya Kusko
Kaitlin Ostrosky
Antonio Caudy
Leon Oldroyd
Jeanfrancois Venere
Jefferson Schemmer
Morrow Ruta
Julie Stenseth
Nicolas Iturbide
Ricardo Gaucho
Deepesh Chui
Maisha Rulapaugh
Munro Ferencz
James Butt
Darci Poquette
Johnson Sergi
Mayumi Kolmetz
Octavia Malet
Jefferson Schemmer
Aika Inouye
Emily Whobrey
Mayumi Kolmetz
Ivar Paprocki
Johnson Sergi
Nicolas Iturbide
Isabel Bowley
Stacey Maclead
Stacey Maclead
Misaki Royster
Maisha Rulapaugh
Misaki Royster
Cody Saylors
Ivar Paprocki
Emily Whobrey
Tony Foller
Misaki Royster
James Butt
Clifford Rim
Octavia Malet
Chavez Briddick
Smith Glick
Francesco Shinko
Faith Gillian
Jefferson Schemmer
IdCountryDate
1000Australia2026-05-31
1001United Kingdom2026-06-22
1002Argentina2026-06-16
1003Canada2026-06-05
1004Brazil2026-05-24
1005United Kingdom2026-06-04
1006Canada2026-06-15
1007Spain2026-06-13
1008Brazil2026-06-05
1009Japan2026-05-28
1010Canada2026-06-20
1011Argentina2026-05-29
1012Australia2026-06-03
1013Australia2026-06-11
1014Japan2026-06-08
1015Russia2026-06-14
1016Japan2026-05-26
1017France2026-05-30
1018Italy2026-06-06
1019Argentina2026-06-04
1020Japan2026-06-16
1021France2026-06-06
1022France2026-05-29
1023India2026-05-24
1024France2026-05-28
1025Germany2026-05-30
1026France2026-06-01
1027Australia2026-06-10
1028United Kingdom2026-05-26
1029Germany2026-06-14
1030France2026-06-19
1031Argentina2026-06-03
1032Italy2026-06-02
1033India2026-06-01
1034Argentina2026-06-14
1035Japan2026-05-26
1036India2026-06-19
1037Australia2026-06-10
1038United Kingdom2026-06-01
1039Germany2026-06-13
1040Japan2026-05-29
1041Russia2026-05-31
1042Australia2026-06-07
1043France2026-06-03
1044Italy2026-06-06
1045Russia2026-06-20
1046France2026-06-14
1047Canada2026-06-18
1048Spain2026-06-07
1049United Kingdom2026-06-15

On-Demand Data

NameIdCountryDate
Aika Inouye1000Australia2026-06-05
Tony Foller1001Russia2026-06-18
Deepesh Chui1002Spain2026-06-09
Cody Saylors1003France2026-06-11
Costa Dilliard1004Canada2026-06-13
Sinclair Waycott1005Japan2026-06-15
Rodrigues Campain1006United Kingdom2026-06-10
Arvin Albares1007Canada2026-06-08
Antonio Caudy1008Germany2026-06-17
Nicolas Iturbide1009Russia2026-06-06
Kaitlin Ostrosky1010Spain2026-06-18
Alejandro Perin1011Italy2026-06-08
Greenwood Bolognia1012Brazil2026-06-21
Maria Marrier1013India2026-06-04
Maisha Rulapaugh1014Canada2026-06-19
Octavia Malet1015Spain2026-05-29
Misaki Royster1016United Kingdom2026-05-31
Johnson Sergi1017Australia2026-06-05
Adams Morasca1018Canada2026-06-10
Jeanfrancois Venere1019Argentina2026-05-27
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jones VocelkaItalyBernardo Dominic NEW
Francesco ShinkoArgentinaBernardo Dominic NEW
Chavez BriddickRussiaXuxue Feng QUALIFIED
Johnson SergiAustraliaBernardo Dominic PROPOSAL
Silvio SlusarskiRussiaXuxue Feng RENEWAL
Kadeem FlosiRussiaAmy Elsner PROPOSAL
Isabel BowleyAustraliaAsiya Javayant RENEWAL
Mujtaba NickaRussiaElwin Sharvill PROPOSAL
Arvin AlbaresItalyAnna Fali QUALIFIED
Maisha RulapaughAustraliaIvan Magalhaes NEW
Arvin AlbaresSpainAmy Elsner RENEWAL
Antonio CaudyItalyStephen Shaw RENEWAL
Aruna FigeroaArgentinaStephen Shaw RENEWAL
Antonio CaudyArgentinaAnna Fali QUALIFIED
Chavez BriddickIndiaElwin Sharvill RENEWAL
Aika InouyeItalyElwin Sharvill RENEWAL
Greenwood BologniaUnited KingdomOnyama Limba QUALIFIED
Smith GlickArgentinaAsiya Javayant NEW
Chavez BriddickItalyBernardo Dominic RENEWAL
Smith GlickArgentinaBernardo Dominic NEGOTIATION
Nicolas IturbideIndiaXuxue Feng NEW
Maisha RulapaughJapanAsiya Javayant QUALIFIED
Julie StensethArgentinaIvan Magalhaes NEGOTIATION
Mujtaba NickaArgentinaBernardo Dominic UNQUALIFIED
Jones VocelkaIndiaIoni Bowcher RENEWAL
Jeanfrancois VenereUnited KingdomBernardo Dominic UNQUALIFIED
Ashley DoeRussiaAnna Fali NEGOTIATION
Kaitlin OstroskyFranceIoni Bowcher UNQUALIFIED
Ricardo GauchoCanadaXuxue Feng UNQUALIFIED
Murillo MaletUnited KingdomStephen Shaw PROPOSAL
Adams MorascaJapanStephen Shaw RENEWAL
James ButtArgentinaAsiya Javayant NEW
Deepesh ChuiIndiaIvan Magalhaes RENEWAL
Juan WieserFranceIvan Magalhaes UNQUALIFIED
Johnson SergiItalyAsiya Javayant NEW
Rodrigues CampainGermanyIvan Magalhaes UNQUALIFIED
Octavia MaletUnited KingdomAnna Fali UNQUALIFIED
Munro FerenczCanadaXuxue Feng PROPOSAL
Smith GlickBrazilAsiya Javayant UNQUALIFIED
Misaki RoysterIndiaOnyama Limba RENEWAL

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