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
Ivar PaprockiAustraliaBernardo Dominic PROPOSAL
Mayumi KolmetzSpainBernardo Dominic UNQUALIFIED
Antonio CaudyGermanyElwin Sharvill PROPOSAL
Aditya KuskoSpainIvan Magalhaes NEGOTIATION
Salvatore StockhamJapanElwin Sharvill PROPOSAL
Jones VocelkaAustraliaAnna Fali PROPOSAL
Tony FollerAustraliaAsiya Javayant UNQUALIFIED
Stacey MacleadGermanyXuxue Feng NEGOTIATION
Greenwood BologniaUnited KingdomOnyama Limba QUALIFIED
Maria MarrierGermanyElwin Sharvill QUALIFIED
Costa DilliardFranceIoni Bowcher QUALIFIED
Ashley DoeAustraliaElwin Sharvill QUALIFIED
Tony FollerItalyAmy Elsner UNQUALIFIED
Tony FollerJapanStephen Shaw NEGOTIATION
Emily WhobreyAustraliaAmy Elsner RENEWAL
Julie StensethRussiaBernardo Dominic NEW
Johnson SergiFranceIvan Magalhaes NEGOTIATION
Juan WieserBrazilBernardo Dominic PROPOSAL
Emily WhobreyJapanStephen Shaw RENEWAL
Chavez BriddickRussiaElwin Sharvill QUALIFIED
Ivar PaprockiAustraliaAmy Elsner NEGOTIATION
Murillo MaletUnited KingdomElwin Sharvill NEGOTIATION
Misaki RoysterAustraliaBernardo Dominic NEGOTIATION
Cody SaylorsAustraliaIvan Magalhaes UNQUALIFIED
Antonio CaudyCanadaIvan Magalhaes RENEWAL
Julie StensethSpainBernardo Dominic NEGOTIATION
Ivar PaprockiCanadaStephen Shaw NEGOTIATION
Francesco ShinkoArgentinaIoni Bowcher PROPOSAL
Stacey MacleadJapanBernardo Dominic RENEWAL
Ivar PaprockiRussiaAsiya Javayant UNQUALIFIED
Jones VocelkaCanadaIoni Bowcher NEW
Emily WhobreyCanadaBernardo Dominic QUALIFIED
Jennifer AmigonSpainAsiya Javayant UNQUALIFIED
Murillo MaletAustraliaXuxue Feng QUALIFIED
Emily WhobreyBrazilIoni Bowcher PROPOSAL
Nicolas IturbideGermanyStephen Shaw PROPOSAL
Maisha RulapaughSpainBernardo Dominic NEW
David DarakjyBrazilAnna Fali UNQUALIFIED
Jones VocelkaItalyOnyama Limba UNQUALIFIED
Alejandro PerinCanadaElwin Sharvill PROPOSAL
Deepesh ChuiGermanyAnna Fali NEW
Kaitlin OstroskyCanadaStephen Shaw NEGOTIATION
Deepesh ChuiBrazilOnyama Limba UNQUALIFIED
Ivar PaprockiItalyIoni Bowcher NEW
Chavez BriddickJapanIoni Bowcher PROPOSAL
Maisha RulapaughRussiaAnna Fali PROPOSAL
Cody SaylorsBrazilXuxue Feng RENEWAL
Isabel BowleyUnited KingdomAnna Fali NEGOTIATION
Jennifer AmigonBrazilIoni Bowcher UNQUALIFIED
Costa DilliardRussiaAsiya Javayant PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Claire TollnerItalyBernardo Dominic PROPOSAL
Julie StensethJapanStephen Shaw NEGOTIATION
Cody SaylorsItalyElwin Sharvill NEGOTIATION
Juan WieserCanadaAsiya Javayant QUALIFIED
Francesco ShinkoCanadaStephen Shaw PROPOSAL
Maisha RulapaughFranceStephen Shaw NEW
Jennifer AmigonBrazilBernardo Dominic RENEWAL
Morrow RutaUnited KingdomStephen Shaw NEGOTIATION
Antonio CaudyCanadaElwin Sharvill QUALIFIED
Francesco ShinkoFranceStephen Shaw NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Leon OldroydBrazil2026-05-07Feiner Bros NEW8Stephen Shaw
1001Jones VocelkaUnited Kingdom2026-05-03King, Christopher A Esq PROPOSAL87Onyama Limba
1002Wickens NestleCanada2026-04-20Morlong Associates PROPOSAL17Bernardo Dominic
1003Julie StensethRussia2026-05-09Chanay, Jeffrey A Esq NEGOTIATION94Ivan Magalhaes
1004Izzy GarufiItaly2026-05-12Chapman, Ross E Esq UNQUALIFIED83Stephen Shaw
1005Nicolas IturbideRussia2026-04-17Printing Dimensions QUALIFIED93Ioni Bowcher
1006Julie StensethRussia2026-04-22Rangoni Of Florence NEGOTIATION71Asiya Javayant
1007Cody SaylorsUnited Kingdom2026-04-16Chemel, James L Cpa UNQUALIFIED36Onyama Limba
1008Jeanfrancois VenereJapan2026-04-16Buckley Miller Wright QUALIFIED25Bernardo Dominic
1009Adams MorascaJapan2026-05-10Chemel, James L Cpa QUALIFIED3Stephen Shaw
1010Deepesh ChuiBrazil2026-04-30Morlong Associates QUALIFIED20Ioni Bowcher
1011Emily WhobreyCanada2026-04-14Chemel, James L Cpa NEGOTIATION45Elwin Sharvill
1012Alejandro PerinFrance2026-04-19Dorl, James J Esq RENEWAL56Xuxue Feng
1013Isabel BowleyBrazil2026-05-06Feiner Bros QUALIFIED3Ivan Magalhaes
1014Ivar PaprockiSpain2026-04-28Buckley Miller Wright NEW99Ioni Bowcher
1015Jones VocelkaArgentina2026-04-16Chanay, Jeffrey A Esq NEGOTIATION12Stephen Shaw
1016Ashley DoeCanada2026-05-07Benton, John B Jr UNQUALIFIED61Ivan Magalhaes
1017Mayumi KolmetzCanada2026-04-27Rousseaux, Michael Esq PROPOSAL69Stephen Shaw
1018Greenwood BologniaJapan2026-05-03Commercial Press PROPOSAL30Xuxue Feng
1019Chavez BriddickAustralia2026-04-21Benton, John B Jr NEGOTIATION12Ivan Magalhaes
1020Emily WhobreyAustralia2026-05-10Rousseaux, Michael Esq RENEWAL58Amy Elsner
1021Sinclair WaycottItaly2026-04-26Benton, John B Jr PROPOSAL6Xuxue Feng
1022Aruna FigeroaBrazil2026-04-25Chapman, Ross E Esq NEW68Onyama Limba
1023Kaitlin OstroskyJapan2026-04-26Feltz Printing Service RENEWAL84Anna Fali
1024Stacey MacleadGermany2026-04-21Benton, John B Jr UNQUALIFIED67Onyama Limba
1025Leon OldroydRussia2026-05-06Feiner Bros QUALIFIED52Elwin Sharvill
1026Stacey MacleadUnited Kingdom2026-04-15Benton, John B Jr PROPOSAL16Amy Elsner
1027Wickens NestleSpain2026-04-30Feiner Bros RENEWAL13Asiya Javayant
1028Octavia MaletAustralia2026-04-19Printing Dimensions QUALIFIED97Elwin Sharvill
1029Jennifer AmigonFrance2026-05-06Rangoni Of Florence PROPOSAL7Elwin Sharvill
1030Munro FerenczJapan2026-05-06Buckley Miller Wright QUALIFIED8Elwin Sharvill
1031Clifford RimJapan2026-04-17Commercial Press PROPOSAL71Anna Fali
1032Greenwood BologniaBrazil2026-05-04Rangoni Of Florence NEW63Elwin Sharvill
1033Maisha RulapaughArgentina2026-04-28Rousseaux, Michael Esq NEW20Ivan Magalhaes
1034Antonio CaudyBrazil2026-04-25Buckley Miller Wright QUALIFIED63Bernardo Dominic
1035Darci PoquetteAustralia2026-05-04Benton, John B Jr UNQUALIFIED89Asiya Javayant
1036Munro FerenczFrance2026-05-01Dorl, James J Esq UNQUALIFIED29Elwin Sharvill
1037Chavez BriddickRussia2026-05-02Feiner Bros PROPOSAL36Ioni Bowcher
1038Arvin AlbaresSpain2026-05-05Feltz Printing Service QUALIFIED99Anna Fali
1039Jones VocelkaJapan2026-05-11Rangoni Of Florence RENEWAL38Bernardo Dominic
1040Isabel BowleySpain2026-05-07Commercial Press RENEWAL63Stephen Shaw
1041Salvatore StockhamArgentina2026-05-11Feiner Bros NEW49Onyama Limba
1042Julie StensethBrazil2026-05-04Chemel, James L Cpa NEGOTIATION4Anna Fali
1043Antonio CaudyCanada2026-05-03Printing Dimensions NEW24Xuxue Feng
1044Misaki RoysterJapan2026-05-03Rousseaux, Michael Esq PROPOSAL72Anna Fali
1045Rodrigues CampainBrazil2026-04-23Feiner Bros NEW36Stephen Shaw
1046Octavia MaletItaly2026-05-12Dorl, James J Esq PROPOSAL77Xuxue Feng
1047Aruna FigeroaGermany2026-04-27Chanay, Jeffrey A Esq PROPOSAL21Bernardo Dominic
1048Misaki RoysterRussia2026-05-03Rangoni Of Florence RENEWAL5Onyama Limba
1049Leja CaldareraAustralia2026-04-24Chanay, Jeffrey A Esq NEGOTIATION21Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Adams MorascaItalyIvan Magalhaes QUALIFIED
Ivar PaprockiBrazilAsiya Javayant RENEWAL
Mayumi KolmetzBrazilBernardo Dominic RENEWAL
Jones VocelkaItalyXuxue Feng NEGOTIATION
Julie StensethCanadaStephen Shaw QUALIFIED
Leja CaldareraUnited KingdomXuxue Feng NEGOTIATION
Adams MorascaSpainAsiya Javayant NEGOTIATION
Johnson SergiFranceAsiya Javayant QUALIFIED
David DarakjyFranceStephen Shaw PROPOSAL
Emily WhobreyJapanAsiya Javayant RENEWAL
Octavia MaletGermanyOnyama Limba QUALIFIED
Murillo MaletUnited KingdomIoni Bowcher PROPOSAL
Johnson SergiUnited KingdomAmy Elsner NEW
Ivar PaprockiUnited KingdomAnna Fali RENEWAL
Juan WieserCanadaAmy Elsner UNQUALIFIED
Costa DilliardIndiaStephen Shaw RENEWAL
Tony FollerAustraliaXuxue Feng NEW
Ivar PaprockiGermanyIvan Magalhaes QUALIFIED
Aika InouyeSpainAmy Elsner RENEWAL
Stacey MacleadSpainOnyama Limba RENEWAL
Smith GlickRussiaBernardo Dominic UNQUALIFIED
Octavia MaletItalyElwin Sharvill NEW
Kaitlin OstroskyBrazilOnyama Limba QUALIFIED
Smith GlickJapanAmy Elsner NEGOTIATION
James ButtFranceAnna Fali PROPOSAL
Isabel BowleyUnited KingdomAmy Elsner QUALIFIED
Julie StensethUnited KingdomXuxue Feng NEGOTIATION
Leja CaldareraItalyElwin Sharvill PROPOSAL
Alejandro PerinUnited KingdomOnyama Limba NEGOTIATION
Clifford RimItalyAsiya Javayant NEW
Tony FollerSpainAnna Fali RENEWAL
Mujtaba NickaCanadaAsiya Javayant PROPOSAL
Leja CaldareraItalyIoni Bowcher NEGOTIATION
Claire TollnerJapanStephen Shaw QUALIFIED
Francesco ShinkoAustraliaAnna Fali PROPOSAL
Leon OldroydIndiaAsiya Javayant RENEWAL
Aruna FigeroaRussiaIoni Bowcher NEGOTIATION
Isabel BowleyUnited KingdomXuxue Feng UNQUALIFIED
Murillo MaletRussiaElwin Sharvill QUALIFIED
Julie StensethItalyAsiya Javayant NEGOTIATION
Jefferson SchemmerCanadaStephen Shaw RENEWAL
Aditya KuskoJapanStephen Shaw UNQUALIFIED
Claire TollnerArgentinaAmy Elsner NEGOTIATION
Jones VocelkaIndiaElwin Sharvill RENEWAL
Francesco ShinkoBrazilIvan Magalhaes RENEWAL
Leja CaldareraUnited KingdomStephen Shaw NEGOTIATION
Silvio SlusarskiCanadaIoni Bowcher QUALIFIED
Johnson SergiGermanyAnna Fali QUALIFIED
Silvio SlusarskiCanadaElwin Sharvill PROPOSAL
Isabel BowleySpainIoni Bowcher QUALIFIED
Frozen Columns
Name
Julie Stenseth
Smith Glick
Adams Morasca
Alejandro Perin
Chavez Briddick
Francesco Shinko
Tony Foller
Faith Gillian
Smith Glick
Ricardo Gaucho
Mujtaba Nicka
Isabel Bowley
Salvatore Stockham
Juan Wieser
Chavez Briddick
Ivar Paprocki
Leja Caldarera
Arvin Albares
Ivar Paprocki
Costa Dilliard
Alejandro Perin
Jeanfrancois Venere
Octavia Malet
Costa Dilliard
Julie Stenseth
Leon Oldroyd
Jones Vocelka
Darci Poquette
Mayumi Kolmetz
Smith Glick
Octavia Malet
Ashley Doe
Nicolas Iturbide
Munro Ferencz
Jones Vocelka
Leon Oldroyd
Francesco Shinko
Deepesh Chui
Leja Caldarera
Darci Poquette
Arvin Albares
Alejandro Perin
Rodrigues Campain
Aditya Kusko
Jennifer Amigon
Faith Gillian
Maria Marrier
Munro Ferencz
Octavia Malet
Faith Gillian
IdCountryDate
1000India2026-04-25
1001Italy2026-05-05
1002Russia2026-04-26
1003Russia2026-04-29
1004Brazil2026-05-10
1005Spain2026-04-20
1006Spain2026-05-02
1007Argentina2026-05-08
1008Italy2026-04-25
1009Russia2026-05-08
1010Spain2026-05-03
1011Germany2026-05-05
1012United Kingdom2026-04-16
1013United Kingdom2026-05-05
1014Australia2026-04-18
1015Australia2026-04-16
1016Spain2026-04-18
1017Russia2026-05-07
1018Argentina2026-04-23
1019United Kingdom2026-04-18
1020India2026-04-25
1021Italy2026-04-30
1022France2026-04-22
1023Germany2026-05-02
1024United Kingdom2026-04-28
1025France2026-05-10
1026United Kingdom2026-04-18
1027Canada2026-04-26
1028Australia2026-04-13
1029Russia2026-04-25
1030Japan2026-05-07
1031France2026-05-05
1032Spain2026-04-30
1033Italy2026-04-27
1034India2026-04-13
1035Brazil2026-04-21
1036United Kingdom2026-04-13
1037Russia2026-04-30
1038Spain2026-05-09
1039Canada2026-04-14
1040Brazil2026-05-05
1041Australia2026-04-21
1042Spain2026-05-08
1043United Kingdom2026-04-25
1044United Kingdom2026-05-03
1045Canada2026-04-20
1046Japan2026-04-18
1047Russia2026-04-16
1048Germany2026-04-19
1049Argentina2026-04-18

On-Demand Data

NameIdCountryDate
Francesco Shinko1000France2026-04-26
Jones Vocelka1001Italy2026-05-04
Stacey Maclead1002Brazil2026-05-10
Salvatore Stockham1003Japan2026-05-08
Jones Vocelka1004India2026-04-13
David Darakjy1005France2026-04-28
Kadeem Flosi1006Japan2026-04-19
Chavez Briddick1007Argentina2026-05-04
Ricardo Gaucho1008Australia2026-04-14
Tony Foller1009Argentina2026-05-02
Cody Saylors1010Canada2026-04-21
Julie Stenseth1011Japan2026-04-28
Wickens Nestle1012Brazil2026-04-25
Greenwood Bolognia1013Russia2026-05-01
Munro Ferencz1014Australia2026-05-08
Stacey Maclead1015United Kingdom2026-05-07
Octavia Malet1016Japan2026-04-13
Ashley Doe1017Germany2026-04-17
Mayumi Kolmetz1018Canada2026-04-13
Kadeem Flosi1019Argentina2026-04-13
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Munro FerenczSpainBernardo Dominic NEGOTIATION
Aruna FigeroaJapanAnna Fali NEW
Silvio SlusarskiRussiaAnna Fali QUALIFIED
Greenwood BologniaSpainAnna Fali RENEWAL
Salvatore StockhamArgentinaAsiya Javayant RENEWAL
Misaki RoysterSpainIvan Magalhaes NEGOTIATION
Costa DilliardUnited KingdomXuxue Feng QUALIFIED
Jeanfrancois VenereBrazilIoni Bowcher NEGOTIATION
Leja CaldareraItalyElwin Sharvill QUALIFIED
Julie StensethFranceStephen Shaw NEW
Kadeem FlosiAustraliaOnyama Limba UNQUALIFIED
Leja CaldareraSpainAsiya Javayant UNQUALIFIED
Misaki RoysterFranceOnyama Limba UNQUALIFIED
Johnson SergiAustraliaElwin Sharvill RENEWAL
David DarakjyUnited KingdomOnyama Limba NEGOTIATION
Claire TollnerUnited KingdomIvan Magalhaes QUALIFIED
Leon OldroydGermanyStephen Shaw NEW
Costa DilliardAustraliaElwin Sharvill NEW
Mayumi KolmetzIndiaIoni Bowcher NEGOTIATION
Aditya KuskoAustraliaOnyama Limba RENEWAL
Tony FollerGermanyAsiya Javayant PROPOSAL
Octavia MaletBrazilIvan Magalhaes RENEWAL
Munro FerenczSpainOnyama Limba QUALIFIED
Francesco ShinkoGermanyIoni Bowcher NEW
Darci PoquetteSpainStephen Shaw UNQUALIFIED
Deepesh ChuiJapanAnna Fali RENEWAL
Stacey MacleadBrazilAsiya Javayant PROPOSAL
Stacey MacleadIndiaStephen Shaw NEGOTIATION
Leon OldroydGermanyIvan Magalhaes UNQUALIFIED
Johnson SergiBrazilBernardo Dominic PROPOSAL
Kaitlin OstroskyGermanyAmy Elsner RENEWAL
Francesco ShinkoUnited KingdomXuxue Feng NEGOTIATION
Faith GillianItalyAmy Elsner NEW
Leon OldroydSpainBernardo Dominic NEGOTIATION
Chavez BriddickArgentinaXuxue Feng NEW
Johnson SergiAustraliaStephen Shaw NEGOTIATION
Morrow RutaRussiaIvan Magalhaes PROPOSAL
Silvio SlusarskiJapanAsiya Javayant UNQUALIFIED
Juan WieserGermanyBernardo Dominic UNQUALIFIED
Ashley DoeGermanyIoni Bowcher 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>