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
Jennifer AmigonFranceElwin Sharvill RENEWAL
Sinclair WaycottJapanIoni Bowcher RENEWAL
Claire TollnerJapanIvan Magalhaes QUALIFIED
Adams MorascaAustraliaAnna Fali NEGOTIATION
Mayumi KolmetzUnited KingdomStephen Shaw UNQUALIFIED
Jeanfrancois VenereArgentinaAnna Fali NEGOTIATION
Tony FollerItalyIoni Bowcher NEW
Morrow RutaGermanyIvan Magalhaes PROPOSAL
Izzy GarufiIndiaStephen Shaw QUALIFIED
Ricardo GauchoCanadaIvan Magalhaes QUALIFIED
Morrow RutaBrazilIoni Bowcher RENEWAL
Sinclair WaycottFranceXuxue Feng RENEWAL
Rodrigues CampainCanadaElwin Sharvill NEW
Jennifer AmigonAustraliaBernardo Dominic PROPOSAL
Francesco ShinkoIndiaXuxue Feng RENEWAL
Smith GlickIndiaAmy Elsner NEW
Sinclair WaycottJapanAmy Elsner NEW
Johnson SergiIndiaOnyama Limba QUALIFIED
Ashley DoeBrazilBernardo Dominic PROPOSAL
Munro FerenczItalyIoni Bowcher RENEWAL
Mujtaba NickaCanadaAnna Fali UNQUALIFIED
Kaitlin OstroskyFranceElwin Sharvill NEW
Murillo MaletBrazilIvan Magalhaes RENEWAL
Murillo MaletCanadaStephen Shaw UNQUALIFIED
Misaki RoysterArgentinaBernardo Dominic PROPOSAL
Wickens NestleJapanBernardo Dominic QUALIFIED
Darci PoquetteAustraliaIvan Magalhaes NEW
Nicolas IturbideGermanyIvan Magalhaes UNQUALIFIED
Silvio SlusarskiArgentinaElwin Sharvill NEGOTIATION
Nicolas IturbideFranceAsiya Javayant NEGOTIATION
Munro FerenczAustraliaIoni Bowcher NEGOTIATION
Morrow RutaBrazilAmy Elsner UNQUALIFIED
Leja CaldareraSpainBernardo Dominic RENEWAL
Darci PoquetteRussiaAmy Elsner NEW
Maisha RulapaughCanadaAnna Fali UNQUALIFIED
Smith GlickArgentinaAnna Fali PROPOSAL
Mayumi KolmetzIndiaElwin Sharvill NEW
Stacey MacleadAustraliaAsiya Javayant RENEWAL
Jefferson SchemmerItalyOnyama Limba PROPOSAL
David DarakjyBrazilAmy Elsner QUALIFIED
Wickens NestleJapanXuxue Feng QUALIFIED
Salvatore StockhamUnited KingdomXuxue Feng UNQUALIFIED
Stacey MacleadGermanyElwin Sharvill NEGOTIATION
Nicolas IturbideJapanElwin Sharvill QUALIFIED
Chavez BriddickBrazilIoni Bowcher QUALIFIED
Misaki RoysterBrazilElwin Sharvill PROPOSAL
Salvatore StockhamCanadaIvan Magalhaes UNQUALIFIED
Jennifer AmigonBrazilAmy Elsner NEW
Julie StensethArgentinaOnyama Limba RENEWAL
Aika InouyeBrazilIvan Magalhaes PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Maisha RulapaughBrazilAnna Fali UNQUALIFIED
Wickens NestleUnited KingdomAsiya Javayant PROPOSAL
Emily WhobreyArgentinaIoni Bowcher PROPOSAL
Johnson SergiIndiaIoni Bowcher NEGOTIATION
Tony FollerCanadaAsiya Javayant UNQUALIFIED
Mayumi KolmetzFranceAnna Fali PROPOSAL
Aika InouyeGermanyAnna Fali RENEWAL
Leja CaldareraItalyAmy Elsner NEGOTIATION
Mujtaba NickaBrazilAsiya Javayant NEW
Mujtaba NickaSpainIvan Magalhaes PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Arvin AlbaresAustralia2026-06-06Printing Dimensions NEW48Stephen Shaw
1001Jefferson SchemmerIndia2026-06-06Buckley Miller Wright QUALIFIED48Elwin Sharvill
1002Emily WhobreyGermany2026-05-23Rousseaux, Michael Esq PROPOSAL36Bernardo Dominic
1003Salvatore StockhamGermany2026-06-08Feltz Printing Service PROPOSAL48Stephen Shaw
1004Adams MorascaJapan2026-05-16Printing Dimensions UNQUALIFIED86Asiya Javayant
1005Murillo MaletFrance2026-05-31Chemel, James L Cpa QUALIFIED49Anna Fali
1006Emily WhobreyUnited Kingdom2026-06-07Truhlar And Truhlar Attys NEGOTIATION12Bernardo Dominic
1007Silvio SlusarskiArgentina2026-06-11King, Christopher A Esq RENEWAL40Ivan Magalhaes
1008Clifford RimGermany2026-05-28Rangoni Of Florence RENEWAL48Onyama Limba
1009Deepesh ChuiFrance2026-05-31Feltz Printing Service RENEWAL14Onyama Limba
1010Adams MorascaIndia2026-05-27Printing Dimensions QUALIFIED16Elwin Sharvill
1011Maria MarrierFrance2026-05-26Commercial Press UNQUALIFIED5Amy Elsner
1012Chavez BriddickItaly2026-05-25Chapman, Ross E Esq NEGOTIATION77Amy Elsner
1013Clifford RimRussia2026-05-25Feltz Printing Service NEW14Ioni Bowcher
1014David DarakjyJapan2026-05-18Feiner Bros QUALIFIED33Amy Elsner
1015Mayumi KolmetzSpain2026-05-24Feiner Bros NEGOTIATION12Elwin Sharvill
1016Ashley DoeRussia2026-06-12Benton, John B Jr NEW36Asiya Javayant
1017Murillo MaletGermany2026-06-10Chemel, James L Cpa RENEWAL60Amy Elsner
1018Izzy GarufiBrazil2026-05-17Rangoni Of Florence NEW97Bernardo Dominic
1019Leon OldroydGermany2026-05-19King, Christopher A Esq NEW27Ioni Bowcher
1020Julie StensethCanada2026-05-26Chanay, Jeffrey A Esq UNQUALIFIED71Ioni Bowcher
1021Stacey MacleadArgentina2026-05-15Rangoni Of Florence NEGOTIATION37Onyama Limba
1022Octavia MaletFrance2026-05-20Rangoni Of Florence RENEWAL24Ivan Magalhaes
1023Cody SaylorsArgentina2026-06-03King, Christopher A Esq NEGOTIATION66Stephen Shaw
1024Morrow RutaArgentina2026-05-19Dorl, James J Esq QUALIFIED9Xuxue Feng
1025Sinclair WaycottArgentina2026-05-27Buckley Miller Wright PROPOSAL71Anna Fali
1026Antonio CaudyIndia2026-05-14Rousseaux, Michael Esq NEW9Xuxue Feng
1027Darci PoquetteAustralia2026-05-19Feiner Bros NEW6Asiya Javayant
1028Julie StensethUnited Kingdom2026-06-06Feltz Printing Service QUALIFIED84Onyama Limba
1029Leon OldroydRussia2026-05-22King, Christopher A Esq NEGOTIATION15Asiya Javayant
1030Tony FollerCanada2026-05-16King, Christopher A Esq UNQUALIFIED52Ivan Magalhaes
1031Stacey MacleadRussia2026-05-15Printing Dimensions PROPOSAL15Onyama Limba
1032Faith GillianGermany2026-05-16Commercial Press PROPOSAL87Bernardo Dominic
1033Julie StensethSpain2026-05-28Rangoni Of Florence QUALIFIED44Ivan Magalhaes
1034Ivar PaprockiIndia2026-05-30Chanay, Jeffrey A Esq PROPOSAL48Stephen Shaw
1035Adams MorascaItaly2026-05-14Rangoni Of Florence PROPOSAL1Bernardo Dominic
1036Mujtaba NickaSpain2026-05-25King, Christopher A Esq RENEWAL83Elwin Sharvill
1037Deepesh ChuiRussia2026-05-30Truhlar And Truhlar Attys RENEWAL82Bernardo Dominic
1038Isabel BowleyItaly2026-06-11Rangoni Of Florence NEGOTIATION44Anna Fali
1039Aruna FigeroaIndia2026-05-15Buckley Miller Wright UNQUALIFIED39Xuxue Feng
1040Julie StensethUnited Kingdom2026-06-04Feltz Printing Service NEGOTIATION97Xuxue Feng
1041Emily WhobreyUnited Kingdom2026-06-07Rangoni Of Florence RENEWAL23Xuxue Feng
1042Aika InouyeArgentina2026-06-09Truhlar And Truhlar Attys NEGOTIATION2Onyama Limba
1043Nicolas IturbideArgentina2026-05-27Feltz Printing Service NEGOTIATION59Bernardo Dominic
1044Faith GillianRussia2026-05-23Commercial Press UNQUALIFIED36Bernardo Dominic
1045Juan WieserGermany2026-05-20Buckley Miller Wright NEGOTIATION43Ioni Bowcher
1046Izzy GarufiUnited Kingdom2026-05-19Chanay, Jeffrey A Esq UNQUALIFIED8Ioni Bowcher
1047Smith GlickBrazil2026-06-11Dorl, James J Esq NEW48Stephen Shaw
1048Sinclair WaycottItaly2026-06-12Buckley Miller Wright RENEWAL67Ivan Magalhaes
1049David DarakjyJapan2026-05-18Truhlar And Truhlar Attys NEW28Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
David DarakjyRussiaXuxue Feng NEGOTIATION
Sinclair WaycottCanadaIoni Bowcher PROPOSAL
Salvatore StockhamArgentinaXuxue Feng QUALIFIED
Stacey MacleadGermanyAsiya Javayant NEW
Nicolas IturbideUnited KingdomAmy Elsner NEW
Tony FollerIndiaElwin Sharvill NEGOTIATION
Misaki RoysterGermanyIoni Bowcher PROPOSAL
Jefferson SchemmerAustraliaOnyama Limba NEW
Adams MorascaBrazilAnna Fali QUALIFIED
Smith GlickAustraliaStephen Shaw NEGOTIATION
Kaitlin OstroskyFranceElwin Sharvill QUALIFIED
Cody SaylorsGermanyBernardo Dominic PROPOSAL
Adams MorascaItalyAnna Fali NEW
Kadeem FlosiIndiaElwin Sharvill NEGOTIATION
Mayumi KolmetzJapanStephen Shaw QUALIFIED
Maria MarrierJapanBernardo Dominic UNQUALIFIED
Antonio CaudyRussiaIvan Magalhaes NEW
Julie StensethFranceStephen Shaw NEW
Nicolas IturbideUnited KingdomOnyama Limba NEGOTIATION
Izzy GarufiJapanIvan Magalhaes RENEWAL
Kadeem FlosiIndiaAnna Fali PROPOSAL
Rodrigues CampainFranceIvan Magalhaes PROPOSAL
Chavez BriddickRussiaAsiya Javayant RENEWAL
Nicolas IturbideArgentinaIoni Bowcher RENEWAL
Aika InouyeAustraliaElwin Sharvill UNQUALIFIED
Chavez BriddickGermanyOnyama Limba NEGOTIATION
Faith GillianIndiaAmy Elsner NEW
Ricardo GauchoGermanyXuxue Feng PROPOSAL
Mujtaba NickaAustraliaIvan Magalhaes RENEWAL
Salvatore StockhamArgentinaIvan Magalhaes PROPOSAL
Juan WieserFranceBernardo Dominic RENEWAL
Emily WhobreyUnited KingdomIoni Bowcher NEW
Smith GlickAustraliaStephen Shaw UNQUALIFIED
Claire TollnerIndiaOnyama Limba NEW
Deepesh ChuiJapanXuxue Feng NEGOTIATION
Wickens NestleCanadaElwin Sharvill NEGOTIATION
Julie StensethItalyIoni Bowcher PROPOSAL
Misaki RoysterItalyStephen Shaw QUALIFIED
Misaki RoysterJapanIoni Bowcher NEGOTIATION
Aruna FigeroaRussiaAnna Fali NEW
Kadeem FlosiCanadaIvan Magalhaes QUALIFIED
Salvatore StockhamArgentinaBernardo Dominic QUALIFIED
Morrow RutaAustraliaStephen Shaw QUALIFIED
Kaitlin OstroskyUnited KingdomIvan Magalhaes RENEWAL
Faith GillianIndiaBernardo Dominic UNQUALIFIED
Misaki RoysterUnited KingdomIvan Magalhaes RENEWAL
Silvio SlusarskiBrazilElwin Sharvill QUALIFIED
Jeanfrancois VenereUnited KingdomBernardo Dominic NEW
Jones VocelkaJapanStephen Shaw NEW
Aika InouyeUnited KingdomIvan Magalhaes NEW
Frozen Columns
Name
Aika Inouye
Stacey Maclead
Munro Ferencz
Julie Stenseth
Deepesh Chui
Nicolas Iturbide
Izzy Garufi
Smith Glick
Juan Wieser
Cody Saylors
Munro Ferencz
Murillo Malet
Ashley Doe
Deepesh Chui
Greenwood Bolognia
Maisha Rulapaugh
David Darakjy
Mayumi Kolmetz
Rodrigues Campain
Costa Dilliard
Juan Wieser
Aruna Figeroa
Ivar Paprocki
Jefferson Schemmer
David Darakjy
Jones Vocelka
Isabel Bowley
Francesco Shinko
Kadeem Flosi
Jones Vocelka
Ashley Doe
Ricardo Gaucho
Murillo Malet
Kadeem Flosi
James Butt
Jeanfrancois Venere
Octavia Malet
Emily Whobrey
Ivar Paprocki
Jeanfrancois Venere
Ricardo Gaucho
Aika Inouye
Tony Foller
Jefferson Schemmer
Greenwood Bolognia
Ivar Paprocki
Stacey Maclead
Julie Stenseth
Claire Tollner
Sinclair Waycott
IdCountryDate
1000Australia2026-05-29
1001Germany2026-06-11
1002Brazil2026-05-20
1003Japan2026-06-12
1004Australia2026-06-09
1005Australia2026-06-04
1006Germany2026-05-24
1007Argentina2026-05-28
1008Russia2026-06-06
1009Australia2026-05-28
1010Argentina2026-06-02
1011France2026-06-12
1012France2026-05-17
1013Australia2026-05-15
1014United Kingdom2026-06-01
1015Brazil2026-05-21
1016Australia2026-05-14
1017Australia2026-05-17
1018Canada2026-06-07
1019Russia2026-05-31
1020France2026-05-17
1021Germany2026-06-04
1022Argentina2026-06-02
1023Brazil2026-05-28
1024Italy2026-05-26
1025Argentina2026-05-22
1026Canada2026-05-16
1027Germany2026-05-29
1028Germany2026-05-31
1029Italy2026-05-16
1030France2026-06-08
1031India2026-05-23
1032India2026-05-23
1033Canada2026-06-10
1034Germany2026-05-29
1035Germany2026-05-16
1036Spain2026-06-08
1037Canada2026-05-18
1038Germany2026-05-30
1039Italy2026-05-19
1040Argentina2026-06-11
1041Brazil2026-06-10
1042Canada2026-05-23
1043Spain2026-06-06
1044Japan2026-05-16
1045Canada2026-06-03
1046Japan2026-06-10
1047India2026-06-09
1048India2026-06-07
1049India2026-05-21

