Пример JSF 2.0 hello world

JSF 2.0 Привет мир пример

В этом уроке мы покажем вам, как разработать пример hello world для JavaServer Faces (JSF) 2.0, покажет список зависимостей JSF 2.0, основные аннотации и конфигурации.

Проектная среда

Этот пример JSF 2.0 построен со следующими инструментами и технологиями

  1. JSF 2.1.7

  2. Maven 3

  3. Затмение 3.6

  4. JDK 1.6

  5. Tomcat 6.0.26

Сначала просмотрите окончательную структуру проекта, если вы не уверены, где следует создавать соответствующие файлы или папки позже.

jsf2-hello-world-example

1. JSF 2.0 Зависимости

Maven central repository has the JSF version up to 1.2 only, to get the *JSF 2.0, вам может потребоваться загрузить сJava.net repository. *
В центральном репозитории maven обновлена ​​библиотека JSF до версии 2.1.7. Предыдущий репозиторий Java.net больше не требуется.

For Java EE Application Server like Glassfish
На большинстве серверов приложений Java EE он имеетbuild-in support for JSF 2.0, поэтому вам необходимо загрузить единый JSF API для целей разработки.

...

  
    javax.faces
    jsf-api
    2.0
    provided
  


  
    java.net.m2
    java.net m2 repo
    http://download.java.net/maven/2
  

...

For simple servlet container like Tomcat
Это немного хлопотно, вам необходимо загрузить следующие зависимости.

Файл: pom.xml


    4.0.0
    com.example.common
    JavaServerFaces
    war
    1.0-SNAPSHOT
    JavaServerFaces Maven Webapp
    http://maven.apache.org

    

        
            com.sun.faces
            jsf-api
            2.1.7
        
        
            com.sun.faces
            jsf-impl
            2.1.7
        

        
            javax.servlet
            jstl
            1.2
        

        
            javax.servlet
            servlet-api
            2.5
        

        
            javax.servlet.jsp
            jsp-api
            2.1
        
                
        
            com.sun.el
            el-ri
            1.0
        

    

    
        JavaServerFaces

        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                2.3.1
                
                    1.6
                    1.6
                
            
        
    

Note
Для получения дополнительных сведений о зависимостях JSF 2.0 обратитесь к этомуofficial JSF 2.0 release note.

Warning
el-ri.jar - это спорная зависимость в контейнере сервлетов Tomcat, даже если она не указана в примечании к выпуску, но вам нужна эта библиотека для решения проблемы «http: // www. example.com/jsf2/jsf-2-0-tomcat-it-appears-the-jsp-version-of-the-container-is-older-than-2-1/[JSP-версия контейнера старше 2.1 …]" сообщение об ошибке.

Updated – 21-10-2010
Этот «el-ri.jar» слишком старый, рекомендуется использовать последнюю «el-impl-2.2.jar» изJava.net

     
      org.glassfish.web
      el-impl
      2.2
     

Updated – 25-07-2012
Эта зависимостьel-ri.jar больше не требуется в Tomcat 7.

2. JSF 2.0 Managed Bean

Java-бин или JSF-управляемый бин со свойством name для хранения пользовательских данных. В JSF управляемый компонент означает доступ к этому классу Java или компоненту со страницы JSF.

В JSF 2.0 используйте аннотацию@ManagedBean, чтобы указать, что это управляемый компонент.
HelloBean.java

package com.example.common;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import java.io.Serializable;

@ManagedBean
@SessionScoped
public class HelloBean implements Serializable {

    private static final long serialVersionUID = 1L;

    private String name;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

Note
В JSF 1.x вам нужно было объявить beans вfaces-config.xml, но в JSF 2.0 это больше не требуется.

3. JSF 2.0 Страницы

В JSF 2.0 рекомендуется создавать страницу JSF вXHTML file format, файле с расширением .xhtml.

Смотрите следующие две страницы JSF 2.0:

Note
Чтобы использовать компоненты или функции JSF 2.0, просто объявитеJSF namespace вверху страницы.

File : hello.xhtml - отображает текстовое поле JSF и связывает его с «helloBean» (управляемый компонент JSF), свойством «name», а также кнопкой для отображения «welcome.xhtml »при нажатии.





    
        JSF 2.0 Hello World
    
    
        

JSF 2.0 Hello World Example - hello.xhtml

Note
В JSF 1.x вам нужно было объявить «navigation rule» в «faces-config.xml», чтобы указать, какую страницу отображать при нажатии кнопки. В JSF 2.0 вы можете поместить имя страницы непосредственно в атрибут кнопки «action». Для простой навигации этого более чем достаточно, но для сложной навигации все же рекомендуется использовать «navigation rule» в «faces-config.xml».

File : welcome.xhtml - отобразить отправленное значение текстового поля.





    
        JSF 2.0 Hello World
    
    
        

JSF 2.0 Hello World Example - welcome.xhtml

Welcome #{helloBean.name}

\{…} указывает, что этоJSF expression language, в данном случае\{helloBean.name}, когда страница отправляется, JSF найдет «helloBean» и установит значение отправленного текстового поля через методsetName(). Когда отображается страницаwelcome.xhtml, JSF снова найдет тот же сеанс «helloBean» и отобразит значение свойства name с помощью методаgetName().

4. Конфигурация JSF 2.0 Serlvet

Как и любые другие стандартные веб-фреймворки, вам необходимо настроить JSF-файлы в файлеweb.xml.

Файл: web.xml




    JavaServerFaces

    
    
        javax.faces.PROJECT_STAGE
        Development
    

    
    
        faces/hello.xhtml
    

    
    
        Faces Servlet
        javax.faces.webapp.FacesServlet
        1
    

    
    
        Faces Servlet
        /faces/*
    
    
        Faces Servlet
        *.jsf
    
    
        Faces Servlet
        *.faces
    
    
        Faces Servlet
        *.xhtml
    

Задайте отображение «javax.faces.webapp.FacesServlet» и сопоставьте его с хорошо известными расширениями файлов JSF (/faces/, .jsf,.xhtml*,.faces *).

В этом случае следующие 4 URL указывают на один и тот жеhello.xhtml.

При разработке JSF 2.0 рекомендуется установить для «javax.faces.PROJECT_STAGE» значение «Development», это предоставит много полезной отладочной информации, позволяющей легко отслеживать ошибки. Для развертывания просто измените его на «Production», вы просто не хотите, чтобы ваш клиент смотрел на эту надоедливую отладочную информацию :).

5. Demo

Длинная статья заканчивается демонстрацией проекта :)

jsf2-hello-world-example-1

Простая страница JSF с текстовым полем и кнопкой.

jsf2-hello-world-example-2

При нажатии кнопки отображается значение отправленного текстового поля.

Скачать исходный код

Скачать (пример v2.1.7) -JSF2.0-hello-world-example-2.1.7.zip (8 КБ)

Скачать (старый пример v2.1.0-b03) -JSF-2-Hello-World-Example-2.1.0-b03.zip (8KB)