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
Morrow RutaBrazilAnna Fali NEW
Smith GlickItalyAsiya Javayant NEGOTIATION
Leon OldroydIndiaXuxue Feng PROPOSAL
Sinclair WaycottCanadaAmy Elsner UNQUALIFIED
Kaitlin OstroskyAustraliaIvan Magalhaes RENEWAL
Silvio SlusarskiGermanyIvan Magalhaes NEW
Morrow RutaIndiaStephen Shaw PROPOSAL
Claire TollnerGermanyOnyama Limba QUALIFIED
Ashley DoeGermanyAsiya Javayant NEW
Jennifer AmigonArgentinaIoni Bowcher RENEWAL
David DarakjyFranceBernardo Dominic RENEWAL
Tony FollerCanadaIoni Bowcher NEGOTIATION
Darci PoquetteCanadaBernardo Dominic PROPOSAL
Wickens NestleAustraliaAsiya Javayant UNQUALIFIED
Adams MorascaBrazilAmy Elsner PROPOSAL
Jeanfrancois VenereItalyBernardo Dominic QUALIFIED
Aditya KuskoFranceElwin Sharvill UNQUALIFIED
Ashley DoeIndiaIoni Bowcher QUALIFIED
Nicolas IturbideFranceOnyama Limba NEGOTIATION
Emily WhobreyArgentinaBernardo Dominic RENEWAL
Chavez BriddickFranceAmy Elsner NEW
Alejandro PerinSpainOnyama Limba RENEWAL
Leja CaldareraJapanAnna Fali PROPOSAL
Sinclair WaycottFranceAsiya Javayant PROPOSAL
Chavez BriddickIndiaAsiya Javayant RENEWAL
Leon OldroydBrazilXuxue Feng PROPOSAL
Jennifer AmigonGermanyStephen Shaw UNQUALIFIED
Mayumi KolmetzBrazilXuxue Feng RENEWAL
Aika InouyeAustraliaOnyama Limba UNQUALIFIED
Emily WhobreyCanadaElwin Sharvill UNQUALIFIED
Wickens NestleFranceOnyama Limba RENEWAL
Aruna FigeroaBrazilElwin Sharvill NEGOTIATION
Leon OldroydSpainIvan Magalhaes UNQUALIFIED
Julie StensethBrazilBernardo Dominic NEW
Deepesh ChuiSpainAsiya Javayant NEGOTIATION
Arvin AlbaresAustraliaIvan Magalhaes NEGOTIATION
Costa DilliardIndiaOnyama Limba NEW
Jeanfrancois VenereItalyStephen Shaw UNQUALIFIED
Aika InouyeAustraliaAmy Elsner QUALIFIED
Claire TollnerArgentinaIoni Bowcher RENEWAL
Faith GillianArgentinaElwin Sharvill NEW
Faith GillianBrazilOnyama Limba RENEWAL
Leja CaldareraJapanStephen Shaw PROPOSAL
Kaitlin OstroskyCanadaXuxue Feng PROPOSAL
Faith GillianArgentinaAsiya Javayant PROPOSAL
Tony FollerSpainIvan Magalhaes RENEWAL
Francesco ShinkoGermanyStephen Shaw QUALIFIED
Ashley DoeUnited KingdomAnna Fali RENEWAL
Kadeem FlosiFranceIvan Magalhaes UNQUALIFIED
Ashley DoeFranceOnyama Limba NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Munro FerenczGermanyIoni Bowcher NEGOTIATION
Greenwood BologniaIndiaStephen Shaw RENEWAL
Nicolas IturbideItalyElwin Sharvill RENEWAL
Juan WieserAustraliaElwin Sharvill RENEWAL
Ivar PaprockiFranceXuxue Feng PROPOSAL
Kadeem FlosiAustraliaIoni Bowcher NEGOTIATION
Sinclair WaycottArgentinaAmy Elsner NEGOTIATION
Munro FerenczIndiaIoni Bowcher UNQUALIFIED
Tony FollerJapanOnyama Limba QUALIFIED
Misaki RoysterSpainXuxue Feng RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Mujtaba NickaCanada2026-04-04Feiner Bros QUALIFIED83Ioni Bowcher
1001David DarakjyGermany2026-04-02Chemel, James L Cpa QUALIFIED8Amy Elsner
1002Emily WhobreyUnited Kingdom2026-04-28Dorl, James J Esq NEW72Xuxue Feng
1003Costa DilliardUnited Kingdom2026-04-06Rangoni Of Florence PROPOSAL46Xuxue Feng
1004Leon OldroydRussia2026-04-15Feltz Printing Service RENEWAL71Ivan Magalhaes
1005Johnson SergiGermany2026-04-06Morlong Associates NEGOTIATION84Xuxue Feng
1006Morrow RutaBrazil2026-04-17Morlong Associates NEW15Stephen Shaw
1007Munro FerenczArgentina2026-04-17Buckley Miller Wright NEGOTIATION25Asiya Javayant
1008Octavia MaletItaly2026-04-01Chapman, Ross E Esq NEGOTIATION11Asiya Javayant
1009Isabel BowleyAustralia2026-04-29Feltz Printing Service QUALIFIED42Ivan Magalhaes
1010Clifford RimSpain2026-04-20Rangoni Of Florence NEGOTIATION40Ivan Magalhaes
1011Darci PoquetteUnited Kingdom2026-04-02Rousseaux, Michael Esq NEW43Amy Elsner
1012Murillo MaletFrance2026-04-12Feiner Bros QUALIFIED1Xuxue Feng
1013Greenwood BologniaGermany2026-04-06Chapman, Ross E Esq NEGOTIATION60Bernardo Dominic
1014Emily WhobreyJapan2026-04-13Benton, John B Jr NEGOTIATION79Ivan Magalhaes
1015Maria MarrierAustralia2026-04-27Commercial Press RENEWAL18Onyama Limba
1016Misaki RoysterCanada2026-04-03Rangoni Of Florence RENEWAL37Onyama Limba
1017Antonio CaudyRussia2026-04-17Printing Dimensions PROPOSAL84Stephen Shaw
1018Sinclair WaycottArgentina2026-04-02Chanay, Jeffrey A Esq RENEWAL82Asiya Javayant
1019Nicolas IturbideSpain2026-04-08Buckley Miller Wright PROPOSAL1Ivan Magalhaes
1020Clifford RimFrance2026-04-11Chapman, Ross E Esq QUALIFIED19Asiya Javayant
1021Stacey MacleadRussia2026-04-23Printing Dimensions PROPOSAL79Amy Elsner
1022Murillo MaletIndia2026-04-21Rousseaux, Michael Esq RENEWAL52Asiya Javayant
1023Misaki RoysterSpain2026-04-27Buckley Miller Wright RENEWAL80Xuxue Feng
1024Francesco ShinkoIndia2026-04-19Truhlar And Truhlar Attys UNQUALIFIED67Amy Elsner
1025Mujtaba NickaUnited Kingdom2026-04-04Feiner Bros NEW11Onyama Limba
1026Claire TollnerRussia2026-04-06Truhlar And Truhlar Attys RENEWAL81Ioni Bowcher
1027Murillo MaletAustralia2026-04-26Dorl, James J Esq NEGOTIATION18Elwin Sharvill
1028Murillo MaletFrance2026-04-07Chanay, Jeffrey A Esq QUALIFIED30Elwin Sharvill
1029Faith GillianFrance2026-04-27Chapman, Ross E Esq RENEWAL1Ivan Magalhaes
1030Julie StensethJapan2026-04-02Rangoni Of Florence UNQUALIFIED25Stephen Shaw
1031Sinclair WaycottArgentina2026-04-20Morlong Associates RENEWAL62Onyama Limba
1032James ButtUnited Kingdom2026-04-12Printing Dimensions QUALIFIED95Amy Elsner
1033Juan WieserIndia2026-04-10Rousseaux, Michael Esq NEGOTIATION51Asiya Javayant
1034Emily WhobreyBrazil2026-04-04Chemel, James L Cpa UNQUALIFIED57Xuxue Feng
1035Johnson SergiUnited Kingdom2026-04-15Commercial Press UNQUALIFIED44Stephen Shaw
1036Morrow RutaCanada2026-04-10Chemel, James L Cpa PROPOSAL40Anna Fali
1037Ivar PaprockiGermany2026-04-01Feltz Printing Service NEGOTIATION57Amy Elsner
1038Kaitlin OstroskyCanada2026-04-07Feltz Printing Service NEW16Anna Fali
1039Juan WieserFrance2026-04-23Chapman, Ross E Esq UNQUALIFIED73Xuxue Feng
1040Aruna FigeroaBrazil2026-04-07Truhlar And Truhlar Attys PROPOSAL5Onyama Limba
1041Misaki RoysterGermany2026-04-08King, Christopher A Esq PROPOSAL89Xuxue Feng
1042Sinclair WaycottItaly2026-04-22Chanay, Jeffrey A Esq QUALIFIED89Onyama Limba
1043Alejandro PerinSpain2026-04-13Rangoni Of Florence RENEWAL61Ioni Bowcher
1044Smith GlickUnited Kingdom2026-04-22Rangoni Of Florence NEGOTIATION0Xuxue Feng
1045Morrow RutaArgentina2026-04-02Buckley Miller Wright NEGOTIATION36Asiya Javayant
1046Chavez BriddickRussia2026-04-02Feltz Printing Service RENEWAL49Stephen Shaw
1047Chavez BriddickUnited Kingdom2026-04-07Printing Dimensions UNQUALIFIED13Onyama Limba
1048Ricardo GauchoItaly2026-04-03Dorl, James J Esq RENEWAL13Bernardo Dominic
1049Julie StensethAustralia2026-04-08Feiner Bros UNQUALIFIED71Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Aruna FigeroaAustraliaIoni Bowcher RENEWAL
Ashley DoeItalyIvan Magalhaes QUALIFIED
Wickens NestleUnited KingdomBernardo Dominic UNQUALIFIED
Costa DilliardRussiaStephen Shaw RENEWAL
Octavia MaletAustraliaIoni Bowcher RENEWAL
Wickens NestleRussiaIvan Magalhaes PROPOSAL
Ashley DoeBrazilIvan Magalhaes NEGOTIATION
Wickens NestleJapanOnyama Limba RENEWAL
Aika InouyeAustraliaStephen Shaw NEGOTIATION
Jennifer AmigonAustraliaIvan Magalhaes RENEWAL
Jones VocelkaIndiaElwin Sharvill RENEWAL
Juan WieserUnited KingdomAsiya Javayant NEGOTIATION
James ButtAustraliaElwin Sharvill RENEWAL
Sinclair WaycottSpainIoni Bowcher RENEWAL
Jennifer AmigonBrazilIoni Bowcher PROPOSAL
Isabel BowleyRussiaBernardo Dominic RENEWAL
Wickens NestleGermanyAmy Elsner NEGOTIATION
Wickens NestleGermanyBernardo Dominic NEGOTIATION
Clifford RimIndiaIvan Magalhaes QUALIFIED
Arvin AlbaresItalyElwin Sharvill RENEWAL
Mujtaba NickaBrazilAsiya Javayant QUALIFIED
Tony FollerJapanIvan Magalhaes PROPOSAL
Octavia MaletJapanAmy Elsner UNQUALIFIED
Izzy GarufiArgentinaAmy Elsner UNQUALIFIED
Silvio SlusarskiItalyElwin Sharvill UNQUALIFIED
Kadeem FlosiJapanAsiya Javayant UNQUALIFIED
Izzy GarufiSpainAmy Elsner RENEWAL
Mayumi KolmetzItalyIoni Bowcher NEW
Mayumi KolmetzGermanyAnna Fali PROPOSAL
Jennifer AmigonFranceIoni Bowcher NEGOTIATION
Leja CaldareraSpainElwin Sharvill PROPOSAL
Alejandro PerinArgentinaAnna Fali PROPOSAL
Leja CaldareraJapanAsiya Javayant UNQUALIFIED
Jennifer AmigonItalyIvan Magalhaes QUALIFIED
Salvatore StockhamUnited KingdomOnyama Limba RENEWAL
Salvatore StockhamUnited KingdomStephen Shaw QUALIFIED
Chavez BriddickCanadaAmy Elsner RENEWAL
Aditya KuskoFranceAsiya Javayant UNQUALIFIED
Clifford RimRussiaElwin Sharvill UNQUALIFIED
Smith GlickAustraliaXuxue Feng NEGOTIATION
Morrow RutaJapanBernardo Dominic UNQUALIFIED
Wickens NestleItalyStephen Shaw RENEWAL
Kadeem FlosiArgentinaAnna Fali RENEWAL
Kaitlin OstroskyRussiaStephen Shaw PROPOSAL
Darci PoquetteUnited KingdomAmy Elsner NEGOTIATION
Ashley DoeCanadaAmy Elsner NEW
Mayumi KolmetzAustraliaAnna Fali UNQUALIFIED
Aruna FigeroaAustraliaAnna Fali NEGOTIATION
Smith GlickJapanAmy Elsner PROPOSAL
Clifford RimAustraliaAnna Fali UNQUALIFIED
Frozen Columns
Name
Costa Dilliard
Juan Wieser
Emily Whobrey
Jefferson Schemmer
Stacey Maclead
Jennifer Amigon
Rodrigues Campain
Darci Poquette
Emily Whobrey
Leja Caldarera
Leja Caldarera
Cody Saylors
Aruna Figeroa
Johnson Sergi
Alejandro Perin
Murillo Malet
Izzy Garufi
Darci Poquette
Arvin Albares
Sinclair Waycott
Kadeem Flosi
Munro Ferencz
Darci Poquette
Sinclair Waycott
Cody Saylors
Jones Vocelka
Cody Saylors
Aditya Kusko
Sinclair Waycott
Ivar Paprocki
Aditya Kusko
Maisha Rulapaugh
Murillo Malet
Juan Wieser
Stacey Maclead
Costa Dilliard
Arvin Albares
Claire Tollner
Ricardo Gaucho
Alejandro Perin
Clifford Rim
Alejandro Perin
Morrow Ruta
Munro Ferencz
Faith Gillian
Julie Stenseth
Rodrigues Campain
Arvin Albares
Octavia Malet
Nicolas Iturbide
IdCountryDate
1000Australia2026-04-12
1001Canada2026-04-25
1002Russia2026-04-19
1003Italy2026-04-01
1004Russia2026-04-29
1005Brazil2026-04-24
1006France2026-03-31
1007India2026-04-14
1008Australia2026-04-03
1009United Kingdom2026-04-13
1010Canada2026-04-10
1011France2026-04-25
1012United Kingdom2026-03-31
1013Australia2026-04-01
1014United Kingdom2026-04-17
1015France2026-04-15
1016Australia2026-04-12
1017India2026-04-01
1018Italy2026-04-13
1019Brazil2026-04-10
1020Brazil2026-04-12
1021Germany2026-04-22
1022Australia2026-04-18
1023Germany2026-04-04
1024Russia2026-04-17
1025Japan2026-04-11
1026United Kingdom2026-04-03
1027Australia2026-04-21
1028Australia2026-04-14
1029Brazil2026-04-13
1030India2026-04-21
1031Argentina2026-04-23
1032Brazil2026-04-21
1033Spain2026-04-06
1034Brazil2026-04-16
1035United Kingdom2026-04-04
1036United Kingdom2026-04-01
1037Australia2026-04-15
1038Japan2026-03-31
1039India2026-04-28
1040Spain2026-04-22
1041Italy2026-04-27
1042Australia2026-04-21
1043United Kingdom2026-03-31
1044Japan2026-04-01
1045United Kingdom2026-04-10
1046Brazil2026-04-19
1047Australia2026-04-29
1048Japan2026-04-18
1049Australia2026-04-16

