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 PaprockiAustraliaIvan Magalhaes RENEWAL
Costa DilliardArgentinaAsiya Javayant PROPOSAL
Munro FerenczAustraliaXuxue Feng RENEWAL
James ButtGermanyIoni Bowcher NEW
Kadeem FlosiFranceElwin Sharvill PROPOSAL
Mujtaba NickaFranceIoni Bowcher PROPOSAL
Faith GillianArgentinaAsiya Javayant NEW
Sinclair WaycottArgentinaIvan Magalhaes UNQUALIFIED
Aika InouyeFranceOnyama Limba UNQUALIFIED
Wickens NestleItalyBernardo Dominic NEGOTIATION
Ricardo GauchoFranceAsiya Javayant UNQUALIFIED
Maisha RulapaughArgentinaStephen Shaw UNQUALIFIED
Izzy GarufiCanadaStephen Shaw UNQUALIFIED
Francesco ShinkoJapanXuxue Feng NEGOTIATION
Antonio CaudyArgentinaOnyama Limba PROPOSAL
Jennifer AmigonSpainElwin Sharvill QUALIFIED
Maisha RulapaughRussiaAsiya Javayant QUALIFIED
Aika InouyeSpainIoni Bowcher RENEWAL
Ricardo GauchoJapanBernardo Dominic RENEWAL
Darci PoquetteIndiaElwin Sharvill QUALIFIED
Maria MarrierAustraliaIvan Magalhaes UNQUALIFIED
Isabel BowleyItalyIoni Bowcher RENEWAL
Mayumi KolmetzAustraliaIoni Bowcher NEGOTIATION
Salvatore StockhamSpainElwin Sharvill UNQUALIFIED
Jeanfrancois VenereIndiaOnyama Limba RENEWAL
Wickens NestleBrazilIvan Magalhaes NEW
Isabel BowleyUnited KingdomOnyama Limba NEW
Julie StensethJapanOnyama Limba UNQUALIFIED
Greenwood BologniaBrazilElwin Sharvill PROPOSAL
Silvio SlusarskiSpainAmy Elsner QUALIFIED
Leja CaldareraJapanIoni Bowcher RENEWAL
Antonio CaudyFranceElwin Sharvill RENEWAL
Alejandro PerinIndiaAnna Fali NEGOTIATION
James ButtItalyElwin Sharvill QUALIFIED
Francesco ShinkoArgentinaXuxue Feng UNQUALIFIED
James ButtFranceStephen Shaw PROPOSAL
Leon OldroydRussiaXuxue Feng QUALIFIED
Arvin AlbaresJapanElwin Sharvill RENEWAL
Johnson SergiFranceOnyama Limba NEGOTIATION
Ivar PaprockiUnited KingdomIvan Magalhaes QUALIFIED
Smith GlickCanadaAmy Elsner NEGOTIATION
Smith GlickGermanyAnna Fali UNQUALIFIED
Maisha RulapaughUnited KingdomIoni Bowcher UNQUALIFIED
James ButtBrazilIoni Bowcher UNQUALIFIED
Jefferson SchemmerBrazilAsiya Javayant PROPOSAL
Misaki RoysterUnited KingdomStephen Shaw RENEWAL
Ivar PaprockiFranceOnyama Limba NEGOTIATION
Mujtaba NickaAustraliaAmy Elsner PROPOSAL
Morrow RutaIndiaBernardo Dominic RENEWAL
Clifford RimFranceAsiya Javayant RENEWAL
Horizontal
NameCountryRepresentativeStatus
David DarakjyUnited KingdomElwin Sharvill PROPOSAL
Alejandro PerinItalyElwin Sharvill RENEWAL
Jones VocelkaItalyIoni Bowcher QUALIFIED
Aditya KuskoFranceElwin Sharvill NEW
Ashley DoeCanadaXuxue Feng RENEWAL
Arvin AlbaresRussiaAsiya Javayant QUALIFIED
Misaki RoysterSpainOnyama Limba RENEWAL
Morrow RutaAustraliaXuxue Feng RENEWAL
Salvatore StockhamBrazilIvan Magalhaes PROPOSAL
Darci PoquetteAustraliaElwin Sharvill RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Silvio SlusarskiAustralia2026-05-16Dorl, James J Esq RENEWAL6Amy Elsner
1001Julie StensethUnited Kingdom2026-05-12Chanay, Jeffrey A Esq UNQUALIFIED3Ioni Bowcher
1002Octavia MaletJapan2026-05-13Chapman, Ross E Esq PROPOSAL36Bernardo Dominic
1003Maria MarrierAustralia2026-05-16Feltz Printing Service UNQUALIFIED41Ivan Magalhaes
1004Alejandro PerinSpain2026-05-07Dorl, James J Esq PROPOSAL16Ioni Bowcher
1005Murillo MaletRussia2026-05-25Truhlar And Truhlar Attys NEW10Anna Fali
1006Wickens NestleItaly2026-05-29Feltz Printing Service NEGOTIATION95Amy Elsner
1007Izzy GarufiRussia2026-05-13Printing Dimensions RENEWAL25Bernardo Dominic
1008Francesco ShinkoIndia2026-05-09Benton, John B Jr RENEWAL93Anna Fali
1009Tony FollerCanada2026-05-14Truhlar And Truhlar Attys RENEWAL12Amy Elsner
1010Francesco ShinkoBrazil2026-05-14Feiner Bros NEGOTIATION68Ioni Bowcher
1011Costa DilliardArgentina2026-06-04Printing Dimensions UNQUALIFIED89Elwin Sharvill
1012Stacey MacleadFrance2026-06-04Feltz Printing Service NEW57Anna Fali
1013Antonio CaudyCanada2026-05-25Buckley Miller Wright RENEWAL53Ioni Bowcher
1014Kadeem FlosiBrazil2026-05-13Rangoni Of Florence RENEWAL50Ioni Bowcher
1015Leon OldroydBrazil2026-05-19Truhlar And Truhlar Attys PROPOSAL76Stephen Shaw
1016Nicolas IturbideIndia2026-05-29King, Christopher A Esq NEGOTIATION59Elwin Sharvill
1017Leon OldroydFrance2026-06-03Chemel, James L Cpa QUALIFIED21Elwin Sharvill
1018Octavia MaletCanada2026-05-26King, Christopher A Esq NEW80Ioni Bowcher
1019Isabel BowleyRussia2026-05-12Rousseaux, Michael Esq PROPOSAL5Stephen Shaw
1020Claire TollnerItaly2026-05-27Truhlar And Truhlar Attys PROPOSAL92Anna Fali
1021Kaitlin OstroskyUnited Kingdom2026-05-18Printing Dimensions RENEWAL34Xuxue Feng
1022Ivar PaprockiAustralia2026-05-22Benton, John B Jr RENEWAL62Amy Elsner
1023Octavia MaletGermany2026-05-20Chapman, Ross E Esq UNQUALIFIED41Ioni Bowcher
1024Morrow RutaIndia2026-05-18Rangoni Of Florence NEGOTIATION11Ioni Bowcher
1025Johnson SergiIndia2026-05-09Morlong Associates UNQUALIFIED85Ivan Magalhaes
1026Alejandro PerinUnited Kingdom2026-05-21Morlong Associates QUALIFIED48Ivan Magalhaes
1027Munro FerenczCanada2026-05-26Rousseaux, Michael Esq RENEWAL91Anna Fali
1028Silvio SlusarskiJapan2026-05-31Feiner Bros UNQUALIFIED10Stephen Shaw
1029Aditya KuskoRussia2026-05-21Chanay, Jeffrey A Esq RENEWAL57Elwin Sharvill
1030Jennifer AmigonArgentina2026-05-07King, Christopher A Esq NEW44Bernardo Dominic
1031Emily WhobreyGermany2026-05-30Rousseaux, Michael Esq RENEWAL40Elwin Sharvill
1032Misaki RoysterUnited Kingdom2026-05-11Chanay, Jeffrey A Esq NEGOTIATION0Anna Fali
1033Leon OldroydCanada2026-05-13Truhlar And Truhlar Attys UNQUALIFIED2Bernardo Dominic
1034Antonio CaudyJapan2026-05-30Printing Dimensions NEW63Xuxue Feng
1035Chavez BriddickAustralia2026-05-07Buckley Miller Wright PROPOSAL79Xuxue Feng
1036Murillo MaletRussia2026-05-14King, Christopher A Esq RENEWAL62Anna Fali
1037Emily WhobreyRussia2026-06-02Dorl, James J Esq RENEWAL54Onyama Limba
1038David DarakjyRussia2026-06-01King, Christopher A Esq RENEWAL17Elwin Sharvill
1039Clifford RimBrazil2026-05-18Chapman, Ross E Esq NEGOTIATION91Ioni Bowcher
1040Murillo MaletBrazil2026-06-04Truhlar And Truhlar Attys UNQUALIFIED92Onyama Limba
1041Aruna FigeroaArgentina2026-05-28Morlong Associates RENEWAL5Elwin Sharvill
1042Clifford RimArgentina2026-05-22King, Christopher A Esq RENEWAL35Asiya Javayant
1043Costa DilliardIndia2026-05-08Morlong Associates UNQUALIFIED54Asiya Javayant
1044Cody SaylorsGermany2026-06-01Chapman, Ross E Esq UNQUALIFIED53Xuxue Feng
1045Rodrigues CampainUnited Kingdom2026-05-08Buckley Miller Wright NEGOTIATION86Amy Elsner
1046Misaki RoysterRussia2026-06-03Rangoni Of Florence PROPOSAL70Bernardo Dominic
1047Murillo MaletIndia2026-05-26Chanay, Jeffrey A Esq PROPOSAL93Onyama Limba
1048Jefferson SchemmerBrazil2026-05-31Printing Dimensions UNQUALIFIED46Elwin Sharvill
1049Isabel BowleyBrazil2026-05-21Rousseaux, Michael Esq NEW41Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
David DarakjyFranceAmy Elsner UNQUALIFIED
Claire TollnerGermanyOnyama Limba RENEWAL
Adams MorascaArgentinaAnna Fali UNQUALIFIED
Misaki RoysterGermanyIvan Magalhaes NEW
Nicolas IturbideAustraliaStephen Shaw NEW
Claire TollnerUnited KingdomOnyama Limba NEW
Mayumi KolmetzItalyIoni Bowcher NEGOTIATION
Chavez BriddickGermanyAsiya Javayant UNQUALIFIED
Smith GlickItalyAmy Elsner PROPOSAL
Kadeem FlosiSpainAsiya Javayant QUALIFIED
Sinclair WaycottUnited KingdomStephen Shaw PROPOSAL
Arvin AlbaresIndiaStephen Shaw RENEWAL
Isabel BowleyIndiaBernardo Dominic NEW
Leja CaldareraUnited KingdomAsiya Javayant PROPOSAL
Alejandro PerinBrazilAmy Elsner NEGOTIATION
Nicolas IturbideBrazilAnna Fali QUALIFIED
Johnson SergiSpainAmy Elsner NEW
Deepesh ChuiAustraliaStephen Shaw QUALIFIED
Salvatore StockhamUnited KingdomOnyama Limba PROPOSAL
Emily WhobreyFranceStephen Shaw NEGOTIATION
James ButtSpainXuxue Feng RENEWAL
Sinclair WaycottIndiaIoni Bowcher NEGOTIATION
Smith GlickArgentinaElwin Sharvill NEW
Izzy GarufiCanadaAmy Elsner QUALIFIED
Misaki RoysterJapanXuxue Feng NEW
Faith GillianGermanyAnna Fali QUALIFIED
Nicolas IturbideBrazilIoni Bowcher NEW
Nicolas IturbideCanadaAmy Elsner UNQUALIFIED
Mujtaba NickaArgentinaAmy Elsner QUALIFIED
Julie StensethIndiaBernardo Dominic NEGOTIATION
Juan WieserItalyIvan Magalhaes RENEWAL
Alejandro PerinFranceAnna Fali UNQUALIFIED
Smith GlickUnited KingdomStephen Shaw QUALIFIED
Leon OldroydIndiaAnna Fali PROPOSAL
Kaitlin OstroskyGermanyAmy Elsner QUALIFIED
David DarakjyAustraliaIoni Bowcher NEGOTIATION
Munro FerenczUnited KingdomStephen Shaw UNQUALIFIED
Maisha RulapaughBrazilAnna Fali QUALIFIED
Jones VocelkaGermanyBernardo Dominic PROPOSAL
Arvin AlbaresGermanyAnna Fali NEW
David DarakjySpainIvan Magalhaes QUALIFIED
Wickens NestleGermanyAnna Fali RENEWAL
Arvin AlbaresSpainXuxue Feng QUALIFIED
Adams MorascaCanadaXuxue Feng UNQUALIFIED
Chavez BriddickJapanAmy Elsner QUALIFIED
Jennifer AmigonItalyAmy Elsner PROPOSAL
Mujtaba NickaGermanyElwin Sharvill NEW
Jeanfrancois VenereItalyOnyama Limba UNQUALIFIED
Isabel BowleyArgentinaIvan Magalhaes NEW
Murillo MaletJapanAmy Elsner QUALIFIED
Frozen Columns
Name
Jennifer Amigon
Jones Vocelka
Sinclair Waycott
Ricardo Gaucho
Faith Gillian
Isabel Bowley
Claire Tollner
Juan Wieser
Darci Poquette
Jefferson Schemmer
Nicolas Iturbide
Isabel Bowley
Faith Gillian
Jones Vocelka
Morrow Ruta
Costa Dilliard
Alejandro Perin
Alejandro Perin
Deepesh Chui
Octavia Malet
Munro Ferencz
Munro Ferencz
Izzy Garufi
Morrow Ruta
Johnson Sergi
Wickens Nestle
Adams Morasca
Cody Saylors
Antonio Caudy
Mayumi Kolmetz
Mayumi Kolmetz
Julie Stenseth
Smith Glick
Mujtaba Nicka
Antonio Caudy
Ricardo Gaucho
Mayumi Kolmetz
Stacey Maclead
Mujtaba Nicka
Maisha Rulapaugh
Salvatore Stockham
Arvin Albares
Cody Saylors
Maisha Rulapaugh
Julie Stenseth
Murillo Malet
Juan Wieser
Leon Oldroyd
Francesco Shinko
Ashley Doe
IdCountryDate
1000Brazil2026-05-07
1001Australia2026-05-13
1002France2026-05-11
1003Russia2026-06-03
1004Canada2026-05-17
1005Spain2026-06-04
1006Japan2026-05-24
1007France2026-05-14
1008Argentina2026-05-21
1009Spain2026-05-28
1010India2026-06-02
1011United Kingdom2026-05-29
1012Argentina2026-05-15
1013Japan2026-05-18
1014Japan2026-05-29
1015Canada2026-05-30
1016Russia2026-06-05
1017Italy2026-05-13
1018India2026-05-31
1019India2026-05-14
1020Japan2026-05-12
1021Germany2026-05-14
1022United Kingdom2026-05-19
1023Australia2026-05-28
1024United Kingdom2026-05-07
1025Germany2026-05-13
1026Spain2026-05-17
1027Spain2026-05-12
1028France2026-05-15
1029Spain2026-05-25
1030Germany2026-06-05
1031United Kingdom2026-05-11
1032Argentina2026-05-25
1033France2026-05-28
1034India2026-05-23
1035Argentina2026-05-25
1036Japan2026-05-07
1037France2026-05-25
1038Brazil2026-05-09
1039United Kingdom2026-05-28
1040Canada2026-05-18
1041France2026-05-11
1042Italy2026-05-19
1043Brazil2026-06-05
1044Argentina2026-05-14
1045Italy2026-06-01
1046Germany2026-05-29
1047Argentina2026-05-24
1048Germany2026-05-09
1049United Kingdom2026-05-14

