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
Salvatore StockhamAustraliaAnna Fali PROPOSAL
Misaki RoysterGermanyStephen Shaw RENEWAL
Mujtaba NickaFranceIoni Bowcher RENEWAL
Deepesh ChuiArgentinaStephen Shaw QUALIFIED
Francesco ShinkoSpainElwin Sharvill NEW
Tony FollerArgentinaAnna Fali NEGOTIATION
Wickens NestleCanadaXuxue Feng UNQUALIFIED
Jefferson SchemmerItalyAsiya Javayant QUALIFIED
Murillo MaletSpainBernardo Dominic UNQUALIFIED
Kaitlin OstroskyBrazilIoni Bowcher UNQUALIFIED
Ivar PaprockiItalyXuxue Feng UNQUALIFIED
Clifford RimAustraliaXuxue Feng PROPOSAL
Mujtaba NickaBrazilAmy Elsner NEGOTIATION
Mujtaba NickaJapanXuxue Feng RENEWAL
David DarakjyFranceElwin Sharvill NEGOTIATION
Jones VocelkaUnited KingdomBernardo Dominic NEGOTIATION
Antonio CaudyRussiaOnyama Limba PROPOSAL
Aruna FigeroaArgentinaIoni Bowcher RENEWAL
Morrow RutaIndiaOnyama Limba RENEWAL
Ivar PaprockiBrazilOnyama Limba NEW
Morrow RutaArgentinaXuxue Feng QUALIFIED
Mayumi KolmetzSpainBernardo Dominic QUALIFIED
Murillo MaletIndiaElwin Sharvill PROPOSAL
Cody SaylorsGermanyIvan Magalhaes RENEWAL
Jones VocelkaCanadaStephen Shaw QUALIFIED
Cody SaylorsSpainIoni Bowcher NEW
Kaitlin OstroskyAustraliaStephen Shaw RENEWAL
Alejandro PerinArgentinaXuxue Feng UNQUALIFIED
Octavia MaletRussiaStephen Shaw RENEWAL
Jefferson SchemmerRussiaAnna Fali NEW
David DarakjyBrazilOnyama Limba UNQUALIFIED
Jefferson SchemmerIndiaOnyama Limba UNQUALIFIED
Tony FollerIndiaAmy Elsner UNQUALIFIED
Morrow RutaIndiaAmy Elsner NEGOTIATION
Ivar PaprockiGermanyAsiya Javayant QUALIFIED
Morrow RutaCanadaOnyama Limba NEGOTIATION
Kadeem FlosiAustraliaAnna Fali RENEWAL
Jones VocelkaAustraliaBernardo Dominic UNQUALIFIED
Kadeem FlosiJapanOnyama Limba NEW
Costa DilliardIndiaXuxue Feng NEGOTIATION
Costa DilliardItalyAnna Fali UNQUALIFIED
Jefferson SchemmerSpainAnna Fali NEW
Aruna FigeroaIndiaIvan Magalhaes QUALIFIED
Aruna FigeroaBrazilIoni Bowcher PROPOSAL
Ashley DoeBrazilElwin Sharvill RENEWAL
Faith GillianItalyElwin Sharvill RENEWAL
Stacey MacleadRussiaAnna Fali PROPOSAL
Juan WieserFranceIvan Magalhaes NEW
Mayumi KolmetzBrazilElwin Sharvill NEW
Mujtaba NickaAustraliaBernardo Dominic NEW
Horizontal
NameCountryRepresentativeStatus
Silvio SlusarskiArgentinaAnna Fali QUALIFIED
Antonio CaudyFranceAmy Elsner UNQUALIFIED
Antonio CaudyUnited KingdomIvan Magalhaes QUALIFIED
Ivar PaprockiArgentinaIvan Magalhaes QUALIFIED
Wickens NestleJapanAsiya Javayant NEW
Adams MorascaItalyAnna Fali QUALIFIED
Stacey MacleadItalyIoni Bowcher QUALIFIED
Emily WhobreySpainBernardo Dominic RENEWAL
Munro FerenczJapanIoni Bowcher PROPOSAL
Ricardo GauchoBrazilIoni Bowcher RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jones VocelkaSpain2026-05-03Rangoni Of Florence UNQUALIFIED48Stephen Shaw
1001Greenwood BologniaAustralia2026-05-08Chanay, Jeffrey A Esq UNQUALIFIED40Onyama Limba
1002Deepesh ChuiAustralia2026-04-17Rangoni Of Florence NEGOTIATION65Ioni Bowcher
1003Ricardo GauchoArgentina2026-04-27Rangoni Of Florence UNQUALIFIED84Bernardo Dominic
1004Leja CaldareraFrance2026-04-26Chemel, James L Cpa NEGOTIATION77Elwin Sharvill
1005Silvio SlusarskiArgentina2026-04-20Rangoni Of Florence RENEWAL64Ivan Magalhaes
1006Arvin AlbaresJapan2026-04-21Dorl, James J Esq QUALIFIED15Xuxue Feng
1007Costa DilliardAustralia2026-05-04King, Christopher A Esq NEW2Xuxue Feng
1008Ashley DoeFrance2026-04-17Printing Dimensions PROPOSAL19Bernardo Dominic
1009Ivar PaprockiAustralia2026-04-16Rangoni Of Florence PROPOSAL59Bernardo Dominic
1010Rodrigues CampainCanada2026-04-15Benton, John B Jr NEGOTIATION11Ivan Magalhaes
1011Arvin AlbaresItaly2026-05-05Dorl, James J Esq UNQUALIFIED1Ioni Bowcher
1012Deepesh ChuiArgentina2026-05-01Dorl, James J Esq NEGOTIATION93Amy Elsner
1013Wickens NestleGermany2026-05-10Feiner Bros NEGOTIATION65Ioni Bowcher
1014Juan WieserFrance2026-05-08Chemel, James L Cpa NEW92Asiya Javayant
1015Ricardo GauchoGermany2026-05-02Rangoni Of Florence RENEWAL89Amy Elsner
1016Isabel BowleyGermany2026-04-30Morlong Associates PROPOSAL98Anna Fali
1017Johnson SergiUnited Kingdom2026-04-19Chanay, Jeffrey A Esq NEW10Amy Elsner
1018Leon OldroydAustralia2026-04-28Morlong Associates PROPOSAL98Onyama Limba
1019Aditya KuskoGermany2026-05-08Printing Dimensions UNQUALIFIED27Asiya Javayant
1020Rodrigues CampainGermany2026-04-29Chemel, James L Cpa QUALIFIED89Bernardo Dominic
1021Munro FerenczItaly2026-04-25Morlong Associates NEW69Xuxue Feng
1022Claire TollnerItaly2026-05-07Feiner Bros NEW96Stephen Shaw
1023Francesco ShinkoGermany2026-04-15Printing Dimensions NEW54Anna Fali
1024James ButtFrance2026-05-09Dorl, James J Esq QUALIFIED3Ioni Bowcher
1025Julie StensethArgentina2026-04-13Printing Dimensions RENEWAL34Asiya Javayant
1026Clifford RimBrazil2026-04-16Buckley Miller Wright UNQUALIFIED4Anna Fali
1027Ashley DoeItaly2026-05-11Feiner Bros NEW20Asiya Javayant
1028Octavia MaletSpain2026-04-20Benton, John B Jr QUALIFIED5Anna Fali
1029Jones VocelkaBrazil2026-04-15Feltz Printing Service PROPOSAL10Ioni Bowcher
1030Salvatore StockhamUnited Kingdom2026-05-10Chanay, Jeffrey A Esq NEW63Stephen Shaw
1031Mayumi KolmetzAustralia2026-05-10Chanay, Jeffrey A Esq PROPOSAL89Anna Fali
1032Tony FollerJapan2026-04-24Dorl, James J Esq NEGOTIATION5Xuxue Feng
1033Morrow RutaSpain2026-04-25Commercial Press PROPOSAL37Ioni Bowcher
1034Cody SaylorsIndia2026-04-28Benton, John B Jr UNQUALIFIED26Xuxue Feng
1035Greenwood BologniaAustralia2026-04-17Morlong Associates RENEWAL59Xuxue Feng
1036Sinclair WaycottBrazil2026-04-25King, Christopher A Esq UNQUALIFIED82Anna Fali
1037Ricardo GauchoAustralia2026-04-21Benton, John B Jr QUALIFIED46Xuxue Feng
1038Maisha RulapaughSpain2026-04-18Dorl, James J Esq RENEWAL44Amy Elsner
1039Leon OldroydRussia2026-05-08Feiner Bros PROPOSAL55Amy Elsner
1040Clifford RimGermany2026-04-21King, Christopher A Esq PROPOSAL40Ivan Magalhaes
1041Adams MorascaUnited Kingdom2026-04-21Chapman, Ross E Esq RENEWAL73Bernardo Dominic
1042Wickens NestleBrazil2026-04-20Chapman, Ross E Esq RENEWAL1Xuxue Feng
1043Ashley DoeRussia2026-04-18Morlong Associates NEW86Asiya Javayant
1044David DarakjyJapan2026-04-16Buckley Miller Wright QUALIFIED26Anna Fali
1045Munro FerenczBrazil2026-04-15Buckley Miller Wright NEGOTIATION45Ioni Bowcher
1046Jennifer AmigonBrazil2026-04-29Rangoni Of Florence QUALIFIED31Xuxue Feng
1047Sinclair WaycottCanada2026-05-11Printing Dimensions NEGOTIATION5Onyama Limba
1048Wickens NestleJapan2026-04-21Rangoni Of Florence RENEWAL30Onyama Limba
1049Greenwood BologniaCanada2026-04-20Rangoni Of Florence RENEWAL1Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Deepesh ChuiAustraliaElwin Sharvill PROPOSAL
Emily WhobreyGermanyAsiya Javayant QUALIFIED
Antonio CaudyRussiaBernardo Dominic UNQUALIFIED
Deepesh ChuiCanadaBernardo Dominic RENEWAL
Deepesh ChuiCanadaXuxue Feng UNQUALIFIED
Ashley DoeBrazilStephen Shaw NEW
Izzy GarufiJapanXuxue Feng PROPOSAL
Sinclair WaycottIndiaOnyama Limba RENEWAL
Maria MarrierCanadaElwin Sharvill NEGOTIATION
Antonio CaudyFranceXuxue Feng NEW
Kadeem FlosiRussiaOnyama Limba QUALIFIED
Sinclair WaycottUnited KingdomBernardo Dominic NEW
Jones VocelkaAustraliaAsiya Javayant QUALIFIED
Jeanfrancois VenereAustraliaBernardo Dominic QUALIFIED
Aditya KuskoBrazilElwin Sharvill RENEWAL
Clifford RimJapanAmy Elsner UNQUALIFIED
Arvin AlbaresRussiaElwin Sharvill NEGOTIATION
Clifford RimGermanyOnyama Limba QUALIFIED
Antonio CaudyCanadaOnyama Limba NEW
Nicolas IturbideFranceXuxue Feng NEGOTIATION
Julie StensethUnited KingdomAmy Elsner RENEWAL
Maisha RulapaughFranceIvan Magalhaes QUALIFIED
Antonio CaudyIndiaBernardo Dominic NEGOTIATION
Adams MorascaAustraliaAsiya Javayant QUALIFIED
Costa DilliardCanadaStephen Shaw QUALIFIED
Kadeem FlosiArgentinaBernardo Dominic UNQUALIFIED
Antonio CaudyFranceAsiya Javayant NEGOTIATION
Murillo MaletSpainIoni Bowcher UNQUALIFIED
Mayumi KolmetzCanadaOnyama Limba NEGOTIATION
Murillo MaletSpainAsiya Javayant QUALIFIED
Claire TollnerIndiaAmy Elsner UNQUALIFIED
Rodrigues CampainSpainStephen Shaw UNQUALIFIED
Salvatore StockhamCanadaAsiya Javayant NEGOTIATION
Murillo MaletJapanElwin Sharvill NEGOTIATION
Jennifer AmigonFranceElwin Sharvill UNQUALIFIED
Claire TollnerJapanAnna Fali RENEWAL
Emily WhobreySpainAmy Elsner UNQUALIFIED
Leja CaldareraCanadaElwin Sharvill PROPOSAL
Greenwood BologniaGermanyBernardo Dominic PROPOSAL
Aruna FigeroaSpainAmy Elsner QUALIFIED
Claire TollnerArgentinaBernardo Dominic NEW
Jefferson SchemmerUnited KingdomIvan Magalhaes RENEWAL
Ricardo GauchoGermanyAmy Elsner QUALIFIED
Maisha RulapaughRussiaXuxue Feng RENEWAL
Cody SaylorsArgentinaElwin Sharvill UNQUALIFIED
Salvatore StockhamAustraliaIvan Magalhaes PROPOSAL
Leja CaldareraUnited KingdomAmy Elsner NEGOTIATION
Munro FerenczUnited KingdomXuxue Feng UNQUALIFIED
James ButtGermanyBernardo Dominic UNQUALIFIED
Rodrigues CampainSpainAnna Fali NEGOTIATION
Frozen Columns
Name
Johnson Sergi
Ashley Doe
Misaki Royster
Isabel Bowley
Jefferson Schemmer
Ivar Paprocki
Leja Caldarera
Mayumi Kolmetz
Misaki Royster
Maisha Rulapaugh
Silvio Slusarski
Faith Gillian
Julie Stenseth
Mayumi Kolmetz
Morrow Ruta
Munro Ferencz
Jennifer Amigon
Munro Ferencz
Stacey Maclead
Ricardo Gaucho
Stacey Maclead
Aditya Kusko
David Darakjy
Arvin Albares
Greenwood Bolognia
Tony Foller
Maisha Rulapaugh
Jeanfrancois Venere
Aika Inouye
Mujtaba Nicka
Clifford Rim
Arvin Albares
Deepesh Chui
Kadeem Flosi
Smith Glick
Wickens Nestle
Rodrigues Campain
Leon Oldroyd
Mujtaba Nicka
Murillo Malet
Isabel Bowley
Antonio Caudy
Izzy Garufi
Jennifer Amigon
Leon Oldroyd
Leja Caldarera
Isabel Bowley
Misaki Royster
Sinclair Waycott
Costa Dilliard
IdCountryDate
1000India2026-04-15
1001Germany2026-04-18
1002Spain2026-04-23
1003Italy2026-04-19
1004Russia2026-05-04
1005Russia2026-04-29
1006Russia2026-05-05
1007Brazil2026-05-11
1008Brazil2026-05-11
1009Japan2026-04-26
1010Brazil2026-04-20
1011Russia2026-04-13
1012Italy2026-04-17
1013Italy2026-05-03
1014Australia2026-04-23
1015Argentina2026-04-30
1016Japan2026-04-15
1017Australia2026-04-26
1018France2026-04-26
1019Brazil2026-04-13
1020France2026-04-18
1021Spain2026-04-23
1022Spain2026-04-12
1023United Kingdom2026-05-10
1024Brazil2026-05-01
1025Australia2026-04-27
1026Australia2026-05-01
1027India2026-04-16
1028Canada2026-04-21
1029Canada2026-04-14
1030Spain2026-05-04
1031Argentina2026-04-15
1032Argentina2026-04-20
1033Germany2026-05-11
1034Russia2026-04-26
1035India2026-05-10
1036Japan2026-04-28
1037Brazil2026-05-05
1038Australia2026-04-23
1039Spain2026-04-19
1040Argentina2026-05-06
1041Germany2026-04-20
1042Russia2026-05-02
1043India2026-04-25
1044Germany2026-04-15
1045Brazil2026-05-07
1046Brazil2026-04-29
1047United Kingdom2026-04-22
1048United Kingdom2026-05-01
1049Russia2026-04-27

