SlideShare une entreprise Scribd logo
1  sur  56
Télécharger pour lire hors ligne
Ç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
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

Contenu connexe

Tendances

BPM-2 Introduction to Advanced Workflows
BPM-2 Introduction to Advanced WorkflowsBPM-2 Introduction to Advanced Workflows
BPM-2 Introduction to Advanced WorkflowsAlfresco Software
 
HTML5 - The 2012 of the Web
HTML5 - The 2012 of the WebHTML5 - The 2012 of the Web
HTML5 - The 2012 of the WebRobert Nyman
 
What's new in Rails 4
What's new in Rails 4What's new in Rails 4
What's new in Rails 4Fabio Akita
 
BPM-3 Advanced Workflow Deep Dive
BPM-3 Advanced Workflow Deep DiveBPM-3 Advanced Workflow Deep Dive
BPM-3 Advanced Workflow Deep DiveAlfresco Software
 
Uniface Lectures Webinar - Building Responsive Applications with Uniface: Dev...
Uniface Lectures Webinar - Building Responsive Applications with Uniface: Dev...Uniface Lectures Webinar - Building Responsive Applications with Uniface: Dev...
Uniface Lectures Webinar - Building Responsive Applications with Uniface: Dev...Uniface
 
JSF 2.0 (JavaEE Webinar)
JSF 2.0 (JavaEE Webinar)JSF 2.0 (JavaEE Webinar)
JSF 2.0 (JavaEE Webinar)Roger Kitain
 
Vaadin Introduction, 7.3 edition
Vaadin Introduction, 7.3 editionVaadin Introduction, 7.3 edition
Vaadin Introduction, 7.3 editionJoonas Lehtinen
 
WordPress Admin UI - Future Proofing Your Admin Pages
WordPress Admin UI - Future Proofing Your Admin PagesWordPress Admin UI - Future Proofing Your Admin Pages
WordPress Admin UI - Future Proofing Your Admin PagesBrandon Dove
 
Secure WordPress Development Practices
Secure WordPress Development PracticesSecure WordPress Development Practices
Secure WordPress Development PracticesBrandon Dove
 
Building and deploying React applications
Building and deploying React applicationsBuilding and deploying React applications
Building and deploying React applicationsAstrails
 
Html server control - ASP. NET with c#
Html server control - ASP. NET with c#Html server control - ASP. NET with c#
Html server control - ASP. NET with c#priya Nithya
 
ILUG 2010 - Deploying plug-ins to the enterprise
ILUG 2010 - Deploying plug-ins to the enterpriseILUG 2010 - Deploying plug-ins to the enterprise
ILUG 2010 - Deploying plug-ins to the enterpriseRené Winkelmeyer
 
Angular Tutorial Freshers and Experienced
Angular Tutorial Freshers and ExperiencedAngular Tutorial Freshers and Experienced
Angular Tutorial Freshers and Experiencedrajkamaltibacademy
 
2012.sandiego.wordcamp
2012.sandiego.wordcamp2012.sandiego.wordcamp
2012.sandiego.wordcampBrandon Dove
 
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010Hyperproductive JSF 2.0 @ JavaOne Brazil 2010
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010Arun Gupta
 
14 Fr 13 Civici Component Library Showdown
14 Fr 13 Civici Component Library Showdown14 Fr 13 Civici Component Library Showdown
14 Fr 13 Civici Component Library Showdowncagataycivici
 

Tendances (20)

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

Similaire à Primefaces Confess 2012

AnkaraJUG Kasım 2012 - PrimeFaces
AnkaraJUG Kasım 2012 - PrimeFacesAnkaraJUG Kasım 2012 - PrimeFaces
AnkaraJUG Kasım 2012 - PrimeFacesAnkara JUG
 
Primefaces Nextgen Lju
Primefaces Nextgen LjuPrimefaces Nextgen Lju
Primefaces Nextgen LjuSkills Matter
 
Rich Portlet Development in uPortal
Rich Portlet Development in uPortalRich Portlet Development in uPortal
Rich Portlet Development in uPortalJennifer Bourey
 
ASP.NET Overview - Alvin Lau
ASP.NET Overview - Alvin LauASP.NET Overview - Alvin Lau
ASP.NET Overview - Alvin LauSpiffy
 
JavaServer Faces 2.0 - JavaOne India 2011
JavaServer Faces 2.0 - JavaOne India 2011JavaServer Faces 2.0 - JavaOne India 2011
JavaServer Faces 2.0 - JavaOne India 2011Arun Gupta
 
HTML5: huh, what is it good for?
HTML5: huh, what is it good for?HTML5: huh, what is it good for?
HTML5: huh, what is it good for?Remy Sharp
 
Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0
Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0
Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0Arun Gupta
 
Repaso rápido a los nuevos estándares web
Repaso rápido a los nuevos estándares webRepaso rápido a los nuevos estándares web
Repaso rápido a los nuevos estándares webPablo Garaizar
 
Implementation of GUI Framework part3
Implementation of GUI Framework part3Implementation of GUI Framework part3
Implementation of GUI Framework part3masahiroookubo
 
Introduction to RichFaces
Introduction to RichFacesIntroduction to RichFaces
Introduction to RichFacesMax Katz
 
RichFaces: more concepts and features
RichFaces: more concepts and featuresRichFaces: more concepts and features
RichFaces: more concepts and featuresMax Katz
 
Bonnes pratiques de développement avec Node js
Bonnes pratiques de développement avec Node jsBonnes pratiques de développement avec Node js
Bonnes pratiques de développement avec Node jsFrancois Zaninotto
 
