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
Smith GlickItalyIoni Bowcher PROPOSAL
Sinclair WaycottRussiaXuxue Feng NEW
Ashley DoeIndiaStephen Shaw QUALIFIED
Leja CaldareraIndiaAmy Elsner RENEWAL
Mujtaba NickaUnited KingdomBernardo Dominic UNQUALIFIED
Aditya KuskoGermanyElwin Sharvill QUALIFIED
Kaitlin OstroskyCanadaIvan Magalhaes PROPOSAL
Claire TollnerFranceAmy Elsner UNQUALIFIED
Stacey MacleadArgentinaAnna Fali QUALIFIED
Wickens NestleFranceAnna Fali UNQUALIFIED
Cody SaylorsUnited KingdomAnna Fali NEW
Darci PoquetteSpainIvan Magalhaes QUALIFIED
Silvio SlusarskiFranceAsiya Javayant NEW
Sinclair WaycottCanadaStephen Shaw NEGOTIATION
Francesco ShinkoBrazilElwin Sharvill NEW
Maisha RulapaughCanadaXuxue Feng QUALIFIED
Mayumi KolmetzJapanAsiya Javayant QUALIFIED
Costa DilliardItalyBernardo Dominic NEGOTIATION
Alejandro PerinItalyIoni Bowcher QUALIFIED
Smith GlickBrazilIoni Bowcher NEGOTIATION
Wickens NestleItalyXuxue Feng RENEWAL
Maisha RulapaughFranceStephen Shaw NEGOTIATION
Johnson SergiAustraliaXuxue Feng QUALIFIED
Claire TollnerSpainStephen Shaw UNQUALIFIED
Nicolas IturbideFranceXuxue Feng PROPOSAL
Silvio SlusarskiGermanyBernardo Dominic RENEWAL
Octavia MaletFranceAsiya Javayant RENEWAL
Wickens NestleSpainXuxue Feng UNQUALIFIED
Jones VocelkaItalyStephen Shaw RENEWAL
Stacey MacleadArgentinaAnna Fali UNQUALIFIED
Leja CaldareraIndiaAnna Fali QUALIFIED
Jefferson SchemmerCanadaIoni Bowcher NEGOTIATION
Aditya KuskoJapanIoni Bowcher NEW
Kaitlin OstroskyAustraliaXuxue Feng UNQUALIFIED
Morrow RutaAustraliaXuxue Feng RENEWAL
Jefferson SchemmerSpainIvan Magalhaes NEGOTIATION
Misaki RoysterAustraliaOnyama Limba RENEWAL
David DarakjyGermanyIoni Bowcher QUALIFIED
Maria MarrierFranceIvan Magalhaes UNQUALIFIED
Smith GlickBrazilAmy Elsner RENEWAL
Kadeem FlosiUnited KingdomAmy Elsner NEGOTIATION
Munro FerenczBrazilXuxue Feng UNQUALIFIED
Wickens NestleIndiaAsiya Javayant NEW
Silvio SlusarskiIndiaElwin Sharvill NEGOTIATION
Costa DilliardItalyStephen Shaw UNQUALIFIED
Stacey MacleadUnited KingdomOnyama Limba NEGOTIATION
Julie StensethFranceOnyama Limba NEGOTIATION
Leja CaldareraJapanAmy Elsner UNQUALIFIED
Juan WieserRussiaElwin Sharvill UNQUALIFIED
Rodrigues CampainCanadaAsiya Javayant NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Arvin AlbaresArgentinaIvan Magalhaes PROPOSAL
Jefferson SchemmerCanadaElwin Sharvill QUALIFIED
Chavez BriddickAustraliaAmy Elsner RENEWAL
Arvin AlbaresArgentinaElwin Sharvill PROPOSAL
Jones VocelkaIndiaAmy Elsner RENEWAL
Chavez BriddickIndiaStephen Shaw NEGOTIATION
Ashley DoeGermanyIoni Bowcher PROPOSAL
Alejandro PerinUnited KingdomAsiya Javayant RENEWAL
Antonio CaudyAustraliaBernardo Dominic RENEWAL
Izzy GarufiItalyAmy Elsner QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Morrow RutaItaly2026-05-20Chapman, Ross E Esq PROPOSAL91Amy Elsner
1001Emily WhobreyJapan2026-05-03Benton, John B Jr QUALIFIED99Asiya Javayant
1002Sinclair WaycottSpain2026-05-24Truhlar And Truhlar Attys NEGOTIATION98Elwin Sharvill
1003James ButtBrazil2026-05-28Buckley Miller Wright RENEWAL28Elwin Sharvill
1004Chavez BriddickArgentina2026-05-28Chanay, Jeffrey A Esq NEGOTIATION22Amy Elsner
1005Aditya KuskoGermany2026-05-27Buckley Miller Wright NEGOTIATION8Onyama Limba
1006Ashley DoeItaly2026-05-23King, Christopher A Esq QUALIFIED82Stephen Shaw
1007Adams MorascaItaly2026-05-05Printing Dimensions NEW72Anna Fali
1008Rodrigues CampainIndia2026-05-19Truhlar And Truhlar Attys UNQUALIFIED42Onyama Limba
1009Faith GillianUnited Kingdom2026-05-19Commercial Press UNQUALIFIED39Ioni Bowcher
1010Leja CaldareraUnited Kingdom2026-05-09Feltz Printing Service NEW9Ivan Magalhaes
1011Rodrigues CampainBrazil2026-05-19Feiner Bros UNQUALIFIED80Ioni Bowcher
1012Adams MorascaRussia2026-05-20King, Christopher A Esq PROPOSAL49Asiya Javayant
1013Arvin AlbaresGermany2026-05-06Printing Dimensions PROPOSAL36Amy Elsner
1014Morrow RutaIndia2026-05-11Feltz Printing Service NEW72Anna Fali
1015James ButtSpain2026-05-20Truhlar And Truhlar Attys QUALIFIED45Onyama Limba
1016Salvatore StockhamItaly2026-05-07Chapman, Ross E Esq RENEWAL27Anna Fali
1017Johnson SergiFrance2026-05-24Chapman, Ross E Esq NEW58Ivan Magalhaes
1018Mayumi KolmetzArgentina2026-05-04Truhlar And Truhlar Attys NEW12Elwin Sharvill
1019Deepesh ChuiSpain2026-05-19Dorl, James J Esq UNQUALIFIED50Elwin Sharvill
1020Stacey MacleadBrazil2026-05-27Commercial Press RENEWAL87Stephen Shaw
1021Deepesh ChuiIndia2026-05-07Buckley Miller Wright RENEWAL71Anna Fali
1022Alejandro PerinGermany2026-05-07Benton, John B Jr QUALIFIED81Ioni Bowcher
1023Stacey MacleadSpain2026-05-16Dorl, James J Esq PROPOSAL41Onyama Limba
1024Sinclair WaycottUnited Kingdom2026-05-11Buckley Miller Wright NEGOTIATION5Ioni Bowcher
1025Alejandro PerinCanada2026-05-15Feltz Printing Service NEW18Amy Elsner
1026Cody SaylorsItaly2026-05-17Printing Dimensions NEW45Onyama Limba
1027Ivar PaprockiArgentina2026-05-10Feltz Printing Service UNQUALIFIED54Amy Elsner
1028Morrow RutaRussia2026-05-10Feiner Bros RENEWAL22Bernardo Dominic
1029Ivar PaprockiCanada2026-05-31Rangoni Of Florence UNQUALIFIED68Ivan Magalhaes
1030Rodrigues CampainCanada2026-05-07Feltz Printing Service NEW73Elwin Sharvill
1031Claire TollnerCanada2026-05-13King, Christopher A Esq NEGOTIATION77Ivan Magalhaes
1032Mayumi KolmetzSpain2026-05-07Buckley Miller Wright QUALIFIED77Bernardo Dominic
1033Aruna FigeroaCanada2026-05-23Chanay, Jeffrey A Esq QUALIFIED65Asiya Javayant
1034Kadeem FlosiAustralia2026-05-05Feiner Bros NEGOTIATION69Ivan Magalhaes
1035Emily WhobreySpain2026-05-23Rangoni Of Florence PROPOSAL0Elwin Sharvill
1036Nicolas IturbideSpain2026-05-30Chanay, Jeffrey A Esq PROPOSAL17Elwin Sharvill
1037Ivar PaprockiFrance2026-05-24Commercial Press NEGOTIATION13Asiya Javayant
1038Rodrigues CampainSpain2026-05-18Feiner Bros QUALIFIED94Amy Elsner
1039Adams MorascaGermany2026-05-05Chemel, James L Cpa NEW39Anna Fali
1040Julie StensethAustralia2026-05-28Commercial Press NEW86Onyama Limba
1041Salvatore StockhamCanada2026-05-15Truhlar And Truhlar Attys NEW15Ioni Bowcher
1042Adams MorascaRussia2026-05-26Feiner Bros UNQUALIFIED51Asiya Javayant
1043Kadeem FlosiItaly2026-05-06King, Christopher A Esq NEGOTIATION20Ivan Magalhaes
1044Mujtaba NickaFrance2026-05-31Chapman, Ross E Esq RENEWAL32Stephen Shaw
1045Chavez BriddickCanada2026-05-28Morlong Associates PROPOSAL74Amy Elsner
1046Sinclair WaycottFrance2026-05-04Dorl, James J Esq NEW12Anna Fali
1047Rodrigues CampainFrance2026-05-17Printing Dimensions PROPOSAL91Ioni Bowcher
1048Ashley DoeGermany2026-05-12Buckley Miller Wright RENEWAL61Stephen Shaw
1049Clifford RimFrance2026-05-12Benton, John B Jr UNQUALIFIED93Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Julie StensethJapanXuxue Feng UNQUALIFIED
Silvio SlusarskiBrazilAsiya Javayant UNQUALIFIED
Morrow RutaRussiaOnyama Limba UNQUALIFIED
Kaitlin OstroskyAustraliaIvan Magalhaes NEW
Chavez BriddickRussiaIvan Magalhaes PROPOSAL
Faith GillianBrazilStephen Shaw UNQUALIFIED
David DarakjyCanadaStephen Shaw RENEWAL
Murillo MaletAustraliaElwin Sharvill QUALIFIED
Izzy GarufiItalyAsiya Javayant RENEWAL
Johnson SergiGermanyIoni Bowcher NEGOTIATION
Antonio CaudyFranceOnyama Limba UNQUALIFIED
Arvin AlbaresAustraliaXuxue Feng UNQUALIFIED
Maisha RulapaughItalyAmy Elsner PROPOSAL
Claire TollnerBrazilIoni Bowcher QUALIFIED
Deepesh ChuiJapanIvan Magalhaes QUALIFIED
Mujtaba NickaBrazilAmy Elsner RENEWAL
David DarakjyAustraliaBernardo Dominic NEGOTIATION
Mayumi KolmetzFranceAsiya Javayant UNQUALIFIED
Juan WieserJapanAsiya Javayant PROPOSAL
Adams MorascaFranceXuxue Feng NEGOTIATION
Kadeem FlosiCanadaIoni Bowcher NEGOTIATION
Francesco ShinkoItalyAnna Fali RENEWAL
Leon OldroydAustraliaXuxue Feng RENEWAL
Leja CaldareraFranceElwin Sharvill NEGOTIATION
Mayumi KolmetzAustraliaBernardo Dominic RENEWAL
Aika InouyeBrazilAnna Fali QUALIFIED
Julie StensethGermanyOnyama Limba PROPOSAL
Isabel BowleyRussiaXuxue Feng UNQUALIFIED
Rodrigues CampainBrazilStephen Shaw UNQUALIFIED
Costa DilliardBrazilBernardo Dominic NEGOTIATION
Cody SaylorsAustraliaElwin Sharvill QUALIFIED
James ButtFranceIoni Bowcher QUALIFIED
Deepesh ChuiAustraliaAnna Fali PROPOSAL
Izzy GarufiGermanyIvan Magalhaes NEGOTIATION
Misaki RoysterIndiaAnna Fali QUALIFIED
Misaki RoysterSpainAsiya Javayant RENEWAL
Izzy GarufiItalyStephen Shaw RENEWAL
Misaki RoysterSpainAsiya Javayant RENEWAL
Isabel BowleyAustraliaXuxue Feng PROPOSAL
Tony FollerIndiaIvan Magalhaes PROPOSAL
Ashley DoeCanadaBernardo Dominic NEGOTIATION
Clifford RimRussiaIvan Magalhaes RENEWAL
Cody SaylorsSpainXuxue Feng QUALIFIED
Octavia MaletFranceAmy Elsner RENEWAL
Francesco ShinkoFranceIvan Magalhaes PROPOSAL
Julie StensethUnited KingdomOnyama Limba UNQUALIFIED
Misaki RoysterFranceXuxue Feng RENEWAL
Antonio CaudyGermanyAnna Fali QUALIFIED
Tony FollerItalyXuxue Feng NEGOTIATION
Deepesh ChuiJapanOnyama Limba UNQUALIFIED
Frozen Columns
Name
Kaitlin Ostrosky
Stacey Maclead
Octavia Malet
Tony Foller
Arvin Albares
Emily Whobrey
Nicolas Iturbide
Kaitlin Ostrosky
Juan Wieser
Darci Poquette
Aditya Kusko
Kadeem Flosi
Costa Dilliard
Mujtaba Nicka
Silvio Slusarski
Antonio Caudy
Izzy Garufi
Tony Foller
Juan Wieser
Jennifer Amigon
Smith Glick
Ricardo Gaucho
Maisha Rulapaugh
Wickens Nestle
Salvatore Stockham
Smith Glick
Jefferson Schemmer
Johnson Sergi
Maisha Rulapaugh
Ashley Doe
Ricardo Gaucho
Tony Foller
Leja Caldarera
Kaitlin Ostrosky
Kadeem Flosi
Jones Vocelka
Jeanfrancois Venere
Tony Foller
Silvio Slusarski
Jones Vocelka
Sinclair Waycott
Leon Oldroyd
Kaitlin Ostrosky
Faith Gillian
Deepesh Chui
Stacey Maclead
Kaitlin Ostrosky
Munro Ferencz
Deepesh Chui
Kadeem Flosi
IdCountryDate
1000Germany2026-05-04
1001Canada2026-05-14
1002Canada2026-05-21
1003United Kingdom2026-05-09
1004Canada2026-06-01
1005Spain2026-05-25
1006France2026-05-11
1007United Kingdom2026-05-20
1008Russia2026-05-13
1009Spain2026-05-29
1010Canada2026-05-03
1011Germany2026-05-22
1012Japan2026-05-27
1013Canada2026-05-23
1014Argentina2026-05-15
1015Spain2026-05-17
1016France2026-05-21
1017Australia2026-05-11
1018France2026-06-01
1019India2026-05-20
1020Italy2026-05-19
1021Canada2026-05-07
1022France2026-05-09
1023Canada2026-05-05
1024United Kingdom2026-05-14
1025France2026-05-04
1026Italy2026-05-15
1027Canada2026-05-31
1028France2026-06-01
1029Japan2026-05-17
1030India2026-05-07
1031India2026-05-20
1032Italy2026-05-05
1033Italy2026-05-08
1034Spain2026-05-05
1035Italy2026-05-26
1036Italy2026-05-31
1037India2026-05-21
1038Canada2026-05-17
1039Argentina2026-05-12
1040Brazil2026-05-17
1041United Kingdom2026-05-03
1042United Kingdom2026-05-20
1043Italy2026-05-10
1044India2026-05-13
1045Brazil2026-05-27
1046Russia2026-05-08
1047Argentina2026-05-23
1048Canada2026-05-21
1049Brazil2026-05-19

