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
Jefferson SchemmerBrazilStephen Shaw QUALIFIED
Arvin AlbaresFranceOnyama Limba UNQUALIFIED
Chavez BriddickCanadaIoni Bowcher NEGOTIATION
Maria MarrierAustraliaXuxue Feng UNQUALIFIED
Greenwood BologniaIndiaOnyama Limba UNQUALIFIED
Wickens NestleIndiaIvan Magalhaes PROPOSAL
Antonio CaudySpainIoni Bowcher UNQUALIFIED
Aika InouyeItalyBernardo Dominic QUALIFIED
Cody SaylorsUnited KingdomElwin Sharvill NEGOTIATION
David DarakjyFranceElwin Sharvill QUALIFIED
Jones VocelkaArgentinaIoni Bowcher RENEWAL
David DarakjyIndiaElwin Sharvill PROPOSAL
Sinclair WaycottRussiaStephen Shaw RENEWAL
Ashley DoeSpainStephen Shaw UNQUALIFIED
Misaki RoysterAustraliaIvan Magalhaes NEGOTIATION
Adams MorascaGermanyAnna Fali NEGOTIATION
Julie StensethJapanBernardo Dominic UNQUALIFIED
Adams MorascaJapanBernardo Dominic PROPOSAL
Aditya KuskoAustraliaIoni Bowcher PROPOSAL
Greenwood BologniaArgentinaOnyama Limba QUALIFIED
Jennifer AmigonSpainIoni Bowcher NEW
Ashley DoeUnited KingdomXuxue Feng NEW
Maria MarrierGermanyAnna Fali NEW
Leja CaldareraUnited KingdomAsiya Javayant NEGOTIATION
Aditya KuskoAustraliaBernardo Dominic PROPOSAL
Rodrigues CampainAustraliaAsiya Javayant PROPOSAL
Chavez BriddickFranceStephen Shaw RENEWAL
Deepesh ChuiRussiaOnyama Limba PROPOSAL
Tony FollerItalyIoni Bowcher UNQUALIFIED
Maisha RulapaughArgentinaIvan Magalhaes QUALIFIED
Chavez BriddickFranceIoni Bowcher NEGOTIATION
Ashley DoeIndiaIvan Magalhaes NEW
Izzy GarufiRussiaIvan Magalhaes NEW
Claire TollnerAustraliaIoni Bowcher QUALIFIED
David DarakjyRussiaAmy Elsner PROPOSAL
Mayumi KolmetzBrazilAsiya Javayant PROPOSAL
Silvio SlusarskiJapanElwin Sharvill RENEWAL
Aruna FigeroaIndiaAnna Fali UNQUALIFIED
Maisha RulapaughSpainStephen Shaw QUALIFIED
Misaki RoysterGermanyStephen Shaw NEW
Cody SaylorsGermanyOnyama Limba QUALIFIED
Sinclair WaycottFranceElwin Sharvill UNQUALIFIED
James ButtSpainAmy Elsner PROPOSAL
Cody SaylorsJapanStephen Shaw RENEWAL
Jefferson SchemmerJapanBernardo Dominic QUALIFIED
Leon OldroydFranceElwin Sharvill NEGOTIATION
David DarakjySpainElwin Sharvill QUALIFIED
Misaki RoysterIndiaIoni Bowcher NEW
Maria MarrierArgentinaXuxue Feng QUALIFIED
Francesco ShinkoRussiaElwin Sharvill NEW
Horizontal
NameCountryRepresentativeStatus
Costa DilliardFranceBernardo Dominic PROPOSAL
Jones VocelkaItalyBernardo Dominic RENEWAL
Antonio CaudyBrazilElwin Sharvill NEW
Sinclair WaycottAustraliaAmy Elsner NEW
Aditya KuskoBrazilAmy Elsner NEW
Jefferson SchemmerCanadaAsiya Javayant NEGOTIATION
Leon OldroydRussiaStephen Shaw NEGOTIATION
Claire TollnerItalyOnyama Limba QUALIFIED
Izzy GarufiArgentinaAsiya Javayant QUALIFIED
Jones VocelkaGermanyIoni Bowcher UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Izzy GarufiRussia2026-03-28Truhlar And Truhlar Attys UNQUALIFIED58Anna Fali
1001Murillo MaletJapan2026-04-19Truhlar And Truhlar Attys UNQUALIFIED2Bernardo Dominic
1002Arvin AlbaresRussia2026-04-10Feltz Printing Service NEW37Stephen Shaw
1003Mayumi KolmetzRussia2026-04-15Benton, John B Jr RENEWAL76Xuxue Feng
1004Francesco ShinkoGermany2026-04-04King, Christopher A Esq NEGOTIATION34Xuxue Feng
1005Aruna FigeroaIndia2026-04-10King, Christopher A Esq NEW48Ivan Magalhaes
1006Darci PoquetteSpain2026-03-28Benton, John B Jr NEW81Asiya Javayant
1007Stacey MacleadSpain2026-04-25Commercial Press UNQUALIFIED8Bernardo Dominic
1008Rodrigues CampainRussia2026-04-06Rousseaux, Michael Esq NEGOTIATION84Ioni Bowcher
1009Wickens NestleUnited Kingdom2026-04-07Buckley Miller Wright UNQUALIFIED23Xuxue Feng
1010Alejandro PerinAustralia2026-04-24Truhlar And Truhlar Attys PROPOSAL52Anna Fali
1011Leja CaldareraGermany2026-04-16Rousseaux, Michael Esq NEGOTIATION5Bernardo Dominic
1012Clifford RimBrazil2026-04-13Chanay, Jeffrey A Esq UNQUALIFIED66Amy Elsner
1013Darci PoquetteIndia2026-03-29Benton, John B Jr PROPOSAL10Ivan Magalhaes
1014Johnson SergiArgentina2026-04-05Commercial Press QUALIFIED80Ivan Magalhaes
1015Francesco ShinkoJapan2026-04-17Truhlar And Truhlar Attys NEGOTIATION15Onyama Limba
1016Aditya KuskoItaly2026-04-19Feiner Bros RENEWAL19Asiya Javayant
1017Silvio SlusarskiJapan2026-03-28Feltz Printing Service RENEWAL48Elwin Sharvill
1018Alejandro PerinBrazil2026-04-06Truhlar And Truhlar Attys NEW88Ioni Bowcher
1019Greenwood BologniaFrance2026-04-18Truhlar And Truhlar Attys PROPOSAL26Ivan Magalhaes
1020Silvio SlusarskiGermany2026-03-29Feiner Bros RENEWAL58Ioni Bowcher
1021Jones VocelkaBrazil2026-04-14Truhlar And Truhlar Attys NEGOTIATION82Elwin Sharvill
1022Isabel BowleyCanada2026-04-21Dorl, James J Esq UNQUALIFIED50Amy Elsner
1023Sinclair WaycottItaly2026-04-03King, Christopher A Esq NEGOTIATION83Stephen Shaw
1024Izzy GarufiRussia2026-04-03Dorl, James J Esq QUALIFIED24Ivan Magalhaes
1025Aruna FigeroaAustralia2026-04-20Benton, John B Jr NEW6Ioni Bowcher
1026Aditya KuskoArgentina2026-04-07Chemel, James L Cpa RENEWAL60Ioni Bowcher
1027Johnson SergiFrance2026-03-29Benton, John B Jr QUALIFIED97Asiya Javayant
1028Salvatore StockhamAustralia2026-04-24Benton, John B Jr NEGOTIATION18Bernardo Dominic
1029Morrow RutaArgentina2026-04-23Rangoni Of Florence UNQUALIFIED57Stephen Shaw
1030Chavez BriddickUnited Kingdom2026-04-16Rangoni Of Florence UNQUALIFIED20Onyama Limba
1031Adams MorascaGermany2026-03-27Chanay, Jeffrey A Esq NEGOTIATION26Amy Elsner
1032Francesco ShinkoRussia2026-04-03Chemel, James L Cpa PROPOSAL29Ivan Magalhaes
1033Morrow RutaRussia2026-04-19Buckley Miller Wright PROPOSAL69Elwin Sharvill
1034Adams MorascaAustralia2026-04-02Morlong Associates NEGOTIATION0Stephen Shaw
1035Greenwood BologniaIndia2026-04-01Buckley Miller Wright NEGOTIATION63Ivan Magalhaes
1036Juan WieserGermany2026-04-12Chemel, James L Cpa PROPOSAL36Elwin Sharvill
1037Isabel BowleyIndia2026-04-12Morlong Associates PROPOSAL30Bernardo Dominic
1038Juan WieserItaly2026-04-23Morlong Associates NEW49Onyama Limba
1039Mujtaba NickaBrazil2026-04-02King, Christopher A Esq PROPOSAL84Xuxue Feng
1040Ricardo GauchoItaly2026-04-01Feiner Bros NEGOTIATION38Xuxue Feng
1041Kaitlin OstroskyGermany2026-04-06Feiner Bros NEGOTIATION38Elwin Sharvill
1042Ivar PaprockiSpain2026-03-29Buckley Miller Wright QUALIFIED7Amy Elsner
1043Maisha RulapaughGermany2026-04-21Printing Dimensions PROPOSAL33Ioni Bowcher
1044Rodrigues CampainItaly2026-04-22Benton, John B Jr QUALIFIED97Elwin Sharvill
1045Smith GlickIndia2026-04-24Rangoni Of Florence RENEWAL52Xuxue Feng
1046Aruna FigeroaBrazil2026-03-31Truhlar And Truhlar Attys QUALIFIED44Elwin Sharvill
1047Leon OldroydUnited Kingdom2026-04-25Dorl, James J Esq QUALIFIED16Stephen Shaw
1048Deepesh ChuiArgentina2026-04-17Dorl, James J Esq PROPOSAL56Anna Fali
1049Aditya KuskoFrance2026-04-14Chanay, Jeffrey A Esq PROPOSAL68Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Julie StensethFranceIvan Magalhaes NEGOTIATION
Murillo MaletBrazilAnna Fali UNQUALIFIED
Rodrigues CampainJapanIvan Magalhaes PROPOSAL
Aruna FigeroaItalyAsiya Javayant UNQUALIFIED
Antonio CaudyUnited KingdomAnna Fali UNQUALIFIED
Mujtaba NickaJapanStephen Shaw QUALIFIED
Ivar PaprockiAustraliaXuxue Feng NEW
Isabel BowleyAustraliaAsiya Javayant NEW
Mayumi KolmetzArgentinaIvan Magalhaes NEGOTIATION
Mujtaba NickaGermanyAsiya Javayant NEW
Johnson SergiBrazilOnyama Limba PROPOSAL
Jones VocelkaAustraliaIoni Bowcher RENEWAL
James ButtSpainAmy Elsner RENEWAL
Silvio SlusarskiSpainXuxue Feng NEGOTIATION
Maria MarrierGermanyElwin Sharvill PROPOSAL
Stacey MacleadBrazilIvan Magalhaes QUALIFIED
Murillo MaletAustraliaStephen Shaw NEW
Stacey MacleadGermanyXuxue Feng RENEWAL
Adams MorascaBrazilBernardo Dominic UNQUALIFIED
Jennifer AmigonUnited KingdomXuxue Feng RENEWAL
Francesco ShinkoFranceAsiya Javayant PROPOSAL
Antonio CaudyUnited KingdomAnna Fali UNQUALIFIED
Ricardo GauchoRussiaBernardo Dominic PROPOSAL
Arvin AlbaresCanadaOnyama Limba QUALIFIED
Darci PoquetteCanadaStephen Shaw PROPOSAL
Claire TollnerCanadaOnyama Limba QUALIFIED
Adams MorascaCanadaStephen Shaw NEGOTIATION
Costa DilliardBrazilAmy Elsner PROPOSAL
Faith GillianUnited KingdomBernardo Dominic QUALIFIED
Greenwood BologniaGermanyXuxue Feng QUALIFIED
Kadeem FlosiRussiaXuxue Feng NEGOTIATION
Jennifer AmigonFranceXuxue Feng NEGOTIATION
Francesco ShinkoRussiaStephen Shaw UNQUALIFIED
David DarakjyItalyIoni Bowcher PROPOSAL
Faith GillianBrazilStephen Shaw NEGOTIATION
Aruna FigeroaAustraliaElwin Sharvill PROPOSAL
Darci PoquetteItalyXuxue Feng PROPOSAL
Leon OldroydFranceIvan Magalhaes PROPOSAL
Chavez BriddickSpainIoni Bowcher RENEWAL
Murillo MaletBrazilXuxue Feng NEGOTIATION
Alejandro PerinArgentinaXuxue Feng RENEWAL
James ButtArgentinaAsiya Javayant RENEWAL
Claire TollnerGermanyIoni Bowcher UNQUALIFIED
Deepesh ChuiArgentinaIvan Magalhaes NEW
Ivar PaprockiItalyXuxue Feng PROPOSAL
Jennifer AmigonCanadaAnna Fali NEW
Clifford RimRussiaBernardo Dominic RENEWAL
Faith GillianGermanyAmy Elsner UNQUALIFIED
Kadeem FlosiJapanIoni Bowcher NEW
Misaki RoysterIndiaStephen Shaw RENEWAL
Frozen Columns
Name
Isabel Bowley
Mujtaba Nicka
Leja Caldarera
Smith Glick
Murillo Malet
Aditya Kusko
Octavia Malet
Clifford Rim
Jones Vocelka
Jennifer Amigon
Nicolas Iturbide
Kaitlin Ostrosky
Jefferson Schemmer
Smith Glick
Mayumi Kolmetz
Cody Saylors
Emily Whobrey
Claire Tollner
Emily Whobrey
Octavia Malet
Nicolas Iturbide
Jennifer Amigon
Chavez Briddick
Julie Stenseth
Francesco Shinko
Alejandro Perin
Isabel Bowley
Tony Foller
Maisha Rulapaugh
Mayumi Kolmetz
David Darakjy
Emily Whobrey
Julie Stenseth
Munro Ferencz
Wickens Nestle
Rodrigues Campain
Nicolas Iturbide
Jennifer Amigon
Francesco Shinko
James Butt
Alejandro Perin
Alejandro Perin
Nicolas Iturbide
Jones Vocelka
Juan Wieser
Smith Glick
Maisha Rulapaugh
Octavia Malet
Juan Wieser
David Darakjy
IdCountryDate
1000Spain2026-04-16
1001United Kingdom2026-04-15
1002India2026-04-02
1003Italy2026-04-23
1004Australia2026-04-25
1005Spain2026-04-20
1006Russia2026-04-10
1007Argentina2026-04-22
1008Australia2026-04-22
1009Australia2026-04-14
1010Australia2026-04-15
1011Australia2026-03-27
1012United Kingdom2026-03-29
1013United Kingdom2026-04-22
1014Australia2026-04-02
1015United Kingdom2026-04-22
1016Spain2026-04-24
1017United Kingdom2026-04-20
1018United Kingdom2026-04-14
1019Brazil2026-04-15
1020Brazil2026-04-22
1021Australia2026-04-25
1022Canada2026-04-12
1023United Kingdom2026-04-20
1024Germany2026-04-17
1025Japan2026-04-05
1026Spain2026-04-10
1027Australia2026-04-03
1028France2026-04-12
1029India2026-04-03
1030Japan2026-03-30
1031Germany2026-04-24
1032Canada2026-04-08
1033Germany2026-04-11
1034Germany2026-04-07
1035Canada2026-04-21
1036France2026-04-13
1037Spain2026-04-15
1038United Kingdom2026-04-23
1039Spain2026-04-15
1040France2026-04-16
1041United Kingdom2026-03-28
1042Canada2026-04-18
1043Australia2026-03-27
1044Argentina2026-04-09
1045Australia2026-04-19
1046France2026-04-19
1047India2026-04-22
1048Russia2026-04-12
1049Japan2026-04-01

