450 likes | 831 Views
10 Tips for Java EE 7 with PrimeFaces. Mert Çalışkan & Martin Fousek Software Architect Software Developer at T2 Yazılım Ltd. at Oracle, NetBeans.
E N D
10 Tips for Java EE 7 with PrimeFaces Mert Çalışkan & Martin Fousek Software Architect Software Developer at T2 Yazılım Ltd. at Oracle, NetBeans
The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.
Agenda • Introduction • Java EE 7 & JavaServer Faces 2.2, PrimeFaces, NetBeans IDE • Tour through 10 features of the JSF and PF • Feature overview • Samples in action
Java EE 7 & JavaServer Faces 2.2 Java EE 7 – 14 JSRs and 9 MRs, themes: • HTML5 • Developer productivity • Enterprise demands JavaServer Faces 2.2 big ticket features: • HTML(5) Friendly Markup • Faces Flow • Resource Library Contract
PrimeFaces Open Source Component Library for JSF 2.xJSF 2.2 is supported with PF version 4.x Very Lightweight w/ Zero Configuration Plenty of examples in Showcase, extensive theming, provides mobile components Well documented, user guides, books & etc. Large and active community
NetBeans IDE Open source IDE Support for Java, PHP, C/C++, Groovy Latest features • Java SE 7, Java EE 7 and JavaFX • HTML(5) client side development,CSS preprocessors, JavaSciprt frameworks • Cordova, FindBugs, VCS improvements • PHP 5.4 and the newest PHP frameworks
Sample Codes Sample codes to demonstrate the tips Mavenized projects from Java EE 7 archetype Repository: github.com/marfous/j1demo-pf
HTML(5) Friendly Markup • New namespaces • passthrough elements: http://xmlns.jcp.org/jsf (TagDecorator) • passthrough attributes: http://xmlns.jcp.org/jsf/passthrough (RenderKit) • Advantages • Getting control over rendered Facelets • JSF components / JavaScript components / arbitrary mixing • Write and style pure HTML with benefits of JSF
HTML(5) Friendly Markup Form with usage of HTML friendly markup: validation by Bean Validation API with localized messages, custom Bean Validation annotation, passthrough attributes and elements, usage of jQuery plugin at JSF component. 01-HtmlFriendlyMarkup https://github.com/marfous/j1demo-pf
Resource Libraries Contracts • Theme definitions across one or more web applications • Libraries consisting of templates, insertion points, resources • Can be bundled directly into Web Application or within .jar library • How to choose the used one: • there is only one option • static or dynamic view definition • URL based definition within faces-config • Multi-templating
Resource Libraries Contracts Simple Resource Libraries Contracts usage, switching RLCs dynamically using Expression Language and ManagedBean. 02-ResourceLibrariesContracts https://github.com/marfous/j1demo-pf
Expression Language 3.0 • Communication between presentation layer and application logic • Deferred or immediate evaluation of expressions • Sets and gets data, invokes methods • Features • Standalone ELProcessor • Concatenation, semicolon and assignments operators • Static collections • Collection Operations (aligned with Java SE 8) • Lambda Expressions (aligned with Java SE 8)
Expression Language 3.0 Examples of Expression Language 3.0 features: standalone EL Processor, operators, static fields, collections, lambdas and collection operations. 03-ExpressionLanguage3 https://github.com/marfous/j1demo-pf
Prime Time with PrimeFaces Components • With 100+ Rich Set of Components • Built-in Ajax based on standard JSF 2.0 Ajax APIs • Client APIs based on • Enterprise theming w/ Theme RollerWith 4.0 – Sentinel We’re introducing cool stuff like, • Client Side Validation • Dialog Framework • Tree Drag & Drop • Deferred Loading and many more…
Prime Time with PrimeFaces Components Examples on advanced UI components:DataTable, Gmap, AutoComplete, Client Side Validation, Tree Drag and Drop, The Dialog Framework and others. 10-PrimeFacesComponents https://github.com/marfous/j1demo-pf
In the Jungle of PrimeFaces Themes • Powered w/ jQueryUI and ThemeRoller CSS Framework Skinning and Structural CSS architecture • ThemeRoller provides visual editor to create new themes • ~40 themes available by only adding JAR dependency • Advanced themes are also available • Twitter Bootstrap Theme • Metro UI Theme ($$) • Configuration is done by <context-param> in web.xml
In the Jungle of PrimeFaces Themes Theme variations on UI Components Configuration of theme infrastructure 04-PrimeFacesThemes https://github.com/marfous/j1demo-pf
PrimePush, PrimeUI and PrimeMobile • PrimePush brings first class support with Atmosphere Framework • WebSockets, long polling, streaming, jsonp • PrimeUI is spin-off from the JSF suite, provides rich javascript widgets • autoComplete, dataTable and many others (~35 components) • PrimeMobile offers UI components for mobile devices, supports for: • powered by jQuery
PrimePush, PrimeUI and PrimeMobile PrimePush Checkin Demo w/ PrimeMobile in Action PrimeUI integrated with REST Services 05-PrimePushUiMobile https://github.com/marfous/j1demo-pf
JSF scaffolding with PrimeFaces • Generation of CRUD skeleton from the database • NetBeans IDE: JSPs or vanilla Facelets • nbpfcrudgen plugin: Facelets with PrimeFaces • Last feature – NetBeans 7.3.1 generates CDI artifacts • Procedure • Generate entity classes from database • Generate JSF pages from entities
JSF scaffolding with PrimeFaces CRUD application generation using standard JavaServer Faces templates, generation of PrimeFaces templates. 06-JsfPrimeFacesScaffolding https://github.com/marfous/j1demo-pf
Faces Flows • Reusable collection of screens with defined entry and exit points • Nodes like switchNode, finalizer, methodCall etc. • Derived from proven technologies: Spring WebFlow, ADF Task Flow • JSF bound with CDI - @FlowScoped • Definition: • Faces-config configuration file • Java definition using FlowBuilder (@FlowDefinition)
Faces Flows Sample wizard using navigation elements of the Faces Flow, flow scope defined bean, Faces Flow component as a plugable library. 07-FacesFlow, 07-FacesFlowLibrary https://github.com/marfous/j1demo-pf
Annotation based component registration • Improved FacesComponent interface • Eliminates needs for the TLD file • CDI capable component • @FacesComponent(createTag = true, namespace = ... , // implicitly: http://xmlns.jcp.org/jsf/component tagName = ...)// implicitly: lowercased class name
Annotation based component registration Usage of the tag defined by @FacesComponent without any tag library, CDI binding in the component, Java SE project as a custom tag library. 08-FacesComponent, 08-FacesComponentLibrary https://github.com/marfous/j1demo-pf
File Upload • Servlet 3.0 multipart architecture • Standard component with/without AJAX requests • For lower JSF versions already available as PrimeFaces component • Prerequisites • Enctype multipart/form-data of the form • Servlet 3.0
File Upload File Upload of the standard JSF 2.2 and PrimeFaces library in action, with validation of type and size limit. 09-FileUpload https://github.com/marfous/j1demo-pf
Over 90 practical recipes to learn PrimeFaceswritten by: Oleg Varaksin & Yours Truly Author discount 40% with code: TBD PrimeFaces Cookbook
Useful Links • http://docs.oracle.com/javaee/7/tutorial/doc/home.htm • http://www.primefaces.org/showcase • http://blog.primefaces.org • https://netbeans.org/kb/trails/java-ee.html • http://sourceforge.net/projects/nbpfcrudgen