28
Java Server Faces Tomasz Nowak

Java Server Faces

  • Upload
    fola

  • View
    36

  • Download
    1

Embed Size (px)

DESCRIPTION

Java Server Faces. Tomasz Nowak. Konspekt. Historia Wstęp Architektura JSF Składniki aplikacji JSF. Historia. 1. Serwlety 2. JSP 3. Struts. Wstęp. Projekt Sun Microsystems JSF - specyfikacja JSF 1.0 (2004-03-11) JSF 1.2 (2006-05-11) Połączenie Struts i Swinga. Architektura JSF. - PowerPoint PPT Presentation

Citation preview

Page 1: Java Server Faces

Java Server Faces

Tomasz Nowak

Page 2: Java Server Faces

Konspekt

1. Historia

2. Wstęp

3. Architektura JSF

4. Składniki aplikacji JSF

Page 3: Java Server Faces

Historia

1. Serwlety

2. JSP

3. Struts

Page 4: Java Server Faces

Wstęp

• Projekt Sun Microsystems

• JSF - specyfikacja

• JSF 1.0 (2004-03-11)

• JSF 1.2 (2006-05-11)

• Połączenie Struts i Swinga

Page 5: Java Server Faces

Architektura JSF

• API do reprezentacji komponentów, zarządzania stanem, obsługi zdarzeń i walidacji

• Biblioteki znaczników do opisu interfejsu użytkownika

Page 6: Java Server Faces

Składniki aplikacji JSF

• Backing Beans

• Strony JSP

• Komponenety UI

• Pomocnicze klasy po stronie serwera

• Walidatory, obsługa zdarzeń oraz obsługa nawigacji

• Plik konfiguracji zasobów

Page 7: Java Server Faces

Przykład – greeting.jsp

Page 8: Java Server Faces

Przykład – greeting.jsp

Page 9: Java Server Faces

Przykład – response.jsp

Page 10: Java Server Faces

Kontroler JSF

• Serwlet FacesServlet pełni funkcję kontrolera• Pojedynczy punkt wejścia do aplikacji (web.xml)• Konfiguracja poprzez plik faces-config.xml

<servlet>

<servlet-name>FacesServlet</servlet-name>

<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>FacesServlet</servlet-name>

<url-pattern>/guess/*</url-pattern>

</servlet-mapping>

Page 11: Java Server Faces

Backing Bean

• Spełnia reguły JavaBeans

• Właściwości i metody związane z komponentami użytkownika

• Dodatkowo: - walidacja

- obsługa zdarzeń

- nawigacja

Page 12: Java Server Faces

Backing Bean

public class UserNumberBean {

Integer randomInt = null;Integer userNumber = null;String response = null;private long maximum = 0;private long minimum = 0;

public UserNumberBean() { …}

public String getResponse() {…}…

Page 13: Java Server Faces

Managed-bean (faces-config.xml)<managed-bean>   

<managed-bean-name>

UserNumberBean

</managed-bean-name>

<managed-bean-class>

     guessNumber.UserNumberBean

</managed-bean-class>   

<managed-bean-scope>

session

</managed-bean-scope>  

<managed-property>

    <property-name>minimum</property-name>

    <property-class>long</property-class>

<value>0</value>

</managed-property>

Page 14: Java Server Faces

Strona JSF  <HTML xmlns="http://www.w3.org/1999/xhtml"xml:lang="en">  

<HEAD> <title>Hello</title> </HEAD>  

<%@ page contentType="application/xhtml+xml" %>

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>

  <%@ taglib uri="http:.//java.sun.com/jsf/core" prefix="f" %>

<body>

<f:view>   

<h:form id="helloForm1">

 …

</h:form>

</f:view>

</body>

</HTML>

Page 15: Java Server Faces

Strona JSF - omowienie

<h2>

Hi. My name is Lock. I'm thinking of a number

from <h:outputText value="#{UserNumberBean.minimum}"/>

to <h:outputText value="#{UserNumberBean.maximum}"/>.

Can you guess it?

</h2>

Page 16: Java Server Faces

Strona JSF - omówienie<h:inputText

id="userNo" value="#{UserNumberBean.userNumber}"

converterMessage="#{ErrMsg.userNoConvert}"> <f:validateLongRange

minimum="#{UserNumberBean.minimum}" maximum="#{UserNumberBean.maximum}" />

</h:inputText>

<h:commandButton id="submit" action="success" value="Submit" />…<h:message id="errors1" for="userNo"/>

Page 17: Java Server Faces

Walidacja

• Walidacja w metodzie BackingBeana• Niejawna walidacja automatyczna (atrybutu

REQUIRED)• Predefiniowane walidatory ( f:validateLength,

f:validateDoubleRange, f:validateLongRange)• Własne walidatory (implementujące interfejs

Validator, rejestrowane w faces-config.xml)

Page 18: Java Server Faces

Komunikaty o błędzie

Pliki *.properties

ApplicationMessages.properties

userNoConvert=The value you entered is not a number.

Page 19: Java Server Faces

Komunikaty o błędzie (faces-config)

<application>

<resource-bundle>

<base-name>

guessNumber.ApplicationMessages

</base-name>

<var>ErrMsg</var>

</resource-bundle>

</application>

Page 20: Java Server Faces

Komunikaty o błędzie

<h:inputText

id="userNo"

label="User Number"

value="#{UserNumberBean.userNumber}"

converterMessage="#{ErrMsg.userNoConvert}">

...

</h:inputText>

Page 21: Java Server Faces

Nawigacjafaces-config.xml

<navigation-rule><from-view-id>/greeting.jsp</from-view-id>

<navigation-case><from-outcome>success</from-outcome>

<to-view-id>/response.jsp</to-view-id></navigation-case>

</navigation-rule>

greeting.jsp

<h:commandButton id="submit" action="success" />

Page 22: Java Server Faces

response.jspresponse.jsp

<h:outputText id="result" value="#{UserNumberBean.response}"/>

UserNumberBean.java

public String getResponse() { if ((userNumber != null) && (userNumber.compareTo(randomInt) == 0)) return "Yay! You got it!"; else return "Sorry, " + userNumber + " is incorrect.";

Page 23: Java Server Faces

Procedury obsługi zdarzeń

• ActionListener

• ValueChangeListener

Page 24: Java Server Faces

ActionListener

<h:commandButton actionListener=”#bean.sideEffect}”Immediate=„true”/>

public void sideEffect(ActionEvent event){

//np. aktywacja/deaktywacja innych //elementów formularza

Page 25: Java Server Faces

ValueChangeListener

<h:commandButton value=‘Zaloguj’ disabled=”true”/>

<h:selectBooleanCheckbox binding=”#{loginBean.selectBooleanCheckbox1}”

id=”selectBooleanCheckbox”

valueChangeListener=”loginBean.checkbox1Changed}”

onchange=”submit()”/>

Public void checkbox1Changed(ValueChangeEvent valueChangeEvent)

{

if(selectBooleanCheckbox1.isSelected())

commandButton1.setDisabled(false);

FacesContext context = FacesContext.getCurrentInstance();

context.renderResponse();

Page 26: Java Server Faces

Internacjonalizacja (faces-config)

<application><message-bundle>

com.sun.bookstore6.resources.ApplicationMessages</message-bundle>

<resource-bundle><base-name>

com.sun.bookstore6.resources.CustomMessages</base-name>

<var>customMessages</var> </resource-bundle> <locale-config> <default-locale>en</default-locale>

<supported-locale>es</supported-locale> <supported-locale>de</supported-locale>

<supported-locale>fr</supported-locale></locale-config>

</application>

Page 27: Java Server Faces

Internacjonalizacja

<f:loadBundle var=” customMessages” />

String current = event.getComponent().getId();

FacesContext context =FacesContext.getCurrentInstance();

context.getViewRoot() .setLocale((Locale) locales.get(current));

Page 28: Java Server Faces

Źródła

• http://java.sun.com/javaee/javaserverfaces/ - strona domowa

• http://java.sun.com/javaee/5/docs/tutorial/doc/index.html - tutorial

• http://wazniak.mimuw.edu.pl/index.php?title=AWWW-1st3.6-w11.tresc-1.0-toc – prezentacja o JSF