Java Server Faces: Çağatay Çivici Apache Myfaces Team Member
Java Server Faces: Çağatay Çivici Apache Myfaces Team Member
aatay ivici
Apache MyFaces Project Committer OpenLogic Expert Group Member Sourceforge jsf-comp project developer JSF Client Side Validators Acegi Security Frameworks JSF Components JFreeChart for JSF : JSF Chart Creator FacesTrace: Visual Debugger of JSF
Agenda
What is JSF? JSF Component Model and Binding mechanism JSF Request Lifecycle IOC and Managed Beans Navigations Internalization and Resource Bundles Extending JSF Integration with Other Frameworks (Spring Framework Example) Ajax with JSF Facelets Apache MyFaces IDE Support Future of JSF Questions
What is JSF?
a component oriented and event driven web framework to build up web applications. a Standard various implementations
Architecture
Similar Concepts
JSF vs Struts
Easy to plug in third party components. Easy to create custom components of your own. Renderers brings abstraction
Declared as;
<h:inputText id=id1 value=xxx /> <input type=text id=parentformid:id1 value=xxx /> Styleclass Javascript events (onmousover etc...)
Components are represented using a tree. <f:view> <h:form id=form1> <h:outputText id=lbl_name value=Name> <h:inputText id=txt_name value=NameValue> </h:form> </f:view>
Event Handling
Events are created based on the request parameters. Each event is broadcasted to the related listeners.
State Management
JSF saves and restores the state of the components in each faces request.
Client
Server
Submitted form values are strings Conversion takes place to convert these values to java objects Validation mechanism validates these converted objects
Built-in converters and validators Easy to write custom converters and validators
Case Study
JSF uses its own container to manage the beans in its context.
<managed-bean> <managed-bean-name>pc_Index</managed-bean-name> <managed-bean-class>demo.Index</managed-bean-class> <managed-bean-scope>request</managed-bean-scope> <managed-property> <property-name>someVariable</property-name> <value>#{pc_DB}</value> </managed-property> </managed-bean> <managed-bean> <managed-bean-name>pc_DB</managed-bean-name> <managed-bean-class>demo.Db</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean>
Navigations
<navigation-rule> <from-view-id>/login.jsp</from-view-id> <navigation-case> <from-outcome>success</from-outcome> <to-view-id>/mainmenu.jsp</to-view-id> </navigation-case> <navigation-case> <from-outcome>failure</from-outcome> <to-view-id>/login.jsp</to-view-id> </navigation-case> </navigation-rule>
Action specific
<from-action>#{loginBean.loginAction}</from-action> Supports patterns <from-view-id>*</from-view-id>
Extending JSF
Multilanguage
<application> <locale-config> <default-locale>tr</default-locale> <supported-locale>en</supported-locale> <supported-locale>en_US</supported-locale> <supported-locale>de</supported-locale> </locale-config> <message-bundle> jsfsunum.messages </message-bundle> </application>
jsfsunum/messages.tr
JSF-Spring
<application> <variable-resolver>
org.springframework.web.jsf.DelegatingVariableResolver </variable-resolver>; </application> <managed-bean> <managed-bean-name>backingBeanName</managed-bean-name> <managed-bean-class> yourpackagename.backingBeanClass </managed-bean-class> <managed-bean-scope>request</managed-bean-scope> <managed-property> <property-name>facadeService</property-name> <property-class> packagename.FacadeService </property-class> <value>#{facadeService}</value> </managed-property> </managed-bean>
JSF Avatar Ajax Anywhere Ajax4jsf IceFaces Ajax enabled myFaces components
Facelets
Replacing jsp markup with xhtml Templating Composite components Powerful view handler than jsf 1.1 No need for tag handlers of jsp
Exadel Studio IBM RSA Oracle JDeveloper Sun Studio Creator MyEclipse Bea Workshop Macromedia jsftoolbox Netbeans
Open source implementation of JSF Contains extended tomahawk library Oracle ADF donation
Basic form components Datatable File upload Date and Calendar Jscookmenu Schedule Accordion panel Tabbed Panel Ajax components Tree Dojo Toolkit Fisheye Html Editor Chart Creator (jsf-comp component)
Future
JSF 1.2 and later JSF 2.0 More powerful IDE support More components Integrated Ajax Support
[email protected] www.jroller.com/page/cagataycivici