JSF+Spring整合是什么原理?Struts集合Spring有三种方法,JSF呢?

解决方案 »

  1.   

    Spring 包括两方面 IOC和AOP,
    IOC用的比较多,达到用配置文件控制对象生成,
    目的是达到在不修改代码的情况下,就可以进行功能扩展。AOP 面向方面编程, 控制调用方法前后执行,对数据库访问时候的事务处理可以用。
      

  2.   

    去搜索一下, JSF提供了一些扩展接口VaiableResoler, 把ManageBean指到Spring的bean<faces-config> <!--
    <lifecycle>
    <phase-listener>
       xxx.xxx.xxx.PhaseListener
    </phase-listener>
    </lifecycle> 
     --> <application>
    <variable-resolver>
    org.springframework.web.jsf.DelegatingVariableResolver
    </variable-resolver>
    <action-listener>xxx.xx.x.ControlActionListener</action-listener>
    </application> <managed-bean>
            <managed-bean-name>reportMetadata</managed-bean-name>
            <managed-bean-class>xxxx..PresentReportMetadata</managed-bean-class>
            <managed-bean-scope>session</managed-bean-scope>
    <managed-property>
    <property-name>reportMetaDataBO</property-name>
    <value>#{reportMetadataBO}</value>
    </managed-property>
    <managed-property>
    <property-name>productDao</property-name>
    <value>#{productDao}</value>
    </managed-property>
    <managed-property>
    <property-name>rrdDao</property-name>
    <value>#{rrdDao}</value>
    </managed-property>
    <managed-property>
    <property-name>languageDao</property-name>
    <value>#{languageDao}</value>
    </managed-property>
    <managed-property>
    <property-name>converter</property-name>
    <value>#{j2JSConverter}</value>
    </managed-property>
    <managed-property>
    <property-name>servicesManager</property-name>
    <value>#{servicesManager}</value>
    </managed-property>
        </managed-bean>
      

  3.   

    JSF与Struts不一样.
    JSF里面自带有依赖注入功能.
    要与Spring整合,只需引用Spring配置文件里面的beanid名字就行了.
    不过在JSF配置文件里面引用spring实例的格式不是${} 而是#{},
    然后在JSF配置文件里面还要配置:
    <application>
    <message-bundle>messages-override</message-bundle>
    <variable-resolver>
    org.springframework.web.jsf.DelegatingVariableResolver
    </variable-resolver>
    </application>
    举个例子:Spring配置文件application.xml
    <?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="continent" class="cn.hana.pojos.Continent"></bean>
        <bean id="country" class="cn.hana.pojos.Country"></bean>
      <bean id="city" class="cn.hana.pojos.City"></bean>
      <bean id="company" class="cn.hana.pojos.Company"></bean>
      <bean id="line" class="cn.hana.pojos.Lines"></bean>
      <bean id="service" class="cn.hana.pojos.Service"></bean>
      <bean id="port" class="cn.hana.pojos.Port"></bean>
     
      <bean id="vayage" class="cn.hana.pojos.Voyage"></bean>
      <bean id="vayageschedule" class="cn.hana.pojos.Voyageschedule"></bean>
      <bean id="vessel" class="cn.hana.pojos.Vessel"></bean>
    </beans>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><managed-bean>
    <managed-bean-name>vschedulebean</managed-bean-name>
    <managed-bean-class>
    cn.hana.beans.VoyageScheduleBean
    </managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
    <managed-property>
    <property-name>selectedCompany</property-name>
    <value>#{company}</value>
    </managed-property> <managed-property>
    <property-name>selectedCompanyIn3</property-name>
    <value>#{company}</value>
    </managed-property>
    <managed-property>
    <property-name>selectedVessel</property-name>
    <value>#{vessel}</value>
    </managed-property>
    <managed-property>
    <property-name>selectedLines</property-name>
    <value>#{line}</value>
    </managed-property>
    <managed-property>
    <property-name>selectedService</property-name>
    <value>#{service}</value>
    </managed-property> <managed-property>
    <property-name>vscheduleServiceImpl</property-name>
    <value>#{vscheduleserviceimpl}</value>
    </managed-property>
    <managed-property>
    <property-name>voyage</property-name>
    <value>#{vayage}</value>
    </managed-property> <managed-property>
    <property-name>voyageschedule</property-name>
    <value>#{vayageschedule}</value>
    </managed-property>
    <managed-property>
    <property-name>selectedPort</property-name>
    <value>#{port}</value>
    </managed-property>
    <managed-property>
    <property-name>selectedCountry</property-name>
    <value>#{country}</value>
    </managed-property>
    </managed-bean>
    <application>
    <message-bundle>messages-override</message-bundle>
    <variable-resolver>
    org.springframework.web.jsf.DelegatingVariableResolver
    </variable-resolver>
    </application>
    </faces-config>