On-Demand Data

NameIdCountryDate
Leon Oldroyd1000Argentina2026-05-03
Ricardo Gaucho1001Brazil2026-05-11
Kadeem Flosi1002Canada2026-05-29
Julie Stenseth1003India2026-05-23
Maria Marrier1004United Kingdom2026-05-31
Johnson Sergi1005Brazil2026-05-26
Aditya Kusko1006United Kingdom2026-05-10
Sinclair Waycott1007United Kingdom2026-05-14
James Butt1008Australia2026-05-18
Francesco Shinko1009United Kingdom2026-05-30
Johnson Sergi1010Russia2026-05-09
Kaitlin Ostrosky1011Brazil2026-05-19
Isabel Bowley1012France2026-05-05
Leja Caldarera1013Germany2026-05-06
Octavia Malet1014Canada2026-05-23
Aruna Figeroa1015France2026-05-27
Leja Caldarera1016Italy2026-06-01
Juan Wieser1017Spain2026-05-21
Greenwood Bolognia1018Russia2026-05-23
Izzy Garufi1019Japan2026-05-11
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
James ButtIndiaBernardo Dominic NEGOTIATION
Smith GlickUnited KingdomXuxue Feng QUALIFIED
Arvin AlbaresFranceOnyama Limba QUALIFIED
Nicolas IturbideRussiaStephen Shaw UNQUALIFIED
Smith GlickBrazilAmy Elsner QUALIFIED
Morrow RutaSpainIvan Magalhaes RENEWAL
Ashley DoeSpainIoni Bowcher QUALIFIED
Murillo MaletIndiaXuxue Feng RENEWAL
Claire TollnerUnited KingdomIvan Magalhaes NEGOTIATION
Chavez BriddickArgentinaIoni Bowcher PROPOSAL
Jeanfrancois VenereRussiaStephen Shaw NEW
Darci PoquetteAustraliaAsiya Javayant NEW
Munro FerenczFranceElwin Sharvill UNQUALIFIED
Rodrigues CampainAustraliaAnna Fali PROPOSAL
David DarakjyArgentinaIvan Magalhaes PROPOSAL
Morrow RutaUnited KingdomBernardo Dominic PROPOSAL
Jones VocelkaFranceAsiya Javayant RENEWAL
Chavez BriddickGermanyIvan Magalhaes QUALIFIED
Wickens NestleSpainAnna Fali NEW
Alejandro PerinIndiaIoni Bowcher QUALIFIED
Mayumi KolmetzBrazilBernardo Dominic NEGOTIATION
Cody SaylorsGermanyOnyama Limba NEW
Juan WieserFranceElwin Sharvill QUALIFIED
Munro FerenczArgentinaAsiya Javayant NEW
Tony FollerFranceAmy Elsner QUALIFIED
Munro FerenczFranceBernardo Dominic QUALIFIED
Faith GillianArgentinaBernardo Dominic NEW
James ButtBrazilElwin Sharvill PROPOSAL
Leon OldroydItalyBernardo Dominic UNQUALIFIED
Julie StensethAustraliaStephen Shaw RENEWAL
Emily WhobreyJapanBernardo Dominic QUALIFIED
Octavia MaletArgentinaAnna Fali UNQUALIFIED
Munro FerenczFranceXuxue Feng NEGOTIATION
Mayumi KolmetzItalyXuxue Feng RENEWAL
Cody SaylorsRussiaStephen Shaw QUALIFIED
Kadeem FlosiFranceAsiya Javayant RENEWAL
Leon OldroydSpainBernardo Dominic NEGOTIATION
Rodrigues CampainFranceAsiya Javayant RENEWAL
Leja CaldareraCanadaBernardo Dominic QUALIFIED
Ashley DoeFranceBernardo Dominic 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>