On-Demand Data

NameIdCountryDate
Wickens Nestle1000France2026-04-22
Misaki Royster1001Italy2026-04-17
Octavia Malet1002Russia2026-04-25
Kadeem Flosi1003France2026-04-05
Jennifer Amigon1004Canada2026-03-29
Deepesh Chui1005Canada2026-03-29
Jeanfrancois Venere1006Germany2026-04-19
Juan Wieser1007Spain2026-04-13
Chavez Briddick1008Italy2026-04-02
Isabel Bowley1009India2026-03-27
James Butt1010India2026-03-30
Antonio Caudy1011Russia2026-04-15
Faith Gillian1012Japan2026-03-28
Costa Dilliard1013France2026-04-23
Smith Glick1014Spain2026-04-08
Sinclair Waycott1015India2026-03-29
Morrow Ruta1016United Kingdom2026-04-10
Kaitlin Ostrosky1017Brazil2026-04-25
Greenwood Bolognia1018Russia2026-04-08
Kadeem Flosi1019Canada2026-04-10
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Kadeem FlosiItalyElwin Sharvill RENEWAL
Leja CaldareraSpainElwin Sharvill NEW
Darci PoquetteGermanyIoni Bowcher NEW
Costa DilliardUnited KingdomStephen Shaw RENEWAL
Stacey MacleadAustraliaAnna Fali UNQUALIFIED
Ivar PaprockiSpainIvan Magalhaes UNQUALIFIED
Isabel BowleySpainAnna Fali QUALIFIED
Faith GillianJapanAnna Fali NEGOTIATION
Leon OldroydIndiaXuxue Feng PROPOSAL
Juan WieserBrazilIoni Bowcher RENEWAL
Johnson SergiUnited KingdomAnna Fali NEGOTIATION
Antonio CaudyGermanyAsiya Javayant NEW
Costa DilliardCanadaXuxue Feng NEGOTIATION
Claire TollnerIndiaXuxue Feng PROPOSAL
Octavia MaletSpainAnna Fali UNQUALIFIED
Maria MarrierBrazilXuxue Feng RENEWAL
Smith GlickCanadaAmy Elsner PROPOSAL
Kaitlin OstroskyArgentinaIvan Magalhaes NEGOTIATION
Sinclair WaycottIndiaOnyama Limba NEW
Jennifer AmigonUnited KingdomIvan Magalhaes UNQUALIFIED
Ivar PaprockiFranceBernardo Dominic RENEWAL
Murillo MaletRussiaStephen Shaw PROPOSAL
Misaki RoysterUnited KingdomOnyama Limba QUALIFIED
Leon OldroydSpainAsiya Javayant NEW
Jones VocelkaGermanyBernardo Dominic RENEWAL
Johnson SergiRussiaAmy Elsner NEW
Darci PoquetteBrazilOnyama Limba RENEWAL
James ButtJapanBernardo Dominic QUALIFIED
Rodrigues CampainCanadaElwin Sharvill UNQUALIFIED
Misaki RoysterAustraliaElwin Sharvill RENEWAL
Silvio SlusarskiIndiaStephen Shaw NEW
Emily WhobreySpainAsiya Javayant PROPOSAL
James ButtItalyStephen Shaw UNQUALIFIED
Morrow RutaCanadaAmy Elsner QUALIFIED
Mayumi KolmetzAustraliaBernardo Dominic NEGOTIATION
Salvatore StockhamBrazilAsiya Javayant NEGOTIATION
Wickens NestleArgentinaAsiya Javayant PROPOSAL
Claire TollnerFranceOnyama Limba QUALIFIED
Jones VocelkaUnited KingdomIoni Bowcher NEGOTIATION
Leja CaldareraUnited KingdomAmy Elsner 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>