SlideShare a Scribd company logo
Çagatay Çivici
Çagatay Çivici

• JSF Expert Group Member (JSR-314, JSR-344)
• PrimeFaces Lead
• Apache MyFaces PMC
• Speaker, Author, Reviewer
• Co-Founder of Prime Teknoloji
Prime Teknoloji

• Specialized in Java EE and Agile
• Consulting
• Training
• Delivery
• Offices in Istanbul and Ankara
• www.prime.com.tr
Primefaces Confess 2012
3 Years Old
Lightweight
Easy to Use
Only 1 Jar
1.7~ mb
No Required
Dependencies
Zero Config
Who Uses?
In The Wild
Popularity
Global




Colombia
100+ UI Components
Advanced UIs
Form Components
Hide Complexity
       CSS                         JS                         AJAX



                 Keep Flexibility
 <p:tabView onTabChange=”handleTabChange()”>
   <p:ajax event=”change” listener=”#{bean.onTabChange}” update=”comp” />
      //tabs
 </p:tabView>


 CSS                   JS                Client                 Ajax
Override               API              Callbacks             Callbacks
Anatomy of a Component
Page     <p:schedule id=”sch” value=”#{bean.model}” editable=”true” />


Markup   <div id=”sch”></div>


         <script type=”text/javascript”>
Script     PrimeFaces.cw(‘Schedule’,’widgetVar’, {id:’sch’, editable:true});
         </script>
Accessibility
Keyboard/Mouse




ARIA Attributes
HTML5

                 data-*
canvas                            websockets

         forms            media
PrimeFaces Ajax


Server APIs: Standard JSF 2
Client APIs:
Ajax Extensions

                p:ajax

autoUpdate                   Callbacks

              Selectors

AjaxStatus                RequestContext

             partialSubmit
p:ajax       f:ajax
oncomplete   onevent
 onerror     onerror
  onstart
onsuccess
  async
  global
AjaxStatus
               <p:ajaxStatus>
                 <f:facet name=”start”>
                       <p:graphicImage value=”fancyanimation.gif” />
                 </f:facet>
 Declarative     <f:facet name=”complete”>
                       <h:outputText value=”Request Completed” />
                 </f:facet>
               </p:ajaxStatus>



Programmatic   <p:ajaxStatus onstart=”dialog.show()” oncomplete=”dialog.hide()” />



   Global      <p:commandButton global=”true|false” />
RequestContext - Scripts
           <p:commandButton value=”Submit” action=”#{bean.save}” />
Page
           <p:dialog widgetVar=”dialogWidget” ... />


           public void save() {
            RequestContext rc = RequestContext.getCurrentInstance();
Bean        rc.execute(“dialogWidget.hide()”);
       }
RequestContext - Update

           <p:commandButton value=”Submit” action=”#{bean.save}” />
Page
           <h:outputText id=”val” value=”#{bean.property}” />


           public void save() {
Bean        RequestContext rc = RequestContext.getCurrentInstance();
            rc.addPartialUpdateTarget(“val”);
       }


                                               or
           <p:commandButton value=”Submit” action=”#{bean.save}”
                           update=”val” />

           <h:outputText id=”val” value=”#{bean.property}” />
RequestContext - Scroll

           <p:commandButton value=”Submit” action=”#{bean.save}” />
Page
           <h:outputText id=”val” value=”#{bean.property}” />


           public void save() {
Bean        RequestContext rc = RequestContext.getCurrentInstance();
            rc.scrollTo(“val”);
       }
AutoUpdate
  <p:growl id=”messages” />

 <p:commandButton value=”Save” update=”messages” />
 <p:commandButton value=”Update” update=”messages” />
 <p:commandButton value=”Delete” update=”messages” />



                         becomes

 <p:growl id=”messages” autoUpdate=”true”/>

 <p:commandButton value=”Save” />
 <p:commandButton value=”Update” />
 <p:commandButton value=”Delete” />
PartialSubmit
                     False                                                           True
 Post                                                       Post