Easy Enterprise Integration Patterns with Apache Camel, ActiveMQ and ServiceMix
Easy Enterprise Integration Patterns with Apache Camel, ActiveMQ and ServiceMixEasy Enterprise Integration Patterns with Apache Camel, ActiveMQ and ServiceMix
Easy Enterprise Integration Patterns with Apache Camel, ActiveMQ and ServiceMixelliando dias
 
Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011Chris Alfano
 
Client-side Rendering with AngularJS
Client-side Rendering with AngularJSClient-side Rendering with AngularJS
Client-side Rendering with AngularJSDavid Lapsley
 
PrimeFaces: Next-Generation JSF Component Suite - Ian Hlavats
PrimeFaces: Next-Generation JSF Component Suite - Ian HlavatsPrimeFaces: Next-Generation JSF Component Suite - Ian Hlavats
PrimeFaces: Next-Generation JSF Component Suite - Ian Hlavatsjaxconf
 
Rails 6 frontend frameworks
Rails 6 frontend frameworksRails 6 frontend frameworks
Rails 6 frontend frameworksEric Guo
 

Similaire à Primefaces Confess 2012 (20)

AnkaraJUG Kasım 2012 - PrimeFaces
AnkaraJUG Kasım 2012 - PrimeFacesAnkaraJUG Kasım 2012 - PrimeFaces
AnkaraJUG Kasım 2012 - PrimeFaces
 
Primefaces Nextgen Lju
Primefaces Nextgen LjuPrimefaces Nextgen Lju
Primefaces Nextgen Lju
 
Rich Portlet Development in uPortal
Rich Portlet Development in uPortalRich Portlet Development in uPortal
Rich Portlet Development in uPortal
 
ASP.NET Overview - Alvin Lau
ASP.NET Overview - Alvin LauASP.NET Overview - Alvin Lau
ASP.NET Overview - Alvin Lau
 
JavaServer Faces 2.0 - JavaOne India 2011
JavaServer Faces 2.0 - JavaOne India 2011JavaServer Faces 2.0 - JavaOne India 2011
JavaServer Faces 2.0 - JavaOne India 2011
 
HTML5: huh, what is it good for?
HTML5: huh, what is it good for?HTML5: huh, what is it good for?
HTML5: huh, what is it good for?
 
Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0
Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0
Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0
 
Flask – Python
Flask – PythonFlask – Python
Flask – Python
 
Jsf
JsfJsf
Jsf
 
Repaso rápido a los nuevos estándares web
Repaso rápido a los nuevos estándares webRepaso rápido a los nuevos estándares web
Repaso rápido a los nuevos estándares web
 
Implementation of GUI Framework part3
Implementation of GUI Framework part3Implementation of GUI Framework part3
Implementation of GUI Framework part3
 
Introduction to RichFaces
Introduction to RichFacesIntroduction to RichFaces
Introduction to RichFaces
 
RichFaces: more concepts and features
RichFaces: more concepts and featuresRichFaces: more concepts and features
RichFaces: more concepts and features
 
Bonnes pratiques de développement avec Node js
Bonnes pratiques de développement avec Node jsBonnes pratiques de développement avec Node js
Bonnes pratiques de développement avec Node js
 
JSP
JSPJSP
JSP
 
Easy Enterprise Integration Patterns with Apache Camel, ActiveMQ and ServiceMix
Easy Enterprise Integration Patterns with Apache Camel, ActiveMQ and ServiceMixEasy Enterprise Integration Patterns with Apache Camel, ActiveMQ and ServiceMix
Easy Enterprise Integration Patterns with Apache Camel, ActiveMQ and ServiceMix
 
Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011
 
Client-side Rendering with AngularJS
Client-side Rendering with AngularJSClient-side Rendering with AngularJS
Client-side Rendering with AngularJS
 
PrimeFaces: Next-Generation JSF Component Suite - Ian Hlavats
PrimeFaces: Next-Generation JSF Component Suite - Ian HlavatsPrimeFaces: Next-Generation JSF Component Suite - Ian Hlavats
PrimeFaces: Next-Generation JSF Component Suite - Ian Hlavats
 
Rails 6 frontend frameworks
Rails 6 frontend frameworksRails 6 frontend frameworks
Rails 6 frontend frameworks
 

Plus de cagataycivici

PrimeNG - Components para la Vida Real
PrimeNG - Components para la Vida RealPrimeNG - Components para la Vida Real
PrimeNG - Components para la Vida Realcagataycivici
 
How to Mess Up Your Angular UI Components
How to Mess Up Your Angular UI ComponentsHow to Mess Up Your Angular UI Components
How to Mess Up Your Angular UI Componentscagataycivici
 
PrimeFaces User Guide 5.0
PrimeFaces User Guide 5.0PrimeFaces User Guide 5.0
PrimeFaces User Guide 5.0cagataycivici
 

Plus de cagataycivici (7)

PrimeNG - Components para la Vida Real
PrimeNG - Components para la Vida RealPrimeNG - Components para la Vida Real
PrimeNG - Components para la Vida Real
 
How to Mess Up Your Angular UI Components
How to Mess Up Your Angular UI ComponentsHow to Mess Up Your Angular UI Components
How to Mess Up Your Angular UI Components
 
Itsjustangular
ItsjustangularItsjustangular
Itsjustangular
 
PrimeFaces User Guide 5.0
PrimeFaces User Guide 5.0PrimeFaces User Guide 5.0
PrimeFaces User Guide 5.0
 
Open Your Source
Open Your SourceOpen Your Source
Open Your Source
 
Facelets
FaceletsFacelets
Facelets
 
Jsfsunum
JsfsunumJsfsunum
Jsfsunum
 

Dernier

Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 

Dernier (20)

Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 

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
  • 4.
  • 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