On-Demand Data

NameIdCountryDate
Salvatore Stockham1000Australia2026-05-21
Munro Ferencz1001Spain2026-05-20
Cody Saylors1002France2026-05-22
Mayumi Kolmetz1003France2026-05-19
Maisha Rulapaugh1004France2026-06-02
Aika Inouye1005Argentina2026-05-26
Greenwood Bolognia1006Spain2026-05-26
Ivar Paprocki1007France2026-05-30
Tony Foller1008Australia2026-05-14
Aditya Kusko1009Russia2026-05-20
Kadeem Flosi1010Argentina2026-05-24
Julie Stenseth1011Argentina2026-05-17
Greenwood Bolognia1012Brazil2026-05-22
Ashley Doe1013Australia2026-05-10
Aditya Kusko1014Japan2026-05-18
Morrow Ruta1015Japan2026-05-15
Ashley Doe1016Argentina2026-05-15
Maisha Rulapaugh1017Canada2026-05-29
Francesco Shinko1018Australia2026-06-03
Ashley Doe1019India2026-05-25
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Deepesh ChuiBrazilXuxue Feng QUALIFIED
Aruna FigeroaCanadaElwin Sharvill NEGOTIATION
Jefferson SchemmerJapanIvan Magalhaes UNQUALIFIED
Ivar PaprockiJapanBernardo Dominic NEW
Jefferson SchemmerIndiaIvan Magalhaes UNQUALIFIED
Claire TollnerIndiaStephen Shaw QUALIFIED
Octavia MaletBrazilIvan Magalhaes RENEWAL
Isabel BowleyAustraliaElwin Sharvill QUALIFIED
Munro FerenczGermanyAnna Fali NEW
James ButtFranceStephen Shaw RENEWAL
Julie StensethUnited KingdomAmy Elsner NEW
Costa DilliardIndiaBernardo Dominic NEW
Kaitlin OstroskyCanadaStephen Shaw NEGOTIATION
Octavia MaletCanadaOnyama Limba PROPOSAL
Arvin AlbaresGermanyBernardo Dominic QUALIFIED
Francesco ShinkoFranceBernardo Dominic PROPOSAL
James ButtGermanyStephen Shaw QUALIFIED
Deepesh ChuiCanadaBernardo Dominic PROPOSAL
Julie StensethArgentinaElwin Sharvill RENEWAL
Aika InouyeBrazilOnyama Limba NEGOTIATION
Jennifer AmigonFranceElwin Sharvill NEW
Jeanfrancois VenereRussiaElwin Sharvill NEGOTIATION
Kadeem FlosiUnited KingdomAsiya Javayant UNQUALIFIED
Mayumi KolmetzAustraliaIoni Bowcher QUALIFIED
Aruna FigeroaSpainOnyama Limba UNQUALIFIED
Murillo MaletBrazilStephen Shaw NEGOTIATION
Salvatore StockhamJapanOnyama Limba QUALIFIED
Johnson SergiBrazilIvan Magalhaes UNQUALIFIED
Julie StensethUnited KingdomIoni Bowcher UNQUALIFIED
Clifford RimIndiaXuxue Feng QUALIFIED
Morrow RutaFranceAnna Fali QUALIFIED
Francesco ShinkoAustraliaIvan Magalhaes RENEWAL
David DarakjyBrazilAsiya Javayant NEGOTIATION
Alejandro PerinUnited KingdomAmy Elsner QUALIFIED
Jones VocelkaJapanOnyama Limba QUALIFIED
Arvin AlbaresItalyElwin Sharvill NEGOTIATION
Munro FerenczItalyIoni Bowcher UNQUALIFIED
Jones VocelkaCanadaXuxue Feng UNQUALIFIED
Julie StensethItalyOnyama Limba NEGOTIATION
Kaitlin OstroskySpainAsiya Javayant NEW

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