Data:javax.faces.partial.ajax=true&javax.faces.source=fo   Data:javax.faces.partial.ajax=true&javax.faces.source=for
rm%3Aj_idt18&javax.faces.partial.execute=form              m%3Aj_idt18&javax.faces.partial.execute=form
%3Aname&javax.faces.partial.render=form                    %3Aname&javax.faces.partial.render=form
%3Adisplay&form%3Aj_idt18=form                             %3Adisplay&form%3Aj_idt18=form
%3Aj_idt18&form=form&form%3Aname=&form                     %3Aj_idt18&form=form&form
%3Aj_idt20=&form%3Aj_idt22=&form%3Aj_idt24=&form           %3Aname=&javax.faces.ViewState=7916482521909421
%3Aj_idt26=&form%3Aj_idt28=&form%3Aj_idt30=&form           983%3A-2156051337299048496
%3Aj_idt32=&form%3Aj_idt34=&form%3Aj_idt36=&form
%3Aj_idt38=&form%3Aj_idt40=&form%3Aj_idt42=&form
%3Aj_idt44=&form%3Aj_idt46=&form%3Aj_idt48=&form
%3Aj_idt50=&form%3Aj_idt52=&form%3Aj_idt66=&form
%3Aj_idt68=&form%3Aj_idt70=&form%3Aj_idt72=&form
%3Aj_idt74=&form%3Aj_idt76=&form%3Aj_idt78=&form
%3Aj_idt80=&form%3Aj_idt82=&form%3Aj_idt84=&form
%3Aj_idt86=&form%3Aj_idt88=&form%3Aj_idt90=&form
%3Aj_idt92=&form%3Aj_idt94=&form%3Aj_idt96=&form
%3Aj_idt98=&javax.faces.ViewState=79164825219094
21983%3A-2156051337299048496
PrimeFaces Selectors (PFS)
  update=”@(form)”

  update=”@(form.first)”

  update=”@(.mystyle)”

  update=”@(.ui-datatable)”

  update=”@(:input:not(select))”

 update=”@(:input:disabled))”
ResourceHandling

                                On The Fly
         Optimizations    and    Loading




Minify      Merge    Compress
Demo
Themes
Install a Theme

    Add primefaces-{themename}.jar




                    Configure
   <context-param>
    <param-name>primefaces.THEME</param-name>
    <param-value>{themename}</param-value>
   </context-param>
Roll Your Own
Advanced Themes
Demo
PrimeFaces Mobile
PrimeFaces Mobile
 <pm:page title="TwitFaces">

        <pm:view id="main" swatch="b">
            <pm:header title="TwitFaces">
            </pm:header>

            <pm:content>
                <h:form id="twitForm">
                    <h:outputText value="Account: " />
                    <h:inputText value="#{twitterController.username}" />
                    <p:separator />
                    <p:commandButton value="Get Tweets" icon="refresh" update="tweetList"
                                      actionListener="#{twitterController.loadTweets}" />

                    <p:dataList id="tweetList" value="#{twitterController.tweets}" var="tweet">
                        #{tweet}
                    </p:dataList>
                </h:form>
            </pm:content>
        </pm:view>

    </pm:page>
PrimeFaces Mobile



         powered by
Demo
PrimeFaces Push


       WebSockets
PrimeFaces Push
                           PushServer
     JSF APP
                             (Jetty)


 1
     2         3
                                    4
                               4
               4   4   4
PrimeFaces Push

 Page           <p:push channel=”chat” onmessage=”handleMessage” />



               public void send() {
                RequestContext rc = RequestContext.getCurrentInstance();
 Bean           rc.push(“chat”, “Hello everyone!”);
           }




Callback   <script type=”text/javascript”>
             function handleMessage(event, data) {
                   //data -> “Hello everyone!”
             }
           </script>
Demo
Back to Atmosphere?
Portlets




    Sample: /svn/examples/trunk/prime-portlet
On The Cloud

     http://primefaces-rocks.appspot.com



     http://primefaces-gae-kickstart.appspot.com
Documentation



        450+ Pages
Community



            2000 posts / month
Bundled with NetBeans
Enterprise




  Support    Training   Consulting
Scaffolding
Roadmap

• Current 3.2
• Next 3.3
• Keep on 3.x
• PrimeFaces Cookbook
• De-Facto Standard
The End
           contact@prime.com.tr

               @primefaces

              206606616332

          http://blog.primefaces.org

More Related Content

PDF
PrimeTime JSF with PrimeFaces - Dec 2014
PDF
In The Brain of Cagatay Civici: Exploring JavaServer Faces 2.0 and PrimeFaces
PDF
Primefaces Nextgen Lju
PDF
Djangoアプリのデプロイに関するプラクティス / Deploy django application
PPTX
Checkout Customizations in Magento 2 - MageTitansMCR 2017
PDF
Vaadin Components @ Angular U
PDF
Vaadin Components
PDF
BPM-1 Introduction to Advanced Workflows
PrimeTime JSF with PrimeFaces - Dec 2014
In The Brain of Cagatay Civici: Exploring JavaServer Faces 2.0 and PrimeFaces
Primefaces Nextgen Lju
Djangoアプリのデプロイに関するプラクティス / Deploy django application
Checkout Customizations in Magento 2 - MageTitansMCR 2017
Vaadin Components @ Angular U
Vaadin Components
BPM-1 Introduction to Advanced Workflows

