JSF days 2009

MPDL  Restricted Access to MPDL JSF Days 2009

Location: Vienna Date: 2009-04-01 until 2009-04-03

Participants: Markus Haarlaender, Tobias Schraut

Topics / Sessions

 * JSF 2.0 New Feature Tour
 * ordering of artifacts improved
 * mixing of different frameworks / components will be easier (i.e. ICE Faces and Trinidad)
 * System Events
 * new events are thrown during JSF lifecycle
 * arbitrary listeners can be registered for 3 scopes (component, UIViewRoot, Application)
 * replaces PhaseListener
 * New Resources
 * new important resources / tags added for ensuring continous JSF page and full acces in the UIViewRoot (no critical mixing with simple HTML components)
 * head / body (, )
 * Script tag ()
 * Stylesheet tag ()
 * New Resource Handling
 * Resources like images, stylesheets etc can be fetched from different sources (e.g. jars)
 * they support full I18N
 * Facelets
 * Full integration of Facelets in JSF 2.0
 * AJAX integration
 * functionality taken from a4j project
 * declarative usage by  tags for adding AJAX behaviour to a component
 * programmatic usage by JavaScript reference on page (jsf.js)
 * reRender attribute for components to be reloaded
 * Composite components
 * easy creation of reusable components
 * possibility to use parameters
 * Partial state saving
 * performace improvements bcs not the whole state has to be stored
 * View Traversal
 * Introduction of visitors for Context and Tree
 * every component can be visited and manipulated
 * DataModel / List bug fixed
 * View parameters
 * possibility to add parameters for URL param recognition to a page in the metadata section
 * bookmarkable pages possible (NOTE: this just means bookmarkable pages, NOT pretty Urls)
 * new components for forcing the browser to submit a GET request
 * Link: 
 * Button: 
 * Exception Handling
 * new Exeption Handler for all exceptions
 * exceptions can be decorated
 * different JSF profiles / project stages (i.e. development -> exceptions are displayed as messages on the page for easier development)
 * improved EL
 * Parameters can directly be passed to bean methods from Java EE 6 on
 * replaces setProperty ActionListener
 * New Scopes
 * Flash: keeps data until "next" request
 * nice for message handling
 * messages are also kept for page redirects (replaces our own messages PhaseListener)
 * View: keeps the data as long as the user interacts with the same view
 * in general: scopes can be set via annotations
 * Faces Context
 * is partially available and manageable during startup and shutdown
 * Timeline / estimations
 * got in contact with Ed Burns (JSF initiator), he is satisfied with the current state of specification and implementation of JSF 2.0. He told us that he expects the stable release of JSF 2.0 in June.


 * JBoss RichFaces
 * nice demonstration of RichFaces framework but components are not sophisticated enough for us


 * AJAX Push for revolutionary Enterprise Applications
 * Description: active server side data pushing to connected clients
 * 3 methods available
 * polling
 * clients sends request to server periodically (i.e. every 2 seconds) and asks for new data
 * pro: easy implementation and technique
 * con: unnecessary and useless traffic
 * long polling
 * client sends request which is blocked by server and finished when new data is available
 * afterwards client starts new request to get the new data
 * pro: less requests
 * con: no easy implementation
 * streaming
 * client sends request which is blocked by server
 * server sends back chunks of response every time when new data is available
 * pro: no useless requests
 * con: hard to implement
 * conclusion: nice Web 2.0 feature which is often used for chat systems or CSCW (computer supported collaborative work). Recommendation: Wait for Servlet 3.0 for better Ajax push support.
 * See presentation slides: [[Media:1_1_4_kiener_ajax_push-for-revol-enterprise_appl.pdf]]


 * Writing killer JSF 2.0 UI components
 * Nice demonstration of how to build composite components with JSF 2.0


 * Templating with JSF 2.0
 * before JSF 2.0, 3 posibilities
 * TILES (Struts)
 * Clay (automatic generation of JSF components out of HTML code supported)
 * Facelets (automatic generation of JSF components out of HTML code supported)
 * JSF 2.0
 * Facelets are integrated so this should be used


 * Security patterns
 * Overview of biggest security problems:
 * Most important: unchecked or wrongly checked user input, i.e. SQL injection
 * Validation for every user input needed (Recommendation: Whitelist for possible entries or characters and encode the rest OR preselection if possible)
 * Basic validation (JSR 303): Annotations for properties
 * XACML: replace SunXACML with Heras AF due to security and maintenance reasons


 * Comet for AJAX Push
 * Nice demonstration of server side push, but quite complicated, server dependent and not really standardized yet. Better wait for servlet 3.0


 * Trinidad in action
 * Demonstration of trinidad components
 * Skinning
 * server side Javascript generation
 * conclusion: no really new information. We already use the most interesting features.
 * Got into contact with trinidad developer from oracle and got the promise for bugfix support from oracle team for our trinidad problems


 * Challenges of JSF Website development
 * Demonstration of fleXive CMS
 * Bookmarkable pages
 * RESTful Urls
 * dedicated servlet filter to rewrite Urls (has to be injected into beans by managed properties)
 * project UrlRewriteFilter (independent from JSF, posibility to rewrite all other sources i.e. images)
 * project RestFaces (annotated action methos are called if Urls has a certain pattern)
 * project PrettyFaces (GET paramters don't get lost, every form is submitted to restful Url) Best solution for JSF!
 * high accessability (looks nice with JavaScript and still works without). Some YUI components used for this.
 * got into contact with developer of fleXive CMS. He will help us with Pretty Faces etc if possible.