On-Demand Data

NameIdCountryDate
Julie Stenseth1000United Kingdom2026-05-03
Mayumi Kolmetz1001France2026-04-24
Wickens Nestle1002Canada2026-04-20
Rodrigues Campain1003Spain2026-04-26
Morrow Ruta1004Germany2026-05-02
Kaitlin Ostrosky1005Argentina2026-04-12
Aika Inouye1006Italy2026-05-11
Isabel Bowley1007Canada2026-05-09
Faith Gillian1008India2026-04-20
Claire Tollner1009United Kingdom2026-04-16
Johnson Sergi1010Russia2026-04-30
Antonio Caudy1011France2026-05-02
Tony Foller1012Brazil2026-05-03
Jefferson Schemmer1013France2026-04-18
Wickens Nestle1014Canada2026-04-19
Stacey Maclead1015France2026-04-25
Chavez Briddick1016United Kingdom2026-04-20
Morrow Ruta1017United Kingdom2026-05-04
Mujtaba Nicka1018Brazil2026-04-14
David Darakjy1019Brazil2026-05-02
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Rodrigues CampainRussiaXuxue Feng RENEWAL
James ButtJapanStephen Shaw UNQUALIFIED
Costa DilliardFranceAmy Elsner NEGOTIATION
Munro FerenczArgentinaOnyama Limba RENEWAL
Wickens NestleGermanyAmy Elsner RENEWAL
Clifford RimCanadaAnna Fali NEGOTIATION
Clifford RimFranceIvan Magalhaes NEW
Faith GillianUnited KingdomBernardo Dominic PROPOSAL
Greenwood BologniaCanadaElwin Sharvill RENEWAL
Jeanfrancois VenereAustraliaIoni Bowcher NEW
Mujtaba NickaSpainIvan Magalhaes RENEWAL
Antonio CaudyJapanIvan Magalhaes QUALIFIED
Alejandro PerinAustraliaElwin Sharvill NEGOTIATION
Mayumi KolmetzItalyElwin Sharvill UNQUALIFIED
Cody SaylorsSpainIvan Magalhaes QUALIFIED
Emily WhobreyArgentinaAsiya Javayant UNQUALIFIED
James ButtGermanyIvan Magalhaes NEW
Francesco ShinkoFranceAmy Elsner PROPOSAL
Jefferson SchemmerAustraliaAnna Fali QUALIFIED
Aika InouyeSpainAmy Elsner RENEWAL
Mujtaba NickaUnited KingdomBernardo Dominic NEW
David DarakjyJapanAnna Fali UNQUALIFIED
Octavia MaletAustraliaElwin Sharvill RENEWAL
Ashley DoeCanadaOnyama Limba PROPOSAL
Leon OldroydRussiaStephen Shaw QUALIFIED
Greenwood BologniaJapanIvan Magalhaes UNQUALIFIED
Maisha RulapaughBrazilIvan Magalhaes NEGOTIATION
Arvin AlbaresItalyAmy Elsner NEGOTIATION
Jones VocelkaItalyAmy Elsner NEGOTIATION
Chavez BriddickGermanyIoni Bowcher QUALIFIED
Chavez BriddickUnited KingdomXuxue Feng QUALIFIED
Stacey MacleadRussiaOnyama Limba NEW
Claire TollnerFranceBernardo Dominic NEW
Salvatore StockhamJapanIoni Bowcher UNQUALIFIED
Cody SaylorsSpainIoni Bowcher NEGOTIATION
Clifford RimGermanyStephen Shaw UNQUALIFIED
Francesco ShinkoArgentinaIvan Magalhaes QUALIFIED
Francesco ShinkoArgentinaBernardo Dominic QUALIFIED
Stacey MacleadArgentinaIoni Bowcher RENEWAL
James ButtBrazilAmy Elsner NEGOTIATION

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