On-Demand Data

NameIdCountryDate
Faith Gillian1000Argentina2026-04-06
Izzy Garufi1001Argentina2026-04-16
Antonio Caudy1002Italy2026-04-29
Alejandro Perin1003Germany2026-04-01
Octavia Malet1004Italy2026-03-31
Mujtaba Nicka1005Russia2026-04-22
Izzy Garufi1006Canada2026-04-15
Jennifer Amigon1007Brazil2026-04-02
Smith Glick1008United Kingdom2026-04-14
Jones Vocelka1009Japan2026-04-15
Aika Inouye1010India2026-04-01
Jones Vocelka1011Italy2026-04-23
Aruna Figeroa1012Australia2026-04-22
Salvatore Stockham1013France2026-04-24
Antonio Caudy1014France2026-04-17
Adams Morasca1015Japan2026-04-08
Aditya Kusko1016Canada2026-04-27
Julie Stenseth1017India2026-04-05
Maria Marrier1018Italy2026-04-16
Ashley Doe1019Germany2026-04-13
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Isabel BowleyIndiaElwin Sharvill RENEWAL
Misaki RoysterJapanStephen Shaw UNQUALIFIED
Leja CaldareraBrazilXuxue Feng RENEWAL
Isabel BowleyAustraliaOnyama Limba NEW
Antonio CaudyUnited KingdomAsiya Javayant PROPOSAL
David DarakjyFranceAmy Elsner PROPOSAL
Stacey MacleadItalyIvan Magalhaes NEGOTIATION
Izzy GarufiAustraliaElwin Sharvill UNQUALIFIED
Clifford RimIndiaOnyama Limba NEGOTIATION
Leja CaldareraCanadaAnna Fali QUALIFIED
Kaitlin OstroskyJapanAmy Elsner UNQUALIFIED
Maisha RulapaughArgentinaOnyama Limba PROPOSAL
Octavia MaletAustraliaStephen Shaw NEGOTIATION
Clifford RimCanadaIvan Magalhaes NEGOTIATION
Nicolas IturbideArgentinaStephen Shaw NEGOTIATION
Mayumi KolmetzSpainStephen Shaw QUALIFIED
Jeanfrancois VenereCanadaAnna Fali PROPOSAL
Rodrigues CampainIndiaStephen Shaw PROPOSAL
Greenwood BologniaUnited KingdomElwin Sharvill QUALIFIED
Isabel BowleyCanadaIvan Magalhaes NEGOTIATION
Kadeem FlosiIndiaAnna Fali PROPOSAL
Ashley DoeFranceIoni Bowcher UNQUALIFIED
Jennifer AmigonSpainXuxue Feng UNQUALIFIED
Stacey MacleadBrazilAsiya Javayant NEGOTIATION
Ivar PaprockiUnited KingdomBernardo Dominic NEW
Jennifer AmigonItalyAnna Fali NEW
Misaki RoysterFranceAmy Elsner QUALIFIED
Jefferson SchemmerBrazilOnyama Limba RENEWAL
Aika InouyeItalyOnyama Limba NEGOTIATION
Ricardo GauchoIndiaBernardo Dominic NEW
Isabel BowleyJapanStephen Shaw QUALIFIED
Maria MarrierBrazilOnyama Limba UNQUALIFIED
Misaki RoysterSpainAsiya Javayant RENEWAL
Smith GlickSpainAsiya Javayant RENEWAL
Salvatore StockhamFranceAsiya Javayant RENEWAL
Aditya KuskoAustraliaIvan Magalhaes RENEWAL
Julie StensethUnited KingdomXuxue Feng RENEWAL
Ivar PaprockiItalyAsiya Javayant RENEWAL
Stacey MacleadGermanyXuxue Feng NEGOTIATION
Antonio CaudyCanadaIoni Bowcher QUALIFIED

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