Spring JSF集成

194 篇文章 3 订阅
19 篇文章 0 订阅

 

Spring JSF集成

 

欢迎来到Spring JSF集成教程。JSF是一个基于组件的框架,非常注重用户界面。而Spring框架核心原则是依赖注入。因此,将JSF与Spring框架集成是有意义的,其中JSF将用于用户界面,而Spring框架将用于后端服务器端业务逻辑。

Spring JSF

Springs可以与JSF集成DelegatingVariableResolver。现在让我们看看如何将Spring JSF框架与一个示例集成。

  1. 在pom.xml中添加以下spring依赖项以及标准JSF依赖项。Spring核心和Web依赖关系是基于MVC的Web应用程序的最低要求。
    
    <dependency>
    	<groupId>org.springframework</groupId>
    	<artifactId>spring-core</artifactId>
    	<version>4.1.4.RELEASE</version>
    </dependency>
    
    <dependency>
    	<groupId>org.springframework</groupId>
    	<artifactId>spring-web</artifactId>
    	<version>4.1.4.RELEASE</version>
    </dependency>
    
    <dependency>
    	<groupId>javax.inject</groupId>
    	<artifactId>javax.inject</artifactId>
    	<version>1</version>
    </dependency>
    
  2. 在文件中添加DelegatingVariableResolverfaces-config.xml如下所示。这el-resolver是委托变量解析​​器。
    
    <application>
        <el-resolver>
            org.springframework.web.jsf.el.SpringBeanFacesELResolver
        </el-resolver>
    </application>
    

    提到的el-resolver SpringBeanFacesELResolverJSF前端值连接到Spring后端服务层。

  3. 进行以下输入web.xml以添加spring框架提供的侦听器;
    
    <listener>
    	<listener-class>
    		org.springframework.web.context.ContextLoaderListener
    	</listener-class>
    </listener>
    <listener>
    	<listener-class>
    		org.springframework.web.context.request.RequestContextListener
    	</listener-class>
    </listener>
    

    监听器类将spring框架入口点绑定到servlet上下文。

我们的配置文件准备就绪,让我们看一下Spring JSF示例项目的java类。

  1. 创建托管bean类CarBean.java
    
    package com.journaldev.jsfspring;
    
    import java.util.List;
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.SessionScoped;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
    
    @Component
    @ManagedBean
    @SessionScoped
    public class CarBean {
    
    	@Autowired
    	CarDao carDao;
    
    	public void setCarDao(CarDao carDao) {
    		this.carDao = carDao;
    	}
    
    	public List<String> fetchCarDetails() {
    
    		return carDao.getCarDetails();
    	}
    
    }
    
  2. 创建接口CarDao.java
    
    package com.journaldev.jsfspring;
    
    import java.util.List;
    
    public interface CarDao {
    
    	public List<String> getCarDetails();
    
    }
    
  3. 创建实现类CarImpl.java
    
    package com.journaldev.jsfspring;
    
    import java.util.ArrayList;
    import java.util.List;
    import org.springframework.stereotype.Service;
    
    @Service
    public class CarImpl implements CarDao {
    
    	@Override
    	public List<String> getCarDetails() {
    
    		List<String> cars = new ArrayList<String>();
    
    		cars.add(0, "Santro");
    		cars.add(1, "Zen");
    		cars.add(2, "Alto");
    		cars.add(3, "Qualis");
    		cars.add(4, "Innova");
    
    		for (String c : cars) {
    			System.out.println(c);
    		}
    
    		return cars;
    
    	}
    
    }
    

    请注意,使用Spring注释进行服务和连线是通过@Autowired注释完成的。我们也可以使用Spring Bean配置文件来完成这些,我们将在后面的部分中看到。

让我们在JSF中创建视图页面。

 

  1. 创建JSF页面car.xhtml
    
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
    	xmlns:h="http://java.sun.com/jsf/html"
    	xmlns:ui="http://java.sun.com/jsf/facelets">
    <h:head>
    	<title>JSF Spring Integration</title>
    </h:head>
    <h:body>
    
    	<h2>Car Names List</h2>
    
    	<ul>
    
    		<ui:repeat var="cars" value="#{carBean.fetchCarDetails()}">
    			<li><h3>#{cars}</h3></li>
    		</ui:repeat>
    
    	</ul>
    </h:body>
    </html>
    
  2. 添加基本​​软件包详细信息applicationContext.xml以扫描服务类。
    
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    	xmlns:context="http://www.springframework.org/schema/context"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans
    	http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
    	http://www.springframework.org/schema/context
    	http://www.springframework.org/schema/context/spring-context-3.1.xsd">
    
    	<context:component-scan base-package="com.journaldev.jsfspring" />
    
    	<!-- If you prefer XML based Dependency Injection
    		remove annotation from class and uncomment below configuration -->	
    	<!-- 
    	<bean class="com.journaldev.jsfspring.CarImpl" id="carDAO" />
    	
    	<bean class="com.journaldev.jsfspring.CarBean" id="carBean">
    		<property name="carDao" ref="carDAO"></property>
    	</bean>
    	 -->
    	 
    </beans>
    

    注意上面注释的代码,如果您更喜欢基于XML的配置,那么您可以从java类中删除Spring注释并取消注释。你会得到相同的结果。

Spring JSF示例测试

我们的应用程序已准备就绪,只需将其部署在您最喜欢的servlet容器中并运行它。你应该低于输出响应。

Spring JSF

 

下图显示了Eclipse中的最终项目结构。
Spring JSF集成

您可以从下面的链接下载项目并使用它来了解更多信息。

下载Spring JSF Integration示例项目

 

转载来源:https://www.journaldev.com/7112/spring-jsf-integration

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值