primefaces confess 2012

56
Çagatay Çivici

Upload: cagataycivici

Post on 06-May-2015

21.644 views

Category:

Technology


3 download

DESCRIPTION

PrimeFaces Session at Confess 2012

TRANSCRIPT

Page 1: Primefaces Confess 2012

Çagatay Çivici

Page 2: Primefaces Confess 2012

• JSF Expert Group Member (JSR-314, JSR-344)

• PrimeFaces Lead

• Apache MyFaces PMC

• Speaker, Author, Reviewer

• Co-Founder of Prime Teknoloji

Çagatay Çivici

Page 3: Primefaces Confess 2012

• Specialized in Java EE and Agile

• Consulting

• Training

• Delivery

• Offices in Istanbul and Ankara

• www.prime.com.tr

Prime Teknoloji

Page 4: Primefaces Confess 2012
Page 5: Primefaces Confess 2012

3 Years Old

Page 6: Primefaces Confess 2012

Lightweight

Page 7: Primefaces Confess 2012

Easy to Use

Page 8: Primefaces Confess 2012

1.7~ mb

Only 1 Jar

Page 9: Primefaces Confess 2012

No Required Dependencies

Page 10: Primefaces Confess 2012

Zero Config

Page 11: Primefaces Confess 2012

Who Uses?

Page 12: Primefaces Confess 2012

In The Wild

Page 13: Primefaces Confess 2012

Popularity

Page 14: Primefaces Confess 2012

Global

Colombia

Page 15: Primefaces Confess 2012

100+ UI Components

Page 16: Primefaces Confess 2012

Advanced UIs

Page 17: Primefaces Confess 2012

Form Components

Page 18: Primefaces Confess 2012

Hide Complexity

Keep Flexibility<p:tabView onTabChange=”handleTabChange()”>

<p:ajax event=”change” listener=”#{bean.onTabChange}” update=”comp” />//tabs

</p:tabView>

CSSOverride

JSAPI

ClientCallbacks

AjaxCallbacks

CSS JS AJAX

Page 19: Primefaces Confess 2012

<p:schedule id=”sch” value=”#{bean.model}” editable=”true” />

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

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

</script>

Page

Markup

Script

Anatomy of a Component

Page 20: Primefaces Confess 2012

Accessibility

Keyboard/Mouse

ARIA Attributes

Page 21: Primefaces Confess 2012

HTML5

canvas

data-*

websockets

forms media

Page 22: Primefaces Confess 2012

Server APIs: Standard JSF 2

Client APIs:

PrimeFaces Ajax

Page 23: Primefaces Confess 2012

autoUpdate

p:ajax

RequestContext

Callbacks

AjaxStatus

Selectors

partialSubmit

Ajax Extensions

Page 24: Primefaces Confess 2012

p:ajax f:ajaxoncomplete

onerror

onstart

async

global

onsuccess

onevent

onerror

Page 25: Primefaces Confess 2012

AjaxStatus<p:ajaxStatus>

<f:facet name=”start”><p:graphicImage value=”fancyanimation.gif” />

</f:facet><f:facet name=”complete”>

<h:outputText value=”Request Completed” /></f:facet>

</p:ajaxStatus>

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

<p:commandButton global=”true|false” />

Declarative

Programmatic

Global

Page 26: Primefaces Confess 2012

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

<p:dialog widgetVar=”dialogWidget” ... />

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

}

Page

Bean

RequestContext - Scripts

Page 27: Primefaces Confess 2012

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

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

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

}

Page

Bean

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

update=”val” />

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

RequestContext - Update

Page 28: Primefaces Confess 2012

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

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

public void save() {RequestContext rc = RequestContext.getCurrentInstance();rc.scrollTo(“val”);

}

Page

Bean

RequestContext - Scroll

Page 29: Primefaces Confess 2012

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

<p:growl id=”messages” autoUpdate=”true”/> <p:commandButton value=”Save” /> <p:commandButton value=”Update” /> <p:commandButton value=”Delete” />

AutoUpdate

becomes

Page 30: Primefaces Confess 2012

PartialSubmit

Post Data:javax.faces.partial.ajax=true&javax.faces.source=form%3Aj_idt18&javax.faces.partial.execute=form%3Aname&javax.faces.partial.render=form%3Adisplay&form%3Aj_idt18=form%3Aj_idt18&form=form&form%3Aname=&form%3Aj_idt20=&form%3Aj_idt22=&form%3Aj_idt24=&form%3Aj_idt26=&form%3Aj_idt28=&form%3Aj_idt30=&form%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=7916482521909421983%3A-2156051337299048496

Post Data:javax.faces.partial.ajax=true&javax.faces.source=form%3Aj_idt18&javax.faces.partial.execute=form%3Aname&javax.faces.partial.render=form%3Adisplay&form%3Aj_idt18=form%3Aj_idt18&form=form&form%3Aname=&javax.faces.ViewState=7916482521909421983%3A-2156051337299048496

False True

Page 31: Primefaces Confess 2012

update=”@(form)”

update=”@(form.first)”

update=”@(.mystyle)”

update=”@(.ui-datatable)”

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

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

PrimeFaces Selectors (PFS)

Page 32: Primefaces Confess 2012

Optimizations

CompressMinify

On The Fly Loading

Merge

and

ResourceHandling

Page 33: Primefaces Confess 2012

Demo

Page 34: Primefaces Confess 2012

Themes

Page 35: Primefaces Confess 2012

Install a Theme

Add primefaces-{themename}.jar

Configure<context-param>

<param-name>primefaces.THEME</param-name><param-value>{themename}</param-value>

</context-param>

Page 36: Primefaces Confess 2012

Roll Your Own

Page 37: Primefaces Confess 2012

Advanced Themes

Page 38: Primefaces Confess 2012

Demo

Page 39: Primefaces Confess 2012

PrimeFaces Mobile

Page 40: Primefaces Confess 2012

<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

Page 41: Primefaces Confess 2012

powered by

PrimeFaces Mobile

Page 42: Primefaces Confess 2012

Demo

Page 43: Primefaces Confess 2012

WebSockets

PrimeFaces Push

Page 44: Primefaces Confess 2012

JSF APPPushServer

(Jetty)

PrimeFaces Push

12 3

4 4 44

4

Page 45: Primefaces Confess 2012

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

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

}

<script type=”text/javascript”>function handleMessage(event, data) {

//data -> “Hello everyone!”}

</script>

Page

Bean

Callback

PrimeFaces Push

Page 46: Primefaces Confess 2012

Demo

Page 47: Primefaces Confess 2012

Back to Atmosphere?

Page 48: Primefaces Confess 2012

Sample: /svn/examples/trunk/prime-portlet

Portlets

Page 49: Primefaces Confess 2012

http://primefaces-rocks.appspot.com

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

On The Cloud

Page 50: Primefaces Confess 2012

450+ Pages

Documentation

Page 51: Primefaces Confess 2012

2000 posts / month

Community

Page 52: Primefaces Confess 2012

Bundled with NetBeans

Page 53: Primefaces Confess 2012

TrainingSupport Consulting

Enterprise

Page 54: Primefaces Confess 2012

Scaffolding

Page 55: Primefaces Confess 2012

• Current 3.2

• Next 3.3

• Keep on 3.x

• PrimeFaces Cookbook

• De-Facto Standard

Roadmap