JSF2.0与Spring3的整合
来源:互联网 发布:联通4g是什么网络制式 编辑:程序博客网 时间:2024/04/28 12:54
关于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的一切就行了。
- JSF2.0与Spring3的整合
- JSF2.0与Spring3的整合
- JSF2.0与Spring3集成
- jBPM4.3与Spring3.0的整合
- Spring与JSF2的整合配置的整理
- spring3与hibernate4的整合
- Spring3.0与Quartz的整合实现定时任务调度
- Spring3.0与Quartz的整合实现定时任务调度
- Spring3.0与Quartz的整合实现定时任务调度
- 第五章 Spring3.0 、Hibernate3.3与Struts2的整合
- Spring3.0与Quartz的整合实现定时任务调度
- Spring3.0与Quartz的整合实现定时任务调度
- Spring3.0与Quartz的整合实现定时任务调度
- spring3与mybatis3的整合一例
- struts2.3与spring3.0简单整合
- 整合Mybatis 与 Spring3
- struts2与spring3整合
- dwr与spring3整合
- hdoj 1561 The more, The Better
- 指针数组和数组指针
- 计量单位数据表
- hdu 2091 空心三角形
- 南宁肛瘘手术哪里更好
- JSF2.0与Spring3的整合
- UIGestureRecognizer(手势识别器)
- DIV中class和id的区别
- Writing Great Git Commit Messages
- JDBC注册驱动程序的三种方式
- 南宁到哪里看大便出血
- 南宁大便出血挂什么科
- C#小游戏之扫雷
- 小米笔试题:给一个多叉树,寻找多叉树上任意两点的最近共同父节点