您的位置:首页 > 编程语言 > Java开发

Spring+JSF集成入门案例

2007-10-19 15:43 393 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: