Spring+JSF集成入门案例

来源:互联网 发布:2016淘宝客不计入销量 编辑:程序博客网 时间:2024/05/18 15:30

JSF本身对于Bean的管理有依赖注入的功能,不过Spring的IOC容器能提供更多的功能,另一方面Spring还有AOP框架,在事务处理上也可提供协助

JSF和Spring结合,主要目的就是让Spring的Bean名称可以被JSF视<managed-bean-name>标签上的名称来使用,也就是说可以当JSF定义文件中根据名称要求Bean实例时,若JSF 在自己的Context中找不到名称,可以尝试到Spring的Context中去寻找

UserManager.java  模拟一个业务类

 


public class UserManager {
   
public String getChangedName(String name){
       
return "hello "+name;
   }

}

 

User.java

 


public class User {
   
private String name;
   
private UserManager userManager;
public String getName() {
    
return name;
}

public void setName(String name) {
    
this.name = userManager.getChangedName(name);
}

public UserManager getUserManager() {
    
return userManager;
}

public void setUserManager(UserManager userManager) {
    
this.userManager = userManager;
}

}

 

JSF配置文件:

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE faces-config PUBLIC 
"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN" 
"http://java.sun.com/dtd/web-facesconfig_1_0.dtd"
>

<faces-config>
  
<application>
    
<variable-resolver>
      org.springframework.web.jsf.DelegatingVariableResolver
    
</variable-resolver>
  
</application>
  
<navigation-rule>
    
<from-view-id>/index.jsp</from-view-id>
    
<navigation-case>
      
<from-outcome>login</from-outcome>
      
<to-view-id>/welcome.jsp</to-view-id>
    
</navigation-case>
  
</navigation-rule>
  
  
<managed-bean>
    
<managed-bean-name>user</managed-bean-name>
    
<managed-bean-class>User</managed-bean-class>
    
<managed-bean-scope>session</managed-bean-scope>
    
<managed-property>
      
<property-name>userManager</property-name>
      
<value>#{userManager}</value>
    
</managed-property>
  
</managed-bean>
</faces-config>

 

Spring配置文件

 

<?xml version="1.0" encoding="UTF-8"?>
<beans
    
xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation
="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"
>
<bean id="userManager" class="UserManager"/>
</beans>

实际上在JSF的定义文件中并没有定义userManager的bean实例,当JSF找不到userManager时候,会使用DelegatingVariableResolver对象在Spring的Context中寻找同名的bean实例

web.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  
<context-param>
    
<param-name>contextConfigLocation</param-name>
    
<param-value>/WEB-INF/mvc-config.xml</param-value>
  
</context-param>
  
<!--  
  <context-param>
    <param-name>javax.faces.CONFIG_FILES</param-name>
    <param-value>/WEB-INF/faces-config.xml</param-value>
  </context-param>
  
-->
  
<listener>
    
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  
</listener>
  
  
<servlet>
    
<servlet-name>Faces Servlet</servlet-name>
    
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    
<load-on-startup>1</load-on-startup>
  
</servlet>

  
<servlet-mapping>
    
<servlet-name>Faces Servlet</servlet-name>
    
<url-pattern>*.faces</url-pattern>
  
</servlet-mapping>

</web-app>

index.jsp

 

<%@ page language="java" pageEncoding="GB18030"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<html>
  
<head>
   
  
</head>
  
  
<body>
    
<f:view>
      
<h:form>
        name:
<h:inputText value="#{user.name}"></h:inputText>
        
<h:commandButton value="csubmit" action="login"></h:commandButton>
      
</h:form>
    
</f:view>
  
</body>
</html>

 

welcom.jsp

 

<%@ page language="java"  pageEncoding="GB18030"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<html>
  
<head>
  
</head>
  
<body>
      
<f:view>
        
<h:outputText value="#{user.name}"></h:outputText>
      
</f:view>
  
</body>
</html>

 

运行index.faces  JSF会自动跳转到index.jsp

原创粉丝点击