What's hot (20)

PDF
BPM-2 Introduction to Advanced Workflows
PDF
Web-Performance
PDF
HTML5 - The 2012 of the Web
PDF
What's new in Rails 4
PDF
BPM-3 Advanced Workflow Deep Dive
PPTX
Uniface Lectures Webinar - Building Responsive Applications with Uniface: Dev...
ODP
JSF 2.0 (JavaEE Webinar)
PDF
Vaadin Introduction, 7.3 edition
PDF
WordPress Admin UI - Future Proofing Your Admin Pages
PDF
Secure WordPress Development Practices
PDF
Jsfandsecurity
PDF
Building and deploying React applications
PDF
Html server control - ASP. NET with c#
PDF
ILUG 2010 - Deploying plug-ins to the enterprise
PPTX
Angular Tutorial Freshers and Experienced
PDF
2012.sandiego.wordcamp
PDF
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010
PDF
Myfacesplanet
PDF
14 Fr 13 Civici Component Library Showdown
PDF
Apache Click
BPM-2 Introduction to Advanced Workflows
Web-Performance
HTML5 - The 2012 of the Web
What's new in Rails 4
BPM-3 Advanced Workflow Deep Dive
Uniface Lectures Webinar - Building Responsive Applications with Uniface: Dev...
JSF 2.0 (JavaEE Webinar)
Vaadin Introduction, 7.3 edition
WordPress Admin UI - Future Proofing Your Admin Pages
Secure WordPress Development Practices
Jsfandsecurity
Building and deploying React applications
Html server control - ASP. NET with c#
ILUG 2010 - Deploying plug-ins to the enterprise
Angular Tutorial Freshers and Experienced
2012.sandiego.wordcamp
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010
Myfacesplanet
14 Fr 13 Civici Component Library Showdown
Apache Click
Ad

Similar to Primefaces Confess 2012 (20)

