В этом уроке мы покажем вам, как разработать пример hello world для JavaServer Faces (JSF) 2.0, покажет список зависимостей JSF 2.0, основные аннотации и конфигурации.
Проектная среда
Этот пример JSF 2.0 построен со следующими инструментами и технологиями
JSF 2.1.7
Maven 3
Затмение 3.6
JDK 1.6
Tomcat 6.0.26
Сначала просмотрите окончательную структуру проекта, если вы не уверены, где следует создавать соответствующие файлы или папки позже.
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 для целей разработки.
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.webel-impl2.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.
При разработке JSF 2.0 рекомендуется установить для «javax.faces.PROJECT_STAGE» значение «Development», это предоставит много полезной отладочной информации, позволяющей легко отслеживать ошибки. Для развертывания просто измените его на «Production», вы просто не хотите, чтобы ваш клиент смотрел на эту надоедливую отладочную информацию :).
5. Demo
Длинная статья заканчивается демонстрацией проекта :)