JSF Spring совместное ипользование.
В свое время я не нашел в интернете простого примера как связать JSF и Spring. Давайте напишем вместе простое hello world - приложение, оно будет состоять из 2 - объектов, 1-й helloWorldMessage - создается spring'om и вставляется в jsf-объект helloWorld. Для связки 2-х технологий нужно только правильно настроить файлы конфигураций JSF и Spring. Нам понадобится - Apace Tomcat, набор библиотек jsf1.2, набор библиотек spring-framework-2.5.5:
commons-codec.jar commons-logging.jar jsf-api.jar jsf-impl.jar jstl.jar jtds-1.2.4.jar spring-security-core-2.0.4.jar spring-webmvc.jar spring.jar standard.jar
Первое нам надо, добавить org.springframework.web.context.ContextLoaderListener в
web.xml файл настройки, для того чтобы включить механизм Dependency Injection - spring'a.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<!-- настраиваем spring для работы -->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<!-- обработчик jsf -->
<servlet>
<servlet-name>faces</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>faces</servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
<!-- welcome-file -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
По умолчанию будем использовать файл настройки spring - applicationContext.xml для конфигурирования наших bean's:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
"http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<!-- создаем bean c именем helloWorldMessage и устанавливаем его свойство message равным Hello World! Vit -->
<bean id="helloWorldClass" class="com.vit.HelloWolrd" >
<property name="message" value="Hello World! Vit" />
</bean>
</beans>
Ниже привожу код объекта создаваемого spring'om:
package com.vit;
public class HelloWorld {
// наше свойство устанавливаемое spring
private String message;
public HelloWorld() {
}
public String getMessage() {
return message;
}
// метод вызываемый spring при установке свойства message
public void setMessage(String message) {
this.message = message;
}
}
Настроим jsf - нам нужно определить наш jsf bean делается это все в файле faces-config.xml:
<faces-config xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd" version="1.2">
<!-- нужно вставить обработчик который передает jsf-контексту, bean'ы созданные spring'om-->
<application>
<variable-resolver>
org.springframework.web.jsf.DelegatingVariableResolver
</variable-resolver>
</application>
<managed-bean>
<managed-bean-name>helloWorld</managed-bean-name>
<managed-bean-class>
com.jsf.HelloWorldJSF
</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>hello</property-name>
<!-- вставляем наш созданный sprin'om объект helloWorldMessage в jsf-объект класса HelloWorldJSF -->
<value>#{helloWorldClass}</value>
</managed-property>
</managed-bean>
</faces-config>
Ниже привожу код класса создаваемого jsf:
package com.jsf;
import com.vit.HelloWolrd;
public class HelloWorldJSF {
//свойство куда вставляется helloWorldClass-объект
//который любезно создан sprin'om
HelloWolrd hello;
public HelloWolrd getHello() {
return hello;
}
public void setHello(HelloWolrd hello) {
this.hello = hello;
}
}
На страничке index.jsp мы переадресуем наш запрос(request) нашей jsf - страничке:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<META HTTP-EQUIV="Refresh" CONTENT="0;URL=success.faces">
</head>
<body>
<p>Loading ...</p>
</body>
</html>
страничка success.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello World</title>
</head>
<body>
<f:view>
<h:outputLabel>The message:</h:outputLabel>
<h:outputText value="#{helloWorld.hello.message}" />
</f:view>
</br>
Сдесь мы перемещаемся по свойствам объектов(helloWorld.hello.message) и выводим сообщение The message:Hello World! Vit
</body>
</html>
Вот и все!
Комментариев нет:
Отправить комментарий