JSF2.0与Spring3的整合

关于JSF与EJB的整合资料比较少,没找到。

 

所以以普及度很高的spring为例。

 

步骤是非常简单的,主要有两条思路一是让所有的beanJSF的@ManagedBean和spring的@Component各自分管,经过实验他们之间的注入依赖在同一个bean里不能混用。比如如果class是@ManagedBean如果field上@Resource就会出错。只能用@ManagedProperty(value="#{xxxServiceImpl}")这样注入。而且当在class上同时@ManagedBean@Component是@ManagedBean更加优先。

 

第一步:

web.xml开发环境下的配置

 

 <!-- spring启动监视器 -->

  <listener>

    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

  </listener>

 

  <context-param>

    <param-name>contextConfigLocation</param-name>

    <param-value>classpath:beans.xml</param-value>

  </context-param>

 

  <!-- jsf额外需要的spring监视器 -->

  <listener>

   <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>

  </listener>

 

   <!-- JSF2.0的配置-->

    <servlet>

    <servlet-name>Faces Servlet</servlet-name>

    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>

  </servlet>

  <servlet-mapping>

    <servlet-name>Faces Servlet</servlet-name>

    <url-pattern>*.jsf</url-pattern>

  </servlet-mapping>

<!-- JSF2.0的模式配置,开发模式下会在调试时报更加详细的错误-->

  <context-param>

    <param-name>javax.faces.PROJECT_STAGE</param-name>

    <param-value>Development</param-value>

  </context-param>

 

第二步:

 

faces-config.xml中加上

 

 

        <application>

         <variable-resolver>

         org.springframework.web.jsf.DelegatingVariableResolver

         </variable-resolver>

        </application>

 

 

第三步:

在BackBean中以注解的形式添加依赖,这一步是关键步骤。

经过我的实验我得到了我认为的最佳配置BackBean的方式。

service和entity照旧由spring管理,只不过如果你不想额外增加数据传输层(DTO)的话,那么需要把实体也暴露为jsf的受管bean。

如:

实体的配置

@ManagedBean    

@NoneScoped

 

@Entity

public class User {

@Id

@GeneratedValue(strategy=GenerationType.AUTO)

private long id;

......................略

 

backbean的配置

 

@ManagedBean

public class Hello {

@ManagedProperty(value="#{user}")

private User user;

@ManagedProperty("#{userServiceImpl}")     //可见spring的bean已经暴露给了jsf了,可以由el表达式访问到的受管bean了。这是的在页面上通过el表达式直接访问sevice业务层执行一些业务操作成为了可能,虽然我不赞成这么做。

private UserService userServiceImpl;

public String run(){

System.out.println(user.getName());

userServiceImpl.save(user);

return "succ";

}

 

.....................略

 

第四步:

像原来一样配置好spring的一切就行了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值