PDF
AnkaraJUG Kasım 2012 - PrimeFaces
PDF
Primefaces Nextgen Lju
PDF
PrimeFaces: Next-Generation JSF Component Suite - Ian Hlavats
PDF
JavaServer Faces 2.0 - JavaOne India 2011
PDF
Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0
PDF
JSF 2.0 Preview
PDF
What You Need To Build Cool Enterprise Applications With JSF
PDF
RichFaces 4 Component Deep Dive - JAX/JSFSummit
PDF
A Peek At The Future: Going Beyond JavaServer Faces 2.0 With RichFaces 4
PDF
Ajax, JSF, Facelets, Eclipse & Maven tutorials
PPTX
PDF
Going Above JSF 2.0 with RichFaces and Seam
PPTX
Push to the limit - rich and pro-active user interfaces with ADF - V2 (UKOUG,...
PPTX
Jsf lab
PPT
JSF 2 and beyond: Keeping progress coming
PDF
Java Web Programming [8/9] : JSF and AJAX
PDF
Trustparency web doc spring 2.5 & hibernate
PDF
Jsf Ajax
PDF
JBoss Seam vs JSF
AnkaraJUG Kasım 2012 - PrimeFaces
Primefaces Nextgen Lju
PrimeFaces: Next-Generation JSF Component Suite - Ian Hlavats
JavaServer Faces 2.0 - JavaOne India 2011
Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0
JSF 2.0 Preview
What You Need To Build Cool Enterprise Applications With JSF
RichFaces 4 Component Deep Dive - JAX/JSFSummit
A Peek At The Future: Going Beyond JavaServer Faces 2.0 With RichFaces 4
Ajax, JSF, Facelets, Eclipse & Maven tutorials
Going Above JSF 2.0 with RichFaces and Seam
Push to the limit - rich and pro-active user interfaces with ADF - V2 (UKOUG,...
Jsf lab
JSF 2 and beyond: Keeping progress coming
Java Web Programming [8/9] : JSF and AJAX
Trustparency web doc spring 2.5 & hibernate
Jsf Ajax
JBoss Seam vs JSF
Ad

More from cagataycivici (7)

PDF
PrimeNG - Components para la Vida Real
PDF
How to Mess Up Your Angular UI Components
PDF
Itsjustangular
PDF
PrimeFaces User Guide 5.0
PPT
Open Your Source
PPT
Facelets
PPT
Jsfsunum
PrimeNG - Components para la Vida Real
How to Mess Up Your Angular UI Components
Itsjustangular
PrimeFaces User Guide 5.0
Open Your Source
Facelets
Jsfsunum

Recently uploaded (20)

PDF
Spectral efficient network and resource selection model in 5G networks
PPT
Teaching material agriculture food technology
PPTX
Cloud computing and distributed systems.
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Encapsulation theory and applications.pdf
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPTX
MYSQL Presentation for SQL database connectivity
DOCX
The AUB Centre for AI in Media Proposal.docx
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Machine learning based COVID-19 study performance prediction
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
Spectral efficient network and resource selection model in 5G networks
Teaching material agriculture food technology
Cloud computing and distributed systems.
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Advanced methodologies resolving dimensionality complications for autism neur...
20250228 LYD VKU AI Blended-Learning.pptx
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Review of recent advances in non-invasive hemoglobin estimation
Encapsulation theory and applications.pdf
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
NewMind AI Weekly Chronicles - August'25 Week I
Building Integrated photovoltaic BIPV_UPV.pdf
MYSQL Presentation for SQL database connectivity
The AUB Centre for AI in Media Proposal.docx
Digital-Transformation-Roadmap-for-Companies.pptx
Reach Out and Touch Someone: Haptics and Empathic Computing
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Machine learning based COVID-19 study performance prediction
Dropbox Q2 2025 Financial Results & Investor Presentation

Primefaces Confess 2012

  • 2. Çagatay Çivici • JSF Expert Group Member (JSR-314, JSR-344) • PrimeFaces Lead • Apache MyFaces PMC • Speaker, Author, Reviewer • Co-Founder of Prime Teknoloji
  • 3. Prime Teknoloji • Specialized in Java EE and Agile • Consulting • Training • Delivery • Offices in Istanbul and Ankara • www.prime.com.tr
  • 18. Hide Complexity CSS JS AJAX Keep Flexibility <p:tabView onTabChange=”handleTabChange()”> <p:ajax event=”change” listener=”#{bean.onTabChange}” update=”comp” /> //tabs </p:tabView> CSS JS Client Ajax Override API Callbacks Callbacks
  • 19. Anatomy of a Component Page <p:schedule id=”sch” value=”#{bean.model}” editable=”true” /> Markup <div id=”sch”></div> <script type=”text/javascript”> Script PrimeFaces.cw(‘Schedule’,’widgetVar’, {id:’sch’, editable:true}); </script>
  • 21. HTML5 data-* canvas websockets forms media
  • 22. PrimeFaces Ajax Server APIs: Standard JSF 2 Client APIs:
  • 23. Ajax Extensions p:ajax autoUpdate Callbacks Selectors AjaxStatus RequestContext partialSubmit
  • 24. p:ajax f:ajax oncomplete onevent onerror onerror onstart onsuccess async global
  • 25. AjaxStatus <p:ajaxStatus> <f:facet name=”start”> <p:graphicImage value=”fancyanimation.gif” /> </f:facet> Declarative <f:facet name=”complete”> <h:outputText value=”Request Completed” /> </f:facet> </p:ajaxStatus> Programmatic <p:ajaxStatus onstart=”dialog.show()” oncomplete=”dialog.hide()” /> Global <p:commandButton global=”true|false” />
  • 26. RequestContext - Scripts <p:commandButton value=”Submit” action=”#{bean.save}” /> Page <p:dialog widgetVar=”dialogWidget” ... /> public void save() { RequestContext rc = RequestContext.getCurrentInstance(); Bean rc.execute(“dialogWidget.hide()”); }
  • 27. RequestContext - Update <p:commandButton value=”Submit” action=”#{bean.save}” /> Page <h:outputText id=”val” value=”#{bean.property}” /> public void save() { Bean RequestContext rc = RequestContext.getCurrentInstance(); rc.addPartialUpdateTarget(“val”); } or <p:commandButton value=”Submit” action=”#{bean.save}” update=”val” /> <h:outputText id=”val” value=”#{bean.property}” />
  • 28. RequestContext - Scroll <p:commandButton value=”Submit” action=”#{bean.save}” /> Page <h:outputText id=”val” value=”#{bean.property}” /> public void save() { Bean RequestContext rc = RequestContext.getCurrentInstance(); rc.scrollTo(“val”); }
  • 29. AutoUpdate <p:growl id=”messages” /> <p:commandButton value=”Save” update=”messages” /> <p:commandButton value=”Update” update=”messages” /> <p:commandButton value=”Delete” update=”messages” /> becomes <p:growl id=”messages” autoUpdate=”true”/> <p:commandButton value=”Save” /> <p:commandButton value=”Update” /> <p:commandButton value=”Delete” />
  • 30. PartialSubmit False True Post Post Data:javax.faces.partial.ajax=true&javax.faces.source=fo Data:javax.faces.partial.ajax=true&javax.faces.source=for rm%3Aj_idt18&javax.faces.partial.execute=form m%3Aj_idt18&javax.faces.partial.execute=form %3Aname&javax.faces.partial.render=form %3Aname&javax.faces.partial.render=form %3Adisplay&form%3Aj_idt18=form %3Adisplay&form%3Aj_idt18=form %3Aj_idt18&form=form&form%3Aname=&form %3Aj_idt18&form=form&form %3Aj_idt20=&form%3Aj_idt22=&form%3Aj_idt24=&form %3Aname=&javax.faces.ViewState=7916482521909421 %3Aj_idt26=&form%3Aj_idt28=&form%3Aj_idt30=&form 983%3A-2156051337299048496 %3Aj_idt32=&form%3Aj_idt34=&form%3Aj_idt36=&form %3Aj_idt38=&form%3Aj_idt40=&form%3Aj_idt42=&form %3Aj_idt44=&form%3Aj_idt46=&form%3Aj_idt48=&form %3Aj_idt50=&form%3Aj_idt52=&form%3Aj_idt66=&form %3Aj_idt68=&form%3Aj_idt70=&form%3Aj_idt72=&form %3Aj_idt74=&form%3Aj_idt76=&form%3Aj_idt78=&form %3Aj_idt80=&form%3Aj_idt82=&form%3Aj_idt84=&form %3Aj_idt86=&form%3Aj_idt88=&form%3Aj_idt90=&form %3Aj_idt92=&form%3Aj_idt94=&form%3Aj_idt96=&form %3Aj_idt98=&javax.faces.ViewState=79164825219094 21983%3A-2156051337299048496
  • 31. PrimeFaces Selectors (PFS) update=”@(form)” update=”@(form.first)” update=”@(.mystyle)” update=”@(.ui-datatable)” update=”@(:input:not(select))” update=”@(:input:disabled))”
  • 32. ResourceHandling On The Fly Optimizations and Loading Minify Merge Compress
  • 33. Demo
  • 35. Install a Theme Add primefaces-{themename}.jar Configure <context-param> <param-name>primefaces.THEME</param-name> <param-value>{themename}</param-value> </context-param>
  • 38. Demo
  • 40. PrimeFaces Mobile <pm:page title="TwitFaces">         <pm:view id="main" swatch="b">             <pm:header title="TwitFaces">             </pm:header>             <pm:content>                 <h:form id="twitForm">                     <h:outputText value="Account: " />                     <h:inputText value="#{twitterController.username}" />                     <p:separator />                     <p:commandButton value="Get Tweets" icon="refresh" update="tweetList"                                       actionListener="#{twitterController.loadTweets}" />                     <p:dataList id="tweetList" value="#{twitterController.tweets}" var="tweet">                         #{tweet}                     </p:dataList>                 </h:form>             </pm:content>         </pm:view>     </pm:page>
  • 41. PrimeFaces Mobile powered by
  • 42. Demo
  • 43. PrimeFaces Push WebSockets
  • 44. PrimeFaces Push PushServer JSF APP (Jetty) 1 2 3 4 4 4 4 4
  • 45. PrimeFaces Push Page <p:push channel=”chat” onmessage=”handleMessage” /> public void send() { RequestContext rc = RequestContext.getCurrentInstance(); Bean rc.push(“chat”, “Hello everyone!”); } Callback <script type=”text/javascript”> function handleMessage(event, data) { //data -> “Hello everyone!” } </script>
  • 46. Demo
  • 48. Portlets Sample: /svn/examples/trunk/prime-portlet
  • 49. On The Cloud http://primefaces-rocks.appspot.com http://primefaces-gae-kickstart.appspot.com
  • 50. Documentation 450+ Pages
  • 51. Community 2000 posts / month
  • 53. Enterprise Support Training Consulting
  • 55. Roadmap • Current 3.2 • Next 3.3 • Keep on 3.x • PrimeFaces Cookbook • De-Facto Standard
  • 56. The End contact@prime.com.tr @primefaces 206606616332 http://blog.primefaces.org