68
ÇAĞATAY ÇİVİCİ

PrimeTime JSF with PrimeFaces - Dec 2014

Embed Size (px)

Citation preview

Page 1: PrimeTime JSF with PrimeFaces - Dec 2014

ÇAĞATAY ÇİVİCİ

Page 2: PrimeTime JSF with PrimeFaces - Dec 2014

Çağatay Çivici

JSF Expert Group Member (JSR 314, 344 and 372)

PrimeFaces Architect and Lead Developer

Apache MyFaces PMC

Speaker, Author, Reviewer

Founder of PrimeTek Bilişim

Nickname: optimus.prime

Page 3: PrimeTime JSF with PrimeFaces - Dec 2014

PrimeTek BilişimJava EE and OSS

Consulting

Training

Delivery

www.primetek.com.tr

Page 4: PrimeTime JSF with PrimeFaces - Dec 2014
Page 5: PrimeTime JSF with PrimeFaces - Dec 2014

6 years old

Page 6: PrimeTime JSF with PrimeFaces - Dec 2014

Lightweight

Page 7: PrimeTime JSF with PrimeFaces - Dec 2014

Easy to Use

Page 8: PrimeTime JSF with PrimeFaces - Dec 2014

Only 1 Jar

Page 9: PrimeTime JSF with PrimeFaces - Dec 2014

No required dependencies

Page 10: PrimeTime JSF with PrimeFaces - Dec 2014

Zero Config

Page 11: PrimeTime JSF with PrimeFaces - Dec 2014

Who Uses PrimeFaces?

Page 12: PrimeTime JSF with PrimeFaces - Dec 2014

Who Uses PrimeFaces?

Page 13: PrimeTime JSF with PrimeFaces - Dec 2014

Who Uses PrimeFaces?

Page 14: PrimeTime JSF with PrimeFaces - Dec 2014

PrimeFaces in the Wild

Page 15: PrimeTime JSF with PrimeFaces - Dec 2014

PrimeFaces vs *Faces

Page 16: PrimeTime JSF with PrimeFaces - Dec 2014

PrimeFaces vs Vaadin

Page 17: PrimeTime JSF with PrimeFaces - Dec 2014

Global

Page 18: PrimeTime JSF with PrimeFaces - Dec 2014

100+ UI Components

Page 19: PrimeTime JSF with PrimeFaces - Dec 2014

Mock OS X

Page 20: PrimeTime JSF with PrimeFaces - Dec 2014

Form Components

Page 21: PrimeTime JSF with PrimeFaces - Dec 2014

Browser Support

Page 22: PrimeTime JSF with PrimeFaces - Dec 2014

Hide Complexity

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

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

</p:tabView>

CSS Override

JS API

Client Callbacks

Ajax Callbacks

CSS JS AJAX

Page 23: PrimeTime JSF with PrimeFaces - Dec 2014

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

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

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

</script>

You get:

JSF

Markup

Script

Page 24: PrimeTime JSF with PrimeFaces - Dec 2014

Accessibility

Keyboard/Mouse

ARIA Attributes

Page 25: PrimeTime JSF with PrimeFaces - Dec 2014

HTML5

canvas

data-*

websockets

forms media

Page 26: PrimeTime JSF with PrimeFaces - Dec 2014

Ajax in PrimeFaces

Server APIs: Standard JSF 2

Client APIs:

Page 27: PrimeTime JSF with PrimeFaces - Dec 2014

autoUpdate

p:ajax

RequestContext

Callbacks

AjaxStatus

Selectors

partialSubmit

Ajax Extensions

Page 28: PrimeTime JSF with PrimeFaces - Dec 2014

Optimizations

CompressMinify

On The Fly Loading

Merge

and

ResourceHandling

Page 29: PrimeTime JSF with PrimeFaces - Dec 2014

Demo

Page 30: PrimeTime JSF with PrimeFaces - Dec 2014

Dialog Framework

target.xhtmlmain.xhtml

.openDialog("target");

.closeDialog(data);

Page 31: PrimeTime JSF with PrimeFaces - Dec 2014

Demo

Page 32: PrimeTime JSF with PrimeFaces - Dec 2014

Client Side Validation

Server Side Compatible

Bean Validation Extension API

Events

Page 33: PrimeTime JSF with PrimeFaces - Dec 2014

Client Side Validation<p:inputText id="name" value="#{validationView.text}" required="true" label="Name"/>

<p:inputText id="number" value="#{validationView.integer}" label="Number"> <f:validateDoubleRange minimum="5" maximum="8" /> </p:inputText> <p:message for="number" /> <p:inputText id="regex" value="#{validationView.regexText}" validatorMessage="Value does not match pattern."> <f:validateRegex pattern="^[a-zA-Z]+$" /> </p:inputText> ! <p:inputText id="date" value="#{validationView.date}" label="Date"> <f:convertDateTime pattern="MM/dd/yyyy" /> </p:inputText>

Page 34: PrimeTime JSF with PrimeFaces - Dec 2014

Bean Validation@ManagedBean

