вторник, 17 апреля 2012 г.

Введение в JSF - Доступ к бинам


Если вы только начали читать этот блог, то советую прочитать предидущие примеры jsf. В этом уроке я расскажу как использовать Управляемые бины в JSF страницах. Мы будем использовать приложение Hello World, которое мы разработали в прошлом уроке.

Управляемые бины - Глубокий взгляд

Java бин - это Java класс который предоставляет доступ к своим свойствам и методам JSF страницам. Вы имеете доступ к свойствам (переменным) бина по средствам общепринятого стандарта - get/set методы. К примеру, если у вас есть свойство name, то метод для доступа к этому свойству будет getName() (первая буква переменной в названии метода должна быть заглавной).

Вот пример управляемого бина:

package org.netlink.examples;
import javax.inject.*;
import javax.enterprise.context.SessionScoped;
import java.io.Serializable;
@Named
@SessionScoped

public class MyBean implements Serializable {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
1. @Named - аннотация, котороя указывает что это CDI (Context & Dependency Injection) бин. Это очень удобно так как не надо объявлять бин в faces-config.xml. Используя аннотацию @Named мы можем получить доступ к бину из JSF страница по средствам EL #{myBean.name}. Также мы могли бы написать @Named(name="myBestBean") и использовать #{myBestBean.name).

2. @SessionScoped - время жизни бина. SessionScoped означает что бин будет жить до окончания сессии. Жизненные циклы мы рассмотрим в последующих уроках.

3. Serializable - CDI бин должен имплементировать итерфейс Serializable.

Теперь мы можем получить доступ к бину из JSF страницы. Пример:

1. home.xhtml


<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
</h:head>
<h:body>
<h:form>
Enter your name: <br />
<h:inputText value="#{myBean.name}" /><br />
<h:commandButton action="welcome" value="Welcome!"></h:commandButton>
</h:form>
</h:body>
</ui:composition>

Note: любая вводимая пользователем информация должна заключаться в тэг <h:form>.

2. welcome.xhtml


<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html">


<h:outputText value="Welcome #{myBean.name} !" />
</ui:composition>

3. Последнее что нужно сделать это добавить файл beans.xml в дерикторию WEB-INF:

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xmlns:s="urn:java:ee"        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://docs.jboss.org/cdi/beans_1_0.xsd"></beans> 

Теперь поместите приложение на сервер и запустите его >>> localhost:8080/helloworld





















Вопросы пишите в комментариях. В будущем вы сможете найти всевозможные примеры jsf на этом блоге.

Best regards,
Netlink community member

Комментариев нет:

Отправить комментарий