On-Demand Data

NameIdCountryDate
Francesco Shinko1000France2026-06-08
Ricardo Gaucho1001Canada2026-05-25
Aruna Figeroa1002Argentina2026-06-11
Leja Caldarera1003Australia2026-06-10
Claire Tollner1004Brazil2026-05-31
Emily Whobrey1005Brazil2026-05-20
Misaki Royster1006Russia2026-06-06
Ricardo Gaucho1007Italy2026-05-28
Smith Glick1008India2026-05-15
Alejandro Perin1009Argentina2026-05-25
Kaitlin Ostrosky1010France2026-06-03
Nicolas Iturbide1011Australia2026-05-15
James Butt1012Japan2026-06-05
Jeanfrancois Venere1013Australia2026-06-09
Sinclair Waycott1014Australia2026-06-11
Sinclair Waycott1015Spain2026-05-22
Leon Oldroyd1016Brazil2026-06-01
Isabel Bowley1017Spain2026-06-08
Aika Inouye1018Brazil2026-05-18
Aika Inouye1019Italy2026-05-20
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Tony FollerCanadaStephen Shaw QUALIFIED
Antonio CaudyItalyStephen Shaw UNQUALIFIED
Leon OldroydGermanyAsiya Javayant NEGOTIATION
Silvio SlusarskiArgentinaIvan Magalhaes PROPOSAL
Jeanfrancois VenereItalyXuxue Feng NEW
Arvin AlbaresRussiaIoni Bowcher PROPOSAL
Emily WhobreyGermanyAmy Elsner RENEWAL
Misaki RoysterBrazilIvan Magalhaes UNQUALIFIED
Nicolas IturbideAustraliaStephen Shaw NEW
Sinclair WaycottUnited KingdomAnna Fali RENEWAL
Misaki RoysterCanadaIvan Magalhaes NEGOTIATION
Clifford RimRussiaAnna Fali NEW
Costa DilliardIndiaStephen Shaw RENEWAL
Stacey MacleadUnited KingdomAnna Fali NEW
Adams MorascaAustraliaAsiya Javayant RENEWAL
Munro FerenczUnited KingdomBernardo Dominic NEW
Jeanfrancois VenereUnited KingdomStephen Shaw NEW
Aruna FigeroaSpainAmy Elsner PROPOSAL
Salvatore StockhamUnited KingdomAmy Elsner RENEWAL
Darci PoquetteBrazilAmy Elsner PROPOSAL
Aditya KuskoGermanyAnna Fali NEGOTIATION
Silvio SlusarskiIndiaAsiya Javayant PROPOSAL
Francesco ShinkoCanadaIoni Bowcher PROPOSAL
Misaki RoysterArgentinaAsiya Javayant UNQUALIFIED
Jennifer AmigonAustraliaAsiya Javayant NEW
Nicolas IturbideFranceIvan Magalhaes NEGOTIATION
Antonio CaudyItalyAsiya Javayant PROPOSAL
Aruna FigeroaAustraliaElwin Sharvill PROPOSAL
Morrow RutaAustraliaIvan Magalhaes NEW
Salvatore StockhamUnited KingdomAmy Elsner NEGOTIATION
Emily WhobreyArgentinaElwin Sharvill RENEWAL
Deepesh ChuiRussiaXuxue Feng PROPOSAL
Misaki RoysterFranceAmy Elsner NEGOTIATION
Alejandro PerinJapanElwin Sharvill PROPOSAL
Mayumi KolmetzCanadaAmy Elsner NEW
Silvio SlusarskiCanadaBernardo Dominic QUALIFIED
Stacey MacleadBrazilStephen Shaw RENEWAL
Antonio CaudyUnited KingdomXuxue Feng UNQUALIFIED
Costa DilliardUnited KingdomAmy Elsner UNQUALIFIED
Clifford RimArgentinaIvan Magalhaes 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>