public class BeanValidationView { @Size(min=2,max=5) private String name; @Min(10) @Max(20) private Integer age; @DecimalMax(value= "99.9", message = "Shold not exceed 99.9") private Double amount; @Digits(integer=3,fraction=2) private Double amount2; @AssertTrue private boolean checked; @Past private Date pastDate; @Future private Date futureDate; @Pattern(regexp="^[-+]?\\d+$") private String pattern;

Page 35: PrimeTime JSF with PrimeFaces - Dec 2014

Client Side Bean Validation<p:inputText id="name" value="#{beanValidationView.name}" label="Name"/> !<p:inputText id="age" value="#{beanValidationView.age}" label="Age"/> <p:inputText id="amount" value="#{beanValidationView.amount}" label="Amount"/> <p:inputText id="amount2" value="#{beanValidationView.amount2}" label="Amount 2"/> <p:inputText id="pattern" value="#{beanValidationView.pattern}" label="pattern"/> !<p:selectBooleanCheckbox id="checked" value="#{beanValidationView.checked}" /> <p:inputText id="psstDate" value="#{beanValidationView.pastDate}"> <f:convertDateTime pattern="MM/dd/yyyy" /> </p:inputText> <p:inputText id="futureDate" value="#{beanValidationView.futureDate}"> <f:convertDateTime pattern="MM/dd/yyyy" /> </p:inputText>

Page 36: PrimeTime JSF with PrimeFaces - Dec 2014

Demo

Page 37: PrimeTime JSF with PrimeFaces - Dec 2014

Themes

Page 38: PrimeTime JSF with PrimeFaces - Dec 2014

Twitter Bootstrap Theme

Page 39: PrimeTime JSF with PrimeFaces - Dec 2014

MetroUI Theme

Page 40: PrimeTime JSF with PrimeFaces - Dec 2014

Install a Theme

Add primefaces-{themename}.jar

Configure<context-param>

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

</context-param>

Page 41: PrimeTime JSF with PrimeFaces - Dec 2014

Roll your own

Page 42: PrimeTime JSF with PrimeFaces - Dec 2014

Premium Themes

Page 43: PrimeTime JSF with PrimeFaces - Dec 2014

Premium Layouts

Page 44: PrimeTime JSF with PrimeFaces - Dec 2014

Demo

Page 45: PrimeTime JSF with PrimeFaces - Dec 2014

PrimeFaces Mobile

Page 46: PrimeTime JSF with PrimeFaces - Dec 2014

<h:body> <pm:page id="first"> <pm:header title="Twitter" theme="b"></pm:header> <pm:content> <h:form id="main"> <p:growl id="messages" showDetail="true" /> <h2>See what’s happening right now.</h2> <p:inputText id="search" value="#{twitterView.keyword}" type="search" /> <p:commandButton value="Search" icon="search" actionListener="#{twitterView.search}" update="tweets search"/> <p:dataList id="tweets" value="#{twitterView.tweets}" var="tweet"> <p:graphicImage value="#{tweet.user.biggerProfileImageURL}" /> <h2>#{tweet.user.screenName}</h2> </p:dataList> </h:form> </pm:page> </h:body>

PrimeFaces Mobile

Page 47: PrimeTime JSF with PrimeFaces - Dec 2014

powered by

PrimeFaces Mobile

Page 48: PrimeTime JSF with PrimeFaces - Dec 2014

Demo

Page 49: PrimeTime JSF with PrimeFaces - Dec 2014

PrimeFaces Push

Atmosphere

Page 50: PrimeTime JSF with PrimeFaces - Dec 2014

PrimeFaces Push

websockets fallback transports

scalable portable

Page 51: PrimeTime JSF with PrimeFaces - Dec 2014

Demo

Page 52: PrimeTime JSF with PrimeFaces - Dec 2014

Javascript CSS

REST, Jax-RS, Php, Spring MVC ...

Page 53: PrimeTime JSF with PrimeFaces - Dec 2014

Vanilla Prime<input id=”spinner” type=”text” />

<div id="default"> <ul>

<li><a href="#tab1">Tab 1</a></li> <li><a href="#tab2">Tab 2</a></li> <li><a href="#tab3">Tab 3</a></li>

</ul> <div>

<div id="tab1"> content 1

</div> <div id="tab2">

content 2 </div> <div id="tab3">

content 3 </div>

</div> </div>

$(‘#spinner’).puispinner();

$(‘#default’).puitabview();

$(‘#default’).puitabview({ orientation: ‘left’

});

Page 54: PrimeTime JSF with PrimeFaces - Dec 2014

Demo

Page 55: PrimeTime JSF with PrimeFaces - Dec 2014

Portlets

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

via

Page 56: PrimeTime JSF with PrimeFaces - Dec 2014

On the Cloud

http://primefaces-rocks.appspot.com

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

http://blog.jelastic.com/2012/06/11/how-to-deploy-primefaces-applications-into-jelastic-cloud/

Page 57: PrimeTime JSF with PrimeFaces - Dec 2014

Documentation

600~ Pages

Page 58: PrimeTime JSF with PrimeFaces - Dec 2014

Books

Page 59: PrimeTime JSF with PrimeFaces - Dec 2014

Community

120K Posts, 45K Members

Page 60: PrimeTime JSF with PrimeFaces - Dec 2014

Bundled with NetBeans

Page 61: PrimeTime JSF with PrimeFaces - Dec 2014

NetBeans Plugin

Page 62: PrimeTime JSF with PrimeFaces - Dec 2014

NetBeans Plugin

Page 63: PrimeTime JSF with PrimeFaces - Dec 2014

NetBeans Plugin

Page 64: PrimeTime JSF with PrimeFaces - Dec 2014

NetBeans Plugin

Page 65: PrimeTime JSF with PrimeFaces - Dec 2014

PrimeFaces ELITE

COMMUNITY ELITE

5.0

5.1

5.0

5.1

5.1.15.1.2

5.1.x…

$249 / year

Page 66: PrimeTime JSF with PrimeFaces - Dec 2014

PrimeFaces PRO

TrainingSupport Consulting

Page 67: PrimeTime JSF with PrimeFaces - Dec 2014

RoadMap

Current 5.1

Next 5.2

Maintenance 5.1.x Elite

Improve current feature set

New components

Premium Themes and Layouts

Page 68: PrimeTime JSF with PrimeFaces - Dec 2014

Q/[email protected]

@primefaces

groups/primefaces

http://blog.primefaces.org