java server faces Çağatay Çivici apache myfaces team member [email protected]

28
Java Server Faces Çağatay Çivici Apache MyFaces Team Member [email protected]

Upload: hester-morton

Post on 26-Dec-2015

222 views

Category:

Documents


0 download

TRANSCRIPT

Java Server Faces

Çağatay ÇiviciApache MyFaces Team [email protected]

Çağatay Çivici Apache MyFaces Project Committer OpenLogic Expert Group Member Sourceforge jsf-comp project developer JSF Client Side Validators Acegi Security Framework’s 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

Sun Reference Implementation Apache MyFaces Oracle ADF IBM

Architecture

Similar Concepts

Asp.net Tapestry Wicket Swing

JSF vs Struts

Struts is an action framework Controller of the MVC pattern

JSF is an event driven and component oriented framework. JSF contains all the members of the MVC.

Model : Managed Beans View : Components Controller : Faces Servlet

JSF Component Model Covers a wide range components.

Reusable Customizable State aware

Easy to plug in third party components. Easy to create custom components of your

own. Renderers brings abstraction

Simple Example: HtmlInputText

Declared as; <h:inputText id=“id1” value=“xxx” />

Gives the output <input type=“text”

id=“parentformid:id1” value=“xxx” /> Customization attributes like;

Styleclass Javascript events (onmousover etc...)

Binding makes JSF powerful

Value binding; binds a bean’s variable to a component. <h:inputText

value=“#{person.name}” /> Action binding, binds a method to an

action component. <h:commandButton

action=“{personSavePage.savePerson}” />

JSF Component Tree 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

As a hidden variable Server

As a session entry

JSF Request LifeCycle

Conversion and Validation

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

IOC and Managed Beans JSF uses it’s own container to manage the beans in it’s 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

Navigation Handler View Handler Custom Resolvers Phaselisteners Custom Components

Multilanguage Support for resource bundles

<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

msg_welcome = Merhaba

Bundles on faces pages <f:loadBundle basename=“jsfsunum.labels" var="msg"/>

Integration with Spring JSF-Spring

Using a delegating variable resolver

<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>

Ajax with JSF

Components with ajax support JSF ajax frameworks

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

JSF IDE Support Exadel Studio IBM RSA Oracle JDeveloper Sun Studio Creator MyEclipse Bea Workshop Macromedia jsftoolbox Netbeans

Introducing Apache MyFaces

Open source implementation of JSF Contains extended tomahawk library Oracle ADF donation

MyFaces Component Demo 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

The End - Questions?

[email protected] www.jroller.